Anschauliche Erklärung

Unter einem Interrupt versteht man eine Unterbrechung des Ablaufs eines Hauptprogramms eines Prozessors durch ein Ereignis. Betrachten wir dazu zwei Beispiele aus dem Alltag:

Stellen Sie sich vor, Sie hören gerade einen Podcast auf Ihrem Smartphone und es kommt ein Anruf rein. Sie nehmen den Anruf an. Der Anruf unterbricht den Podcast für einige Zeit, und der Podcast hält an. Dann telefonieren Sie. Nachdem Sie den Anruf beendet haben läuft der Podcast automatisch an der Stelle weiter, an der er unterbrochen worden ist. Der Podcast ist in dieser Analogie das Hauptprogramm, das gerade auf dem Prozessor abläuft. Die Unterbrechung ist der Anruf.

Betrachten wir ein anderes Beispiel: Sie lernen gerade für Elektrotechnik und kochen parallel Eier. Die Eier sind nach 6 Minuten so, wie Sie sie gerne essen. Wenn die Eier fertig sind, müssen Sie das Lernen kurz unterbrechen, um die Eier aus dem Wasser zu holen. In dieser Analogie ist das Lernen das Hauptprogramm, das gerade auf dem Prozessor läuft. Das Ereignis, dass die Eier fertig sind, ist die Unterbrechung.

Sie haben zwei Möglichkeiten, wie Sie auf externe Ereignisse reagieren können:

1. Sie können immer wieder die Haupttätigkeit unterbrechen und prüfen, ob das Ereignis eingetreten ist. Das Smartphone müsste dann den Podcast z. B. jede Sekunde unterbrechen und prüfen, ob gerade jemand anruft. Oder Sie müssten alle 10 Sekunden ihr Lernen unterbrechen und auf die Uhr schauen, ob die Eier schon gut sind. Diese Vorgehensweise nennen wir in der Informatik „pollen“. Pollen beschreibt das aktive Nachschauen, ob ein Ereignis eingetreten ist.

2. Oder Sie können einem Anruf das Recht einräumen, den Podcast jederzeit bei Bedarf zu unterbrechen. Das Ereignis wird selbst aktiv und unterbricht den Hauptprozess. Sie können einen Wecker auf 6 Minuten stellen. Wenn der Wecker klingelt, unterbrechen Sie das Lernen und holen die Eier raus. Das wären Interrupt-Lösungen für die beiden Szenarien.

Vergleichen wir die beiden Ansätze miteinander: Es ist schwierig, das Polling-Intervall richtig auszulegen. Wird zu oft geprüft, ob das Ereignis eingetreten ist, wird das Hauptprogramm unnötig oft unterbrochen. Wird dies zu selten geprüft, verpasst man das Ereignis vielleicht oder man reagiert zu spät. Der Anrufer kann schon aufgelegt haben, wenn wir nur alle 10 Sekunden nachschauen, ob jemand versucht hat Sie zu erreichen. Der Zeitpunkt der Bearbeitung des externen Ereignisses hängt vom Zeitintervall zwischen zwei Mal Nachschauen ab. Ein Interrupt unterbricht das Hauptprogramm nur einmal genau zur richtigen Zeit. Dafür kann die Unterbrechung jederzeit passieren, also auch während der spannendsten Szene im Podcast. Der Hauptprozess kann sich auf die Unterbrechung nicht vorbereiten.

Interrupts sind für viele Anwendungen dem Pollen überlegen. Deshalb ist es wichtig, dass Sie Ereignisverarbeitung mit Interrupts beherrschen.

Das Hauptprogramm muss nach dem Interrupt fehlerfrei genau da weiterlaufen, wo es unterbrochen worden ist. Bis auf eine zeitliche Verzögerung muss es genauso sein, als hätte es nie eine Unterbrechung gegeben. Es wäre nervig, wenn der Podcast wieder von vorne loslaufen würde oder er an einer anderen Stelle weiterlaufen würde. Noch schlimmer wäre es, wenn Sie nach der Unterbrechung mit dem Lernen wieder von vorne anfangen müssten.

In den folgenden Kapiteln erfahren Sie, wie Interrupts in einer MCU umgesetzt werden.

Weiter