Titelbild Mikrocontroller

9. Externe Interrupts des ATmega8

Die externen Interrupts können über die Pins INT0 und INT1 getriggert werden, die Triggerung erfolgt auch dann, wenn die Pins als Ausgang konfiguriert sind. Dadurch können diese Interrupts auch per Software ausgelöst werden. Grundsätzlich können die externen Interrupts durch eine fallende oder steigende Flanke oder durch einen Low-Pegel getriggert werden. Die entsprechende Einstellung erfolgt im MCU Control Register (MCUCR). Wenn ein externer Interrupt freigegeben und als Low-Pegel getriggert konfiguriert ist, dann wird der Interrupt so lange getriggert, wie der Low-Pegel am Pin anliegt. Das Erkennen von Interrupts mit fallender oder steigender Flanke setzt voraus, dass der I/O-Takt aktiv ist. Low-Pegel Interrupts an INT0 und INT1 werden hingegen auch asynchron erkannt. Das bedeutet, dass diese Interrupts verwendet werden können, um den Baustein aus allen Sleep-Modi außer dem Idle-Modus aufzuwecken. Der I/O Takt wird in allen Sleep-Modi angehalten, außer im Idle Modus.

Zu beachten ist, dass, wenn ein Pegel-Interrupt dazu verwendet wird, den Baustein aus dem Power-down Modus aufzuwecken, der Pegel für einige Zeit gehalten werden muss. Dies macht den Baustein unanfällig gegen Störungen. Der Pegel wird zwei mal durch den Takt des Watchdog Oszillators abgetastet. Die Periode des Watchdogtaktes beträgt normalerweise 1µs (bei 5,0 V und 25 grad), sie ist aber abhängig von der Betriebsspannung (siehe elektrische Eigenschaften). Der Controller wird aufwachen, wenn am Interrupteingang der erforderliche Pegel während dieses Abtastvorganges anliegt oder wenn er bis zum Ende der Start-up Zeit anliegt. Die Start-up Zeit wird durch die SUT Fuse wie zuvor unter „Taktsystem“ beschrieben, definiert. Wenn der Pegel zwei mal abgetastet wurde, aber wieder verschwindet, bevor die Start-up Zeit abgelaufen ist, dann wird der Controller trotzdem aufwachen, aber keinen Interrupt generieren. Der Pegel muss also so lange anliegen, dass der Controller komplett aufwachen kann, um einen Interrupt auszulösen.
Impressum