Interrupt verhungern lassen

Gast #50863
Tach,
wenn während der Bearbeitung einer ISR ein weiterer Interrupt auftritt,
wird dieser ja nach dem RETI-Befehl abgearbeitet. Wie kann ich das
verhindern ? Ich hab mal was davon gelesen das ich ein Bit im GIFR auf
1 setze und dieses somit gelöscht wird !? grübel Wie soll das
funktionieren?
Gast #50865
Diese inverse Logik (Schreib eine "1" aufs Bit, um es zu löschen)
konnte ich anfangs auch nicht so richtig verstehen. Aber es macht einen
Sinn. Mit nur 2 Befehlen

in temp,GIFR
out GIFR,temp

löscht man beispielsweise die Interrupt-Flags der externen Interrupts.
Richtig interessant wirds aber, wenn in dem Register noch mehrere
andere Flags drin sind, die nicht beeinflußt werden sollen,
beispielsweise das TWCR. Hier müßte man erst das Register laden, mit
einer Bitmaske bearbeiten und dann wieder zurückschreiben. Man spart
sich also einen Befehl.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.