Interrupt verhungern lassen

Gast #50863
Lesenswert?

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
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren