Ich möchte die Zeit zwischen 2 Impulsen messen.... Die Frequenz beträgt maximal 160 hz.
Wie "genau" kann ich da eine Zeit messen ? (ATMEGA32 mit 16 MHz)...
Ich möchte die Zeit zwischen 2 Impulsen messen.... Die Frequenz beträgt maximal 160 hz.
Wie "genau" kann ich da eine Zeit messen ? (ATMEGA32 mit 16 MHz)...
Wenn Du Dir unmittelbar nach einem Impuls die Werte von Timer1 in eine Variable speicherst und die Differenz von zwei gespeicherten Variablen mit Deinem Systemtakt multiplizierst und durch dem im "Config Timer1" eingetragenen Teiler/Prescale (Siehe Bascomhife) teilst, ist die Genauigkeit Dein Systemtakt / Prescale.
z.B. 1 / (16.000.000 / 1024) = 0,000064 Sekunden
Na dann reicht das ja dicke! Vielen dank!
Gruss
Jan
Das ganze kann man vereinfachen wenn man den dafür vorgefertigten Befehl verwendet .
Pulsein
MfGCode:Dim w As Byte pulsein w , PIND , 1 , 0 'detect time from 0 to 1 print w end
Martin
Misst dieser Befehl jetzt den Zeitraum wo die Flanke auf 0 gefallen ist, bis zu dem Zeitraum bis diese wieder ansteigt?
Jo
MfG
Martin
Was gibt pulsein eigentlich wieder? Das ist doch nicht die Zeit in Sekunden... Wenn ich das richtig verstehe, ist ein Impuls, wenn an einen Port kurz 5 V anliegen, oder?
Gruß, Trabukh
"Der Mensch wächst am Widerstand" (Werner Kieser)
Ja das ist richtig.
Wenn du 160 Hz hättest, dann hättest du auch 160 Impulse...
Martin
Also, ich müsste die Länge zwischen zwei Impulsen messen und das ganze dann in Millisekunden oder halt noch kleiner, aber in XXX-sekunden bekommen. Weißt du, wie das geht? Ich hab mit der Umrechnung irgendwie Probleme... Ach und der Abstand zwischen 2 Impulsen kann bei bis zu 3 Sekunden liegen.
Gruß, Trabukh
"Der Mensch wächst am Widerstand" (Werner Kieser)
Du musst das Ergebnis des Befehls durch 10µs teilen, dann müsstest du die Impulszeit in µs haben.
Lesezeichen