
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
Hallo, bei meiner Timerabfrage habe ich ein seltsames Verhalten festgestellt! Da ich bei der OM-Makro keine Pausen gebrauchen kann, habe ich mir eine Timerabfrage programmiert! Hier mal ein par kurze Ausschnitte vom Programm: '........... #Hauptprogramm '................. FC_Ampelumschaltung '.................... goto Hauptprogramm '.......... ' --------------------------------------------------------------------------- ' Ampelumchaltung: A13 auf Rot und A24 auf Grün ' --------------------------------------------------------------------------- FUNC FC_Ampelumschaltung '.................... ' Ampel13 und Ampel24 gelber Blinktakt if Ampel_W13 and Ampel_W24 then Ampel_W13OK=off Ampel_W24OK=off if not Ampel_W13GE then ' gelb EIN A13_ROT=off 'Bitmuster der Digitalports setzen A13_GELB=on A13_GRUEN=off A24_ROT=off A24_GELB=on A24_GRUEN=off PortB_Digital 'Digitalports EIN/AUS if TimerZV>0 then FC_Timer if TimerZV==0 then Ampel_W13GE=on end if return else TimerZV=250 return end if else A13_ROT=off 'Bitmuster der Digitalports setzen A13_GELB=off A13_GRUEN=off A24_ROT=off A24_GELB=off A24_GRUEN=off PortB_Digital 'Digitalports EIN/AUS if TimerZV>0 then FC_Timer if TimerZV==0 then Ampel_W13GE=off end if return else TimerZV=250 return end if end if end if return end FUNC ' --------------------------------------------------------------------------- ' Timerauswertung ' --------------------------------------------------------------------------- FUNC FC_Timer if Timer<>TimerV and TimerZV<>0 then TimerZ=TimerZ+1 TimerV=Timer if TimerZ>TimerZV then TimerZ=0 TimerZV=0 end if else TimerZ=0 TimerZV=0 end if return end FUNC Laut Doku zählt der Timer ca. alle 20ms um 1 weiter. Ich frage den Timer mit einen Vergleicher (TimerV) auf Änderung des Wertes des Timers ab und Zähle dann den Zähler (TimerZ) um eins rauf, wird dann der Zähler grösser als mein Vergleicher (TimerZV) dann ist die Zeit abgelaufen! Nun tritt aber folgendes Phänomen auf: Wenn ich den TimerZV mit 25 vorbelege sollte doch eigentlich ein Blinktakt von ca. 500ms AN/AUS rauskommen, denn 20ms * 25 = 500ms! Bei mir hingegen kommt da ein Takt von ca. alle 100ms AN/AUS raus !??? Wenn ich, wie im Beispielcode oben, 250 eingebe habe ich meinen Takt von 500ms! Zählt der Timer der Makro, laut Berechnung und Messung, alle 4ms um 1 weiter??? Gruss Olaf |
| Antwort schreiben |