Forum: Mikrocontroller und Digitale Elektronik Wie am besten 0Hz messen?


von Kons (Gast)


Lesenswert?

Hallo Leute...
Ich messe mit dem ICP eine Frewuenz eines Motors. Wenn der Motor steht, 
möchte ich jedoch ein Signal erhalten, welches mir dies bestätigt...wie 
mache ich das am besten? Achso, ich verwende einen Atmega32 und 
programmiere in C.

MFG

Kons

von Benedikt K. (benedikt)


Lesenswert?

Bei einem Overflow des Timers berechen wie groß die Periodendauer bisher 
ist, und dann irgendwo einfach eine Grenze setzen (z.B. bei 1s). Ist die 
bisher gemessene zeit größer, wird sie auf den maximal darstellbaren 
Wert gesetzt (bei z.B. 32 bit also 0xFFFFFFFF), und es wird so getan als 
ob die Periode beendet wäre.

von Magnus Müller (Gast)


Lesenswert?

Stichwort: Timerüberlauf

Nimm eine Hilfsvariable (z.B. "still") und setze diese in der 
ICP-Routine auf einen bestimmten Wert (ich schlage den Wert "2" vor).

In der TOV-Routine prüfst du die Variable "still" auf den Wert "0". Wenn 
der Wert == 0 ist machst du nichts weiter. Wenn der Wert != 0 ist 
dekrementierst du die Variable.

Auf diese Weise ist der Wert der Variable "still" immer ungleich 0 (also 
"wahr") solange sich der Motor überhalb einer Mindestdrehzahl dreht. 
Anderenfalls ist der Wert == 0.

Gruß,
Magnetus

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.