Logo
Lisa Schneider
Wer in die Interrupt-Routine Serial.println() schreibt, wundert sich später über abgebrochene Ausgaben. Der Irrtum ist verblüffend weit verbreitet.

Viele Einsteiger nehmen an, die Unterbrechungsfunktion sei der richtige Ort für alles, was zum Ereignis gehört. Schließlich heißt sie Interrupt-Service-Routine, kurz ISR – dort gehört also der Service hin.

Tatsächlich ist ein Interrupt nur ein Hardware-Signal, das den Mikrocontroller sofort aus dem laufenden Programm herausholt. Er pausiert den Code an der aktuellen Stelle, springt in eine vorher festgelegte Funktion und kehrt danach exakt zurück. In dieser ISR stehen nur kurze Aktionen: ein Flag setzen oder einen Zähler erhöhen.

Der Irrtum entsteht, weil das Ereignis und die Bearbeitung im Alltag zusammengehören. Aber während die ISR läuft, sind oft weitere Interrupts gesperrt; eine lange ISR verzögert deshalb auch andere kurzzeitige Ereignisse.

Ein Taster an einem GPIO, also einem per Software einstellbaren digitalen Pin, löst per attachInterrupt() bei einer Flanke aus, also dem Wechsel von Low nach High. Die ISR erhöht nur einen Zähler. Prellen, das kurzzeitige unkontrollierte Öffnen und Schließen des mechanischen Kontakts, zählt dabei trotzdem mehrere Flanken pro Druck. Eine Sperrzeit in der Auswertung in der Hauptschleife behebt das, nicht in der ISR selbst.

Woran man es erkennt: Die ISR enthält nur volatile deklarierte Variablen, also solche, die der Compiler nicht wegoptimieren darf, weil ISR und loop() sie gemeinsam nutzen, und minimalste Befehle; auf dem ESP32 trägt sie zusätzlich das Attribut IRAM_ATTR. Alles Langsame wie Ausgaben und Netzwerkzugriffe liegt in loop(), gesteuert über Flags.

Interrupt heißt nicht „hier wird alles erledigt“, sondern „hier wird nur vermerkt, dass etwas passiert ist“. Merken: kurz unterbrechen, schnell zurückkehren.

📌 Interrupt · ISR · volatile

📚 IoT von Grund auf · Tag 4 von 30
#Mikrocontroller #esp32 #Arduino
2 Tage vor

Noch keine Antworten!

Es scheint, dass diese Veröffentlichung noch keine Kommentare enthält. Um auf diese Veröffentlichung von Lisa Schneider zu antworten, klicken Sie unten darunter auf