Frequenz Messen (1-250Hz) an uC

OP #829877
Lesenswert?
• ▲
▼
Hallo,

da mein letztes Topic eigentlich Titelmäßig großartiger Mist war, hier 
nochmal ein neues, mit besserer Frage ;)


Also,
ich habe ein Rechtecksignal, dessen Frequenz ich messen möchte.
Nun muss ich eine vernünftige Methode finden, um die Länge der Takte zu 
bestimmen.

Dafür habe ich mir gedacht, verwende ich einen 16-Bit Timer, der mit der 
Option Gate auf INT0 läuft.
TR0 setze ich auf eins, sodass der Timer sofort anläuft, wenn INT0 High 
ist.
INT0 (Also den Pin) setze ich auf High.
Wenn dann die erste negative Flanke erscheint, wird der Timer 
angehalten.
Während er läuft, zähle ich natürlich die Überläufe (TF0==1) mit.
Dann weiß ich z.B. das (Überlauf*65535 + aktueller Zählerstand) * Zeit 
pro 1 inkrement *2 = meiner Zählzeit ist.
Das multiplizieren mit 2 am Ende, findet deshalb statt, da ich ja nur 
die länge von positiver Flanke, zu negativer Flanke messe. Der Bereich, 
wo das Signal low ist, ist proportional dazu und zählt natürlich auch 
noch zur taktlänge.

Dann würde ich für kurze Zeit (150ms) keine Messung vornehmen.
Währenddessen den TH0 und TL0 sowie Register für das mitzählen der 
überläufe löschen.

Die gezähle Zeit teile ich dann noch durch eins und schon habe ich die 
frequenz.

Gibt es da noch eine bessere Lösung für?
Mein Prozessor ist ein AT89S52 mit einem 11,058Mhz quarz.
Gast #830404
Lesenswert?
• ▲
▼
Also mit dft/fft hat das garnix zu tun. Deine Variante ist schon OK. Ich 
habe es mit dem Capture Eingang gemacht, der reagiert jeweils auf eine 
Flanke und speichert automatisch start und endwert ab. Dann nur noch die 
Überläufe mitzählen und ein bisschen rechnen.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.