Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Pulsmessung Kategorie: Verschiedenes (von P_St - 8.03.2012 14:00)
Ich nutze:
C-Control Pro Mega128
Liebes Forum

Hab da folgende Mega128 Anwendung. Es werden verschiedene Sensoren mit max. möglicher
Durchlaufzeit in einer Endlosschleife gemessen und ausgegeben. Klappt alles wunderbar. Komme in
Sume auf eine MeĂ?frequenz von ca. 150Hz, bin sehr zufrieden da ich ca. 20Hz anstreben wĂĽrde.
Jetzt hab ich da einen weiteren Sensor der mir Pulse von 8msec-4sec! liefert und deren Periodendauer
wĂĽrde ich gerne mit einem Timer möglichst genau bestimmen. Kann aber  nicht einfach im Extremfall
meine anderen Messungen mal bis zu 4sec anhalten.  Also muĂ? diese Messung im Hintergrund laufen.
Hab also mal Pulsgenerator als Simulation einer Referenz gebastelt und los gings:

1.) Lösungsansatz
Mit  Timer_T1PM(1,PS_1024) auf die positive Flanke triggern und mit  PM_Wert=Timer_T1GetPM() bei
jeder Schleife PM_Wert einlesen und wenn PM_Wert >0 Pulsdauer  verarbeiten. Klappt wunderbar, läuft
im Hintergrund und liefert die volle 16Bit Genauigkeit fĂĽr die Pulszeit.  Aber sobald ich einen Wert ge-
lesen habe mu� ich ja leider wieder mit Timer_T1PM(1,PS_1024) starten und da ist die nächste
Messung dann MĂĽll (Startverzögerung?)  . AuĂ?erdem  verliere ich glaub ich den nächsten Puls da die
Funktion ja wieder erst wieder auf eine steigende Flanke triggern muĂ?. Das kann ich mir aber bei
teilweise eh schon 4sec MeĂ?zeit nicht leisten da gleich 1-2 Pulse zu â??verlierenâ??.

Frage: Gibt es irgendeine Chance das man die Funktion  Timer_T1PM(1,PS_1024) irgendwie "manual
zurĂĽcksetzen" kann (wenn man mit PM_Wert>0  erfolgreich einen Wert ermittelt hat) um gleich wieder
auf die nächste Flanke warten zu können (und nicht Pulse zu verlieren bzw. falsche Ergenisse zu prod.)?  

2.) Lösungsansatz
Mit  Timer2 (10ms Timer im Hintergrund) die Zeit zwischen den Pulsen messen. Exterenen Interrupt  auf
steigende Flanke getriggert in Funktion schicken und  dort Timer_TickCount() starten. Bei der nächsten
positiven Flanke wird wieder in den interrupt gesprungen, die Ticks ausgelesen und der Tick counter neu
gestartet. Super elegant und klappt wieder alles super bei den langen Pulsen. Aber mit einem
â??10ms Pulsâ?? Pulsweiten von 8msec  zu messen geht natĂĽrlich nicht :-) und da hakts schon wieder.  

Frage: Kann man diesen Timer2 irgendwie dazu bringen mit 1ms Tackt zu laufen?

Oder seht ihr irgend eine andere Möglichkeit bzw. könnt ihr mir weiterhelfen?
Vielen, vielen Dank und schöne Grü�e
P_ST


    Antwort schreiben


Antworten:

Re: Pulsmessung (von Torsten - 9.03.2012 17:08)
    Re: Pulsmessung (von P_ST - 14.03.2012 1:03)
        Re: Pulsmessung (von Torsten - 14.03.2012 20:10)
            Re: Pulsmessung (von P_ST - 22.03.2012 22:15)
            Re: Pulsmessung (von PepeV - 16.03.2012 15:54)
                Re: Pulsmessung (von P_ST - 22.03.2012 22:23)
                    Re: Pulsmessung (von PepeV - 22.03.2012 22:52)
                    Re: Pulsmessung (von mat - 22.03.2012 22:31)
                       Re: Pulsmessung (von mat - 22.03.2012 23:24)