Forum: Mikrocontroller und Digitale Elektronik Frequenzzählen mit PIC16F877A


von Tom F. (amtf)


Lesenswert?

Hallo Zusammen

Dies ist mein erstes Projekt mit einem Mikrocontroller und Teil einer 
Arbeit in meiner Ausbildung.
Mit einem PIC16F877A möchte ich die Frequenz eines Signals von 1Hz bis 
10kHz messen. Die gemessene Frequenz sollte dann mit einem wählbaren 
Faktor von 0.01-999 geteilt oder vervielfacht und an einem Ausgang als 
Signal wiedergegeben werden können.
Hab schon einige Beiträge zur Frequenzmessung gelesen, die meisten 
beziehen sich aber auf höhere Frequenzen und ich wurde nicht recht 
schlau daraus.

Die Frequenzmessung wollte ich mit dem Capture Modus dessen Zeitbasis 
vom Timer1 stammt erledigen. Bei einer ersten steigenden Flanke am Pin 
RC0 soll der Timer1 auf 0 gesetzt werden und bei der nächsten steigenden 
Flanke der Wert des Timer1 per Interrupt ausgelesen und dann umgerechnet 
werden. Das Problem liegt nach meinen Berechnungen nun darin dass nur 
Frequenzen bis ca. 9Hz und nicht tiefer gemessen werden können, da der 
Timer1 sonst immer zu früh überläuft und der Zählwert verloren geht. Für 
meine Anwendung wäre es aber wichtig, Frequenzen schon ab 1Hz genau zu 
messen.
Danke für eure Hilfe

von HappyHacker (Gast)


Lesenswert?

Ich kenne die PICS nicht, aber ist es möglich das Signal auf einem 
zweiten Timer zu legen, welche für niedrige Frequenzen ausgelegt ist? 
Denn "Rest" müsste deine Software machen...

Alternativ kann man den Eingang dauerhaft in einer Busy-Loop abfragen 
und den Timer auswerten. Zugegeben nicht elegant...

von John B. (johnbauer)


Lesenswert?

Tom F. schrieb:
> Das Problem liegt nach meinen Berechnungen nun darin dass nur
> Frequenzen bis ca. 9Hz und nicht tiefer gemessen werden können, da der
> Timer1 sonst immer zu früh überläuft und der Zählwert verloren geht.

Hallo Tom,
Du könntest den Interrupt für Timer 1 Overflow aktivieren und die Anzahl 
der Überläufe zählen. Damit kannst Du dann den Zählerwert berechnen:
  Überläufe x 2^16 + Timer1

Gruß
John

von Tom F. (amtf)


Lesenswert?

Danke für die Tipps !

Das mit den Überläufen zählen leuchtet mir ein, werds dann mal 
ausprobieren.

Gruss

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.