Zwar führen viele Wege nach Rom, und Schönheit liegt ja bekanntlich im Auge des Betrachters (Aber selbst persönlich finde ich die Lösung nicht so gut.), aber eine grundsätzliche Regel sollte man konsequent befolgen:
In Interrupt-Routinen sollte so wenig wie möglich Code stehen, damit die Hauptschleife nicht so lange unterbrochen wird. Während eines Interrupts sind nämlich die anderen Interrupts erstmal blockiert, und daraus können unübersichtliche Verschachtelungen entstehen. Am besten setzt man in der ISR nur ein Flag-Bit, das in der Hauptschleife abgefragt wird. Ist es 1, wird der dazugehörige Code ausgeführt und es anschließend wieder gelöscht - fertig.
In Deinem speziellen Fall würde ich (...) den Timer z.B. alle 0,1 Sekunden überlaufen und in der ISR ein Flag setzen lassen.
In der Hauptschleife wird dann das Flag abgefragt. Wenn es 1 ist, inkrementierst Du 2 Zähl-Variablen. Wenn die eine 2 bzw. die andere 5 erreicht hat (und Deine "Merker" gesetzt sind), wird der Status der dazugehörigen LED einfach getoggelt und die Zählvariable auf 0 zurückgesetzt.
Wenn Du ein paar Zeilen Code brauchst, sag Bescheid. Aber selber schreiben ist viel schöner
![]()
Gruß & Co
Lesezeichen