Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Zeitmessung Kategorie: C-Control I V1.1 (von Uwe - 6.03.2005 11:37)
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

Bisherige Antworten:

Re: Zeitmessung (von ManfredW - 6.03.2005 13:12)
    Re: Zeitmessung (von Uwe - 6.03.2005 13:52)
        Re: Zeitmessung (von Uwe - 6.03.2005 17:37)
            Re: Zeitmessung (von Kay - 7.03.2005 9:01)
            Re: Zeitmessung (von ManfredW - 6.03.2005 18:23)