In dem Statusregister (SREG) ist an Postition 7 das Bit zu finden, das die Interrupts freischaltet (Setzen des Bits) oder sperrt (Löschen des Bits).

Durch einen Reset, die Annahme eines Interrupts oder die Anweisung cli(); wird das Bit gelöscht. Das Bit kann erst nach Beendigung der ISR wird durch den Befehl sei();  wieder gesetzt werden.

So sieht die Belegung des Statusregisters aus:


Abb.: Statusregister SREG; Quelle: BBS2 Wolfsburg


Register, die die einzelnen Interrupttypen (de)aktivieren sind unter „17.2 Register Description“ im Datenblatt zu finden.
Das bekannteste Beispiel ist hier wohl ein Timerinterrupt, der beim Overflow eines Timers erzeugt wird.

Alle Register, die in den nachfolgenden Abschnitten verwendet werden, beziehen sich auf den ATmega328/P.

Damit diese Register die Interrupts beeinflussen können, muss das Statusbit I gesetzt sein, anderenfalls wären alle Interrupts deaktiviert. Zudem kann der Interrupt nur aktiv sein, wenn das jeweilige InterruptEnable-Bit gesetzt ist. Er ist deaktiviert, wenn das InterruptEnable-Bit gelöscht ist. Eine andere Handhabung der Bits wäre dann im Datenblatt beschrieben.


Zuletzt geändert: Mittwoch, 18. September 2019, 19:03