|
Programmierung des Mikrocontrollers mit C
7. Interrupts benutzen
Interrupt bedeutet Unterbrechung.
Unterbrochen wird der normale Programmablauf.
Wozu ist das nützlich?
Die folgenden zwei Beispiele sollen Dir das erläutern:
Anwendung 1
Ein Tastendruck von einer Taste, die an einem
Interrupteingang des Mikrocontrollers angeschlossen ist soll ein
laufendes Programm
sofort unterbrechen.
Dann wäre das ein externer Interrupt.
Beachte den Unterschied:
- eine Taste an einem normalen digitalen Eingang des
Mikrocontrollers wird immer erst dann abgefragt, wenn der
Programmablauf gerade an der Tastenabfrage "vorbeikommt"
- eine Taste an einem Interrupteingang des
Mikrocontrollers unterbricht sofort
den
Programmablauf.
Anwendung 2
Im Hauptprogramm macht der
Mikrocontroller etwas zeitunabhängiges - z. B. steuert er einen kleinen
Roboter, der fröhlich im Zimmmer herumfährt und Hindernissen ausweicht.
Exakt jede Minute soll er aber "Piep" sagen, und dabei ist es völlig
egal, womit er gerade beschäftigt ist. Seine "normale" Tätigkeit wird
unterbrochen und er sagt pünktlich "Piep".
Schau Dir folgenden Pseudocode an:
interrupt-funktion(exakt jede Minute){
sage "Piep";
}
main-funktion{
fahre ewig herum und weiche Hindernissen aus;
}
Stell Dir einfach zwei kleine Männchen im Gehirn dieses Roboters vor:
- Der Fahrer fährt mit dem Roboter, wie mit einem Auto
herum und paßt darauf auf, nirgends anzustoßen.
Er sitzt am Lenkrad, betätigt Gas, Kupplung und Bremse und hält
Ausschau nach Hindernissen.
- Exakt jede Minute hält
ihm sein Beifahrer die Augen zu, schiebt ihm vom Lenkrad weg und hupt!
Egal, was der Fahrer gerade tut, der Beifahrer unterbricht
ihn einfach dabei.
Für solcherart Interrupts kann man einen im Mikrocontroller vorhandenen
Timer benutzen. Das wäre ein Timerinterrupt.
Mit Interrupts beschäftigen sich auf der Mikrocontrollerspielwiese
folgende Projekte:
Hier
mit Attiny2313 und hier
und hier und hier mit
Atmega8.
|