AVR - Zeitabmessung

Gast #160470
Lesenswert?
• ▲
▼
Signale dieser länge vermißt man am besten mit dem
TimerCaptureInterrupt.

Dazu wird der Timer initialisiert und eingeschaltet. Den Vorteiler
(Prescaler) legt man am besten so, daß der die Maximale Impulsbreite
weniger als 0xffff Timertakte beansprucht:
prescaler > Controllertakt / 0xffff * Impulszeit
Damit muß man sich dann keine weiteren Gedanken um Timerüberläufe
machen.

Nach dem Einschalten des TimerCaptureInterrupts, den du auf die
steigende Flanke eingestellt hast, wird der Interrupt bei der ersten
steigenden Flanke aufgerufen.
In der Interrupt Service Routine speicherst du den Capturewert als
Startwert ab und stellst den Capture interrupt auf die fallende Flanke
um.
Beim nächsten Interrupt kannst du die Zeitdifferenz berechnen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren