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?
Kommt drauf an welcher Interrupt dann auftritt. Jeder hat ein eigenes Bit für sich.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.