Interrupt
Ein Interrupt ist ein Mechanismus, der den normalen Programmablauf eines Mikrocontrollers unterbricht, um zeitnah auf ein Ereignis zu reagieren.
Bei einem Taster, Encoder oder zeitkritischen Sensorsignal wäre ständiges Abfragen im Hauptprogramm oft unnötig oder zu langsam. Ein entsprechend konfigurierter Interrupt kann den Prozessor bei einer Flanke oder einem internen Ereignis direkt zu einer kurzen Behandlungsroutine springen lassen. Danach wird der vorherige Programmablauf fortgesetzt.
Interruptquellen können externe Pins, Timer, Kommunikationsmodule oder andere interne Peripherie sein. Die zugehörige Interrupt Service Routine sollte in der Regel kurz bleiben, damit andere Aufgaben und weitere Interrupts nicht unnötig blockiert werden. Aufwendige Berechnungen oder langsame Ein-/Ausgaben werden besser im Hauptprogramm ausgeführt, nachdem die Routine nur ein Flag gesetzt hat. Bei mechanischen Tastern muss außerdem weiterhin Entprellung berücksichtigt werden, weil ein einzelner Tastendruck mehrere schnelle Flanken erzeugen kann. Nicht jeder Pin unterstützt auf jedem Board dieselben Interruptfunktionen. Ein Interrupt ist von Polling zu unterscheiden, bei dem das Programm einen Zustand wiederholt selbst abfragt. Beide Verfahren können je nach Anwendung sinnvoll sein. Bei der Fehlersuche hilft es, Interrupt-Routinen zunächst minimal zu halten und Ereignisse über Zähler oder Flags sichtbar zu machen, bevor zusätzliche Programmlogik hinzukommt.
