Zum Inhalt springen
myLernwerk

Lernfeld 10 · Prüfung Teil 2

Interrupts und Timer in Mikrocontrollern

Interrupts und Timer im Mikrocontroller: Vektortabelle, Prioritäten, Latenz, Interruptlast, Input Capture und Datenaustausch mit dem Hauptprogramm.

14 Aufgaben dazu übenKostenlos, ohne Anmeldung, mit Lösungsweg

Darum geht es

Ein Interrupt unterbricht das Hauptprogramm, wenn die Hardware ein Ereignis meldet: eine Flanke an einem Pin, einen Timer-Vergleich, ein empfangenes Zeichen oder einen fertigen DMA-Block. Die Peripherie setzt ein Flag, die CPU sichert Rücksprungadresse und Status, holt die Adresse der Serviceroutine aus der Vektortabelle und springt dorthin. Damit das funktioniert, muss der Interrupt in der Peripherie, im Interrupt-Controller und global freigegeben sein, und die Routine muss ihr Flag löschen.

Mehrere Quellen bekommen Prioritäten. Bei verschachtelbaren Interrupts unterbricht eine höhere Priorität eine laufende Routine niedrigerer Priorität. Die Latenz bis zum ersten Befehl der Routine setzt sich aus der Eintrittszeit, gesperrten Abschnitten im Hauptprogramm und höher priorisierten Routinen zusammen. Wie stark Interrupts die CPU belasten, ergibt sich aus Dauer der Routine mal Häufigkeit. Bei sehr häufigen Ereignissen übernehmen Hardwarefunktionen die Arbeit: DMA für Datenblöcke, Encoder-Modus für Drehgeber, Input Capture für Zeitmessungen mit dem genauen Zählerstand.

Daten zwischen Routine und Hauptprogramm werden über Ringpuffer oder Flags ausgetauscht, gemeinsame Variablen als volatile deklariert und mehrbytige Werte atomar gelesen. In der Routine wird nie gewartet. In Bedienoberflächen übernimmt der Event Handler eine ähnliche Rolle: Er ist für ein Ereignis registriert und wird von der Ereignisschleife aufgerufen.

Das solltest du dir merken

  • Ohne alle drei Freigaben wird die Serviceroutine nie aufgerufen.
  • Flag in der Routine löschen, sonst wird sie sofort wieder angesprungen.
  • Interruptlast gleich Dauer der Routine geteilt durch den Abstand der Interrupts.
  • Input Capture misst unabhängig von der Latenz, Überlauf in der Differenz beachten.
  • Mehrbytige gemeinsame Werte atomar lesen, in der Routine nie warten.

Formeln

Interruptlast
Takte je Aufruf, Taktfrequenz, Abstand zweier Interrupts
Frequenz aus Input Capture mit einem Überlauf
, gespeicherte Zählerstände eines 16-Bit-Timers

Typische Fehler in der Prüfung

  • Das Interrupt-Flag in der Serviceroutine nicht gelöscht.
  • Pegel- und flankengesteuerte Interrupts verwechselt.
  • Beim Zeitstempel den Überlauf des Timers übersehen.
  • In der Serviceroutine gewartet oder langsam ausgegeben.

Tipps aus der Werkstatt

  • Läuft eine Serviceroutine ständig neu, ist fast immer das Flag nicht gelöscht oder der Interrupt pegelgesteuert. Interruptlast rechnest du als Takte durch Taktfrequenz, geteilt durch den Abstand der Interrupts. Beim Input Capture mit Überlauf: zweiter Wert plus 65536 minus erster Wert.

Sitzt das Thema? Teste dich mit echten Prüfungsfragen.

14 Aufgaben zu „Interrupts und Timer in Mikrocontrollern“, falsche Antworten kommen in der Runde noch einmal.

Jetzt üben

Grundlage: KMK-Rahmenlehrplan Elektroniker/-in für Informations- und Systemtechnik, Lernfeld 10 (Polling, Interrupt, Event Handler). Eigene Erklärung, keine Originalaufgaben der Prüfungsausschüsse.