Upload
eckhardt-zierden
View
132
Download
0
Embed Size (px)
Citation preview
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
InterruptmodellHauptprogramm läuft und läuft...Durch T0 wird INT0 ausgelöst
Hauptprogramm wird unterbrochen
Sprung zur Marke „Schneller:“ undXxx ausführenRückkehr zum Hauptprogramm
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.
Attiny-InterruptsSignal anPortD.2,z. B. mit Taster T0
INT0-Interrupt (High-Level)
INT0 ermöglichen
INT0 konfigurieren
Interrupts global ermöglichen
INT0 eine Routine durch Marke zuordnenINT0-Routine durch Return abschließen
Low LevelFallingRisingChanging
Beispiel
1. Toggeln2. 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