Pulsweite messen ("nicht schon wieder" ;))

Gast #163565
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
Gast
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?
Gast
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?

...
Gast
@ 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...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.