Viele Entwickler lernen früh, dass „Polling schlecht ist“ und man stattdessen Interrupts verwenden soll. Das stimmt – aber nur im klassischen Bare-Metal-Mikrocontroller ohne Betriebssystem. Auf dem ESP32 mit FreeRTOS gelten andere Regeln. Hier ist Polling in einer deterministischen Echtzeit-Task oft die professionellere und stabilere Lösung.
Eine Task mit fester Zykluszeit (z. B. alle 1 ms oder 5 ms über vTaskDelayUntil liefert eine garantiert planbare Ausführung – unabhängig davon, wie viele andere Tasks laufen oder wie lange einzelne Codeabschnitte benötigen. Auf dieser Grundlage lassen sich Sensorabfragen, Modbus-Kommunikation, Tastenabfragen oder einfache Steueralgorithmen deterministisch und reproduzierbar durchführen.
Interrupts hingegen reagieren zwar sofort, sind aber asynchron, nicht planbar und können sich gegenseitig verdrängen. Sie eignen sich für wirklich zeitkritische Ereignisse wie Encoder, Capture-Eingänge oder sehr schnelle Signale. Für normale Logik, Kommunikation oder Bedienungselemente sind Echtzeit-Tasks meist die bessere Wahl.
Kurz:
Interrupts = schnelle Reaktion, aber unvorhersagbar.
Echtzeit-Task = garantiertes Timing, perfekt für stabile Embedded- und Industrieanwendungen mit dem ESP32.