Interrupts Wozu Interrupts? Interruptmodell Einige Attiny-Interrupts INT0-Interrupt mit BASCOM-Befehlen INT0-Interrupt im Registermodell USART-Interrupt V 1.2 - Copyright 2016/17 by G. Heinrichs
Interrupts können wichtig sein!
Programmieren und testen Ohne Interrupts Beispiel: Blinkzeit über Taster Ta0 einstellen Ohne Interrupts muss Ta0 durch entsprechende Befehle im Programm permanent überprüft werden (Polling). Gefahr: Ta0-Signal wird „übersehen“, weil Mikrocontroller gerade mit anderen Befehlen beschäftig ist. Unbequem: Evtl. viele Ta0-Überprüfungen im Programm erforderlich Programmieren und testen
Mit Interrupts Beispiel: Blinkzeit über Taster Ta0 einstellen Mit Interrupts löst die Attiny-Hardware einen Sprung zu einem bestimmten Programmteil aus, wenn Ta0 betätigt wird. Der „normale“ Programmablauf wird dazu unterbrochen. Keine Gefahr, dass Ta0-Signal „übersehen“ wird Bequem: Keine Befehle zur Ta0-Überprüfungen im normalen Programmablauf
Anschaulich... D.2 Ta0 Achtung! Achtung! Ein Signal bei D.2! Alles sofort unterbrechen! Blinkzeit erhöhen! Dann mit Altem weitermachen! D.2 Ta0
Interruptmodell Wenn der Attiny zur Interruptroutine (Interrupt Handler) 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 Ta0 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 Ta0
Ein Blick hinter die… Programmadresse Befehl 0 (Reset) Springe nach 19 19 (Programmanfang) 20 Ta0 betätigt -> Merke Adresse 21 Springe nach 1 21 200 (Int0-Routine) 203 (Return) Springe nach 21
INT0-Interrupt (BASCOM) INT0 ermöglichen INT0 konfigurieren Low Level Falling Rising Changing Interrupts global ermöglichen INT0 eine Routine durch Marke zuordnen INT0-Routine durch Return abschließen
Beispiel Blinkzeit Toggeln
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 (BASCOM)
Beispiel COM-Quittung