Nutzung der Interrupts
Ziel
Sie verstehen das Konzept der Interrupts am MC und können externe Interrupts für eigene Zwecke nutzen.
Überblick
Der Arduino Uno unterstützt nur die Pins 2 und 3 für externe Interrupts.
In der Interrupt-Serviceroutine sind einige Funktionen nicht erlaubt (millis, delay).
Austauschvariablen mit Hauptprogramm als volatile deklarieren.
Arduino-Funktionen:
- attachInterrupt(interrupt/pin, ISR, mode)
- digitalPinToInterrupt(pin)
- detachInterrupt(interrupt/pin)
- interrupt()
- nointerrupt()
Verständnisfragen
- Was sind Interrupts bei MC?
- Welche Interruptquellen werden beim Arduino UNO unterstützt?
- Welche Interruptarten werden unterstützt?
- Was ist bei der Nutzung von Interruptserviceroutinen zu beachten?
- Wie erfolgt die Synchronisation mit dem Hauptprogramm?
- Wozu sind die Funktionen
attachInterruptunddigitalPinToInterrupt? - Wie können Interrupts gesperrt und freigegeben werden? Wozu könnte dies notwendig sein?
- Wie können einzelne Interruptquellen deaktiviert werden?
Aufgaben
- Programmieren Sie einen Interrupthandler für den Taster an Port 2, welcher die LED abwechselnd an- und ausschaltet. Im Hauptprogramm soll alle 1s ein inkrementierter Zahlenwert über sie serielle Schnittstelle ausgegeben werden und zusätzlich der Zustand der LED.
Ressourcen
Ergebnisse
- Interrupts
- Interruptquellen: Pin 0/1, Timer, Schnittstellen (UART, I2C), AD-Wandler
- Arten: LOW, CHANGE, RISING, FALLING, HIGH
- keine Nutzung von: millis(), delay(), etc.
- Deklaration der Variablen als
volatileund Sperrungen - Funktion mit Interruptvektor verbinden
interrupts(), noInterrupts(). Notwendig bei multi-byte updates über Interrupts- Sperrung einzelner Interruptquellen möglich,
detachInterrupt
- Interrupt-Demo
- https://www.mikrocontroller.net/articles/Verwendung_von_Interrupts_mit_Arduino