Forum: Mikrocontroller und Digitale Elektronik Interrupt verhungern lassen


von Christian (Gast)


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?

von Ichbinsnur (Gast)


Lesenswert?

Kommt drauf an welcher Interrupt dann auftritt. Jeder hat ein eigenes
Bit für sich.

von thkais (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.