Na siehst Du - es geht doch
Neben dem Toggeln war der Knackpunkt vermutlich, dass die Subroutine "LED" immer wieder auf´s neue ausgeführt wurde, so lange die aktuelle Minute noch nicht rum war - das hast Du jetzt scheinbar dadurch gelöst, dass Du die Zeit sekundengenau abfragst (und die 10 Hallimpulse anscheinend länger als 1 Sekunde brauchen).
Grundsätzlich (und Zeit-unabhängiger!) kann man so ein Problem auch mit einem "Flag" lösen, wie es Tido schon angedeutet hat:
Ein Flag ist ein einzelnes Bit, mit dem man sich bestimmte Zustände sozusagen "merken" kann. In diesem Beispiel etwa so:
Immer wenn eine neue Minute beginnt, setzt Du das Flag in der entsprechenden ISR auf 1 (also hinter dem Befehl Minute = Minute + 1).
Die Abfrage machst Du dann so: If Stunde = XX AND Minute = YY AND Flag = 1 then...
Am Ende der LED-Subroutine setzt Du dann das Flag wieder auf 0 - damit ist sie dann gesperrt, bis der nächste Minutensprung stattgefunden hat.
Aber Hauptsache es funktioniert erstmal - der Spaß am Optimieren kommt schon noch ganz von alleine![]()
Lesezeichen