Forum: Mikrocontroller und Digitale Elektronik Pulsweite messen ("nicht schon wieder" ;))


von Simon Küppers (Gast)


Lesenswert?

Hallöchen erstmal.

Folgendes hatte ich vor:
Eine PWM mit maximal 4ms Pulsbreite mit dem ICP an einem ATMegaXX
einlesen.

Wenn ich nun einen Vorteiler von CLK/256 einstelle, habe ich eine
"Abtastfrequenz" von 62,5 khz bei 16Mhz CLK
Eine Pulsbreite von 0,016ms entspräche einem Timer-wert von 1 (wenn
dieser bei 0 anfängt zu zählen)
Eine Pulsbreite von 4,08ms entspräche einem Timer-wert von 255 (wenn
der wieder bei 0 anfängt zu zählen)

Der Timer1 (der das ICP kann) ist zwar ein 16bit Timer, aber ich will
im Endeffekt nur einen 8 Bit wert haben.

So. nun folgendes: Der Timer läuft ja sofort durch, nach dem einstellen
eines Prescalers. Wenn jetzt eine steigende Flanke auftritt, und der
Zählerstand bei 65532 steht und ich nach 10 "Schritten" wieder
auslese, müsste im Register nun 65532+10 = 14 stehen. Und diese
Differenz benötige ich schlussendlich für meine Pulsweitenmessung (2.
Flanke = falling edge).

Allerdings ist bei dieser Situation schon das Register übergelaufen,
sodass mir eine sinnvolle Subtraktion nich mehr möglich scheint !

Ist es vielleicht möglich, den Timer bei der ersten (=rising) Edge zu
resetten und zu starten und bei zweiter (=falling) edge einfach nur das
Ergebnis (von 0 an gemessen) auszulesen? Das würde doch so einiges
erleichtern.

Vielen Dank im Vorraus

von Simon Küppers (Gast)


Lesenswert?

Ach so ein Mist. Hab schon die Lösung (denke ich)

Ich lasse den Timer einfach bei der Rising Edge löschen und gucke bei
der Falling Edge ihren Zählerstand nach :-)

richtig?

von ...HanneS... (Gast)


Lesenswert?

Richtig...

Nur kannst du den Timer dann nicht mehr (gleichzeitig) für andere
Zwecke (PWM, Output-Compare...) nutzen.

Aber warum soll das mit der Differenz nicht klappen?
Dann bekommst du zwar einen Überlauf (Carry), aber das sollte doch
nicht stören, oder?

...

von Werner Hoch (Gast)


Lesenswert?

@ Simon
Du kannst doch auch mit übergelaufenenm Timer die Differenz bilden:

10 - 65532 = 14

der Überlauf in der Subtraktion kompensiert den Überlauf beim
Überlaufen  (super Wortspiel ;-))

Timer Löschen ist immer Sch...

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.