www.mikrocontroller.net

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


Autor: Simon Küppers (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Simon Küppers (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

...

Autor: Werner Hoch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.