Hallo,
ich wende mich an euch, weil ich ein dickes Problem habe.
Ich versuche einen Phasenabschnittsdimmer zu programmieren und verwende einen externen Interrupt im Nulldurchgang. So weit funktioniert alles.
Wenn ich allerdings noch eine bestimmte if-Abfrage in meinen Code einfüge, scheint der Interrupt nicht mehr bearbeietet zu werden. Ich kann ihn durch erneute Parametrierung auch nicht mehr zum Leben erwecken und das Problem scheint sogar einen Reset zu überstehen. Ich verstehe das nicht... So etwas unerwartetes habe ich noch nie erlebt. Es ist nicht mein erstes Programm auf einem ESP und auch nicht der erste Interrupt, den ich programmiere. Andere Interrupts auf dem ESP funktionieren einwandfrei, auch externe.
Wenn ich im anhängenden Code die beiden auskommentierten Zeilen aktiviere, "stirbt" der Interrupt dauerhaft, sobald die Zeilen innerhalb des if-Zweigs nicht mehr bearbeitet werden. Das Problem ist reproduzierbar.
Es hat eine Weile gedauert, bis ich diese Ursache gefunden habe. Was ich bisher unternommen habe:
- Änderung der if-Abfrage
- erneutes Eintragen des Interrupts per attachInterrupt(), auch mit vorangehendem detachInterrupt()
- Kürzung des Codes der Interruptroutinen
Vielleicht hat eine(r) so etwas schon erlebt und kann helfen?