
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hallo, ich hab' da mal ein Problem :-) Ich benutze die M-Unit 2.0 (progrmmiere in Basic) und habe mir den Treiber für Zeitmessung geladen. Die Demo funktioniert. Nun möchte ich die Periodendauer von Impulsen an einen Port messen. Das funktioniert soweit auch recht gut. Leider habe ich (bei konstanter Periodendauer) immer wieder Messergebnisse die 20ms zu hoch sind. D.h. Mal messe ich richtig, mal falsch. Irgendwio ist ein Knoten, vielleicht kann den jemand lösen? Gruss, Uwe Hier ist das Listing: #LOOP '---------------------------------------------------------- #TRIGGER if port8 = OFF then goto trigger 'Auf ON warten #WARTEN if port8 = ON then goto warten 'Auf OFF warten '----------------------------------------------------------- SYS CLR_FTIMER ' 1us TIMER UND 20ms TIMER 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII '------------ HIER BEGINNT DIE ZEITMESSUNG -------------------------- 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII '------------------------------------------------------------- #EIN if port8 = OFF then goto ein 'OFF Messen #AUS if port8 = ON then goto aus 'ON Messen '------------------------------------------------------- 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII '------------------------------------------------------------------- '----- BERECHNUNG UND ANZEIGE --- '------------------------------------------------------------------- SYS NO_INT:SYS GET_FTIMER ' WERTE DER TIMER SICHERN print"#L101#"; '---------- n*20 ms VOM TIMER BERECHNEN ----------------------------- VALUE=TIMER*20 SYS YES_INT '------------- ms VOM FTIMER ADDIEREN ------------------------------ VALUE=VALUE+(FTIMER/1000) '----------- us RESTWERT BERECHNEN --------------------------------- MICROSEC= FTIMER mod 1000 print "ZEIT: ";VALUE;"."; if MICROSEC < 100 then print"0"; 'DAMIT AUS 32us NICHT X.32ms SONDERN X.032 werden. print MICROSEC;"ms "; pause 20 goto LOOP |
| Antwort schreiben |