Hallo Markus
Genau das ist die Absicht. Man könnte den Code natürlich auch löschen, aber manchmal sind es Testvarianten oder Hinweise auf die Änderung. Hier soll es zeigen, dass man die zwei Ports nicht ausschalten muss, weil sie ja später in Abhängigkeit von der StopWatch gesetzt werden. (btw: die Pins werden mit PORTC &= ~IO_PC7; auf low=0V gesetzt wenn sie Ausgang sind.)das würde die Funktion aber doch als Kommentar ausblenden?
StartStopWatch() sorgt über ein Flag (stopwatches.watches) dafür, dass die betreffende StopWatch() in der Interruptroutine des Timers mitgezählt wird. Einmaliges Setzen dieses Flags genügt, deshalb zentral in main().Stopwatch in Main-Schleife geht klar! (Warum eigentlich?...)
Du hast nicht richtig geschaut, es wird auf <100 und >200 geprüft. Wenn kleiner 100, dann Ausgang setzen, sonst Ausgang löschen und, wenn größer 200 auch StopWatch neu laden. "Größer 200" kann man sicher erkennen, dann wird die StopWatch() neu geladen und auf "kleiner 100" geprüft. Verpassen kannst du dabei eigentlich nichts, nur wenn der Abstand des regelmäsigen Aufrufs von meinefunktion() länger als 100ms dauert, werden die LEDs nie brennen. (Ganz korrekt wäre noch ein Stetzen der Ausgänge beim Löschen der StopWatch(), sonst fehlt in der Hell-Phase die Zeit bis zum nächsten Aufruf von meinefunktion())aber laufe ich da nicht in Gefahr, den Zeitpunkt zwischen Stopwatch >100 aber <200 zu verpassen?
Gruß
mic
Lesezeichen