www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik M16c, Test des I Bits


Autor: Berd Brams (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich suche nach einer Möglichkeit den Wert des I (Global Interrupt
enable) Bits meines M16c auszulesen. Verwende den Tasking M16c
Compiler, er bietet diese Fkt. nicht, hab jedenfalls nix gefunden.
Deshalb dachte ich an Inline Assembler, aber finde nun nicht den
passenden asm command...
"JCnd" bietet leider nicht die Möglichkeit nach dem Wert des I Bits
zu springen.
Gibt es wirklich keinen branch Befehl, der dies ermöglicht?


Grund ist, daß bei mir 2 Fkt, die jeweils keinen Interrupt erlauben
dürfen, sich gegenseitig aufrufen.Beide Fkt stoppen alle anderen
Interrupts und machen diese zum Schluß global wieder an.
Wenn nun die eine gekapselte Fkt am Ende I wieder anmacht ist dies auch
für den aufrufenden Interrupt gültig :(

Danke schonmal!

Autor: Sascha Pypke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ja kenne ich nur zu gut, aber warum schreibst du kein weitere
Rahmensubprogramm wo dann halt die Funktion aufruft und vor und danach
das erledigt.
in Assembler dann halt speziell für das Controll-Register:

PUSH.W R0    ; Register immer retten (Compiler ?!?)
STC FLG,R0   ; lade Flag-Register in R0 (Store from Controlregister)
POP.W R0     ; viele Compiler nehmen R0 auch als Return Value somit
kannst du es in C verklauben
RTS


oder
PUSH.W R0
STC FLG,R0
BTST I,R0    ; I=7 test I also ab ins Carry oder negativ ins Zero
JC Ja_Interrupt
....
....
POP.W R0
RTS
Ich hoffe ich konnte dir helfen.

PS. der M16C bietet einen recht intresanten Befehlssatz mit einer sehr
starken Arithmetik.

Gruß Sascha

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.