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 

 Re: Zeitmessung Kategorie: C-Control I V1.1 (von ManfredW, Homepage - 6.03.2005 13:12)
 Als Antwort auf Zeitmessung von Uwe - 6.03.2005 11:37
Hallo,
ich verstehe Dein Programm nicht und habe meine Anmerkung dort eingefügt.
MfG ManfredW
> 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
Hier hast Du eine Schleife !!!

> #WARTEN
> if port8 = ON then goto warten 'Auf OFF warten
Und hier sofort wieder eine Schleife.
Dies ist eine Wettlaufschaltung.
Nur, wenn Port 8 sich zeitlich günstig während der Bearbeitung dieser wenigen Befehle ändert,
bekommst Du ein Ergebnis. Also Zufall.
Warum nimmst Du nicht Flanken-Auswertung? Dann hast Du eindeutige Verhältnisse.
Port 8 nur einmal abfragen.
 
> '-----------------------------------------------------------
> 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
>
>


Meine Homepage: http://manfred.wilzeck.de

 Antwort schreiben

Bisherige Antworten:

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)