
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
nochmal kurz etwas zu den Schleifen: '--------------------------------------------------------------------------------------------------------------------------- #TRIGGER if port8 = OFF then goto trigger ' solange wie port 8 OFF ist bleibt das Programm in der Schleife. Falls port 8 gerade ON (z.B. in der Mitte vom Signal) geht's gleich weiter. Ansonsten gehts erst weiter wenn port 8 von OFF auf ON gewechselt hat. '----------------------------------------------------------------------------------------------------------------------------- #WARTEN if port8 = ON then goto warten ' solange wie port 8 ON ist, bleibt das Programm in der Schleife. Wenn port 8 auf OFF wechselt, gehts weiter '------------------------------------------------------------------------------------------------------------------------------ 'das ist jetzt der Anfang eines OFF - ON Zyklus ' Also, Zeitmessung einschalten SYS CLR_FTIMER 'Timer auf Null setzen ' OFF Zeit #OFF if port8 = OFF then goto OFF ' Solange wie port 8 OFF ist bleibe ich in der Schleife (der Timer läuft) # Wenn port8 auf ON gewechselt hat, gehts weiter 'ON Zeit #ON if port8 = ON then goto ON 'Solange wie port 8 ON ist bleibe ich in der Schleife (der Timer läuft) ' An dieser Stelle ist jetzt eine Periode beendet, also Timer stoppen und auslesen SYS NO_INT:SYS GET_FTIMER ' WERTE DER TIMER SICHERN VALUE=TIMER*20 ' Dann die Timer wieder vor sich hin laufen lassen SYS YES_INT Dummerweise ist bei gleicher Periodendauer der Wert VALUE mal richtig oder mal falsch, nämlich genau um eins zu hoch. Das sind dann 20ms zuviel. Wenn ich einfach einen Zähler bei ON und OFF mitlaufen lasse: '------------------------------------------------------------------ ' OFF Zeit #OFF i = i + 1 if port8 = OFF then goto OFF ' Solange wie port 8 OFF ist bleibe ich in der Schleife (der Timer läuft) # Wenn port8 auf ON gewechselt hat, gehts weiter 'ON Zeit #ON z = z + 1 if port8 = ON then goto ON 'Solange wie port 8 ON ist bleibe ich in der Schleife (der Timer läuft) '------------------------------------------------------------------- ... dann sind die Werte für i und z immer gleich (bei gleicher Periodendauer). Na gut, sie schwanken um 1, aber das ist wirklich pillepalle im Vergleich zu 20ms. Was mache ich hier falsch? Gruss, Uwe |
| Antwort schreiben |