Interrupts Wozu Interrupts? Interruptmodell Einige Attiny-Interrupts INT0-Interrupt im Registermodell INT0-Interrupt mit High-Level-Befehlen USART-Interrupt V 1.0 - Copyright 2009 by G. Heinrichs
Wozu Interrupts (I) Beispiel: Blinkzeit über Taster T0 einstellen Ohne Interrupts muss T0 durch entsprechende Befehle im Programm permanent überprüft werden. Gefahr: T0-Signal wird „übersehen“, weil Mikrocontroller gerade mit anderen Befehlen beschäftig ist. Unbequem: Evtl. viele T0-Überprüfungen im Programm erforderlich
Wozu Interrupts (II) Beispiel: Blinkzeit über Taster T0 einstellen Mit Interrupts löst die Attiny-Hardware einen Sprung zu einem bestimmten Programmteil aus, wenn T0 betätigt wird. Der „normale“ Programmablauf wird dazu unterbrochen. Keine Gefahr, dass T0-Signal „übersehen“ wird Bequem: Keine Befehle zur T0-Überprüfungen im normalen Programmablauf
Interruptmodell Wenn der Attiny zur Interrupt-Routine springt, wird er für alle weiteren Interrupts gesperrt. Diese Sperrung wird erst aufgehoben, wenn der Attiny zum Hauptprogramm zurückkehrt. Hauptprogramm läuft und läuft... Durch T0 wird INT0 ausgelöst Hauptprogramm wird unterbrochen Sprung zur Marke „Schneller:“ und Xxx ausführen Rückkehr zum Hauptprogramm
Attiny-Interrupts Signal an PortD.2, z. B. mit Taster T0
INT0-Interrupt (High-Level) INT0 ermöglichen INT0 konfigurieren Interrupts global ermöglichen INT0 eine Routine durch Marke zuordnen Low Level Falling Rising Changing INT0-Routine durch Return abschließen
Beispiel Toggeln Blinkzeit
INT0-Interrupt (Registermodell) INT0 konfigurieren (Falling) INT0 ermöglichen Interrupts ermöglichen
Beispiel Noch einmal: Toggeln
USART-Interrupt Receive Complete Interrupt Enable Wenn RXC auf 1 geht (Byte empfangen), dann wird ein RX-Interrupt ausgelöst. RXC wird nicht automatisch gelöscht!
USART-Interrupt (High-Level)
Beispiel COM-Quittung