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 

 Frequenz- Impuls- Messung an Port 3/Pin5 Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Joe - 31.08.2010 22:00)
Joe nutzt:  CC1-M-Unit V1.1, CC1-Station V2.0, Micro, Open-Micro
Hallo OMICRO Experten,

folgendes Problem habe ich festgestellt, als ich an die OMICRO Pin5/Port 3 einen Signalgenerator angelegt habe, um die Genauigkeit der Frequenzmessung bzw. Impulszaehlung zu testen.  Speichere ich den gemessenen Zaehlerwert von Freq in einer Variablen ab und sende diesen V-Wert mittels Print über RS232 zur Auswertung am PC, dann ist dieser Wert exakt identisch mit der Frequenz des angelegten Signals,  lege ich z.B. ein 1kHz  Rechtecksignal an Port3 an, so liefert das Programm  s.u. exakt den Zaehlerwert = 80; dies ergibt bei einer Torzeit von 4x20msec einen Frequenzwert von 80/0,08 = 1kHz
Im gleichen Printbefehl s.u. habe ich nochmals die Ausgabe der Fre  veranlasst, wie auch im OMICRO Manual beschrieben, desgleichen in einer weiteren Zeile dahinter. In beiden Fällen schwankt der Ausgabewert zwischen 70 bis 80, jedesmal ein anderer Wert.  Es scheint als würde bei einem im Print Befehl enthaltenen Fre Ausgabe die Torzeit so verkürzt, sodaß ein kleinerer Ausgabewert daraus resultiert.
Mache ich im Programm etwas nicht erlaubtes, das zu diesem Fehler führt?  
Hat jemand von Euch dies auch beobachtet?
Was ist Eure Erklärung für diesen Ausgabefehler?
In meiner Anwendung hatte ich geplant, den Wert erst Zwischen zu speichern und dann erst auszugeben, deshalb ist für mich diese Erscheinung kein Problem. Trotzdem würde ich gerne verstehen, was die Ursache  für diesen Fehler ist.

Freundliche Grüße und Dank im voraus

Joe
###### Listing ######
' IMPZAEH3.BAS
' Status: vom Di. 31.08.2010; Programm laeuft einwandfrei; Zaehlung sehr genau bei Ausgabe aus einer Variablen; bei direkter Ausgabe mittels Print ca. 10% zu kleiner Wert
' Testprogramm  um Impulse an Pin5/Port3 zu zaehlen
' An Port 3 werden externe Impulse vom Signalgeber ueber Transistor-Kollektorausgang angelegt,
' so dass im Einschaltmoment Port 3 kurzzeitig auf high=5V liegt

' --- Betriebssystem konfigurieren ------------------------------------------
INCLUDE "OM.DEF"           'Include-Datei mit Definitionen

' ---------------------------------------------------------------------------
' --- Definition der Byte Variablen fuer das Hauptprogramm und die verwendeten Softwaremodule
' ----------------------------------------------
DEFINE Imp_zahl    byte[01]  ' Anzahl der Impulse an Pin5/Port3 als Mass fuer die Geschwindigkeit
DEFINE Sek_Wert    byte[02]  ' Zwischenspeicher fuer aktuelle Zeit
DEFINE Re_Wert     byte[03]
DEFINE Dauer       byte[04]
' ---- Definition der Bitvariablen
DEFINE Flag1     bit[249]  'von Byte 32; benoetigt zur Verzweigung bei Sekunde Abfragung

' ----Definition Ports-----------------------------------------------------------------------
DEFINE BEEPER    port[6]  'Signalausgang

'***************** Hauptprogramm zu Zaehlen der Freq Impulse an Port 3/Pin5
#Imp_zaehlen
     Sek_Wert=second  
     If Flag1=on Then
          If Sek_Wert Mod 3=0 Then
             GOTO Weiter
          ELSE
             Flag1=off
          ENDIF
          GOTO Weiter  
     ELSE
         IF Sek_Wert MOD 3<>0 Then
            GOTO Weiter
         ELSE
            Flag1=ON
            Re_Wert=34      ' ca. 750 Hz
            Dauer= 6
         ENDIF
     ENDIF
     FREQ=4
     Imp_zahl=FREQ
     PRINT "Sekunde="; Sek_Wert;"   Imp_zahl= ";Imp_zahl, "Freq= ";FREQ
     Print "Freq= ";FREQ
     ' waehrend Imp_zahl richtig u. genau 80 ausgegeben wird, tritt bei der
     ' Wert-Ausgabe Freq=70 bis 80. Bei Print Freq wird also Fehlerhaft gezaehlt,
     ' als ob die Torzeit bis zu 10% zu kurz waere
     Print
     BEEP Re_wert,Dauer,BEEPER
     
#Weiter
Goto Imp_zaehlen  

End

 Antwort schreiben

Bisherige Antworten: