AVR: 16 Bit Timer als Pulsweitenmesser

Gast #224557
Hi,
ich versuche grad aus dem Datenblatt schlau zu werden, schaffe es aber
nicht so ganz.
Aufgabe ist folgende: ich habe ein PWM Signal von dem ich die Pulslänge
messen möchte. Wie kann ich Timer1/3 beibringen das er bei einer
steigenden Flanke bei 0 anfangen soll zu zählen und bei einer fallenden
Flanke wieder aufhören und einen IRQ auslösen soll? Genauer gefragt:
gibt es einen Modus in dem er bei einer steigenden Flanke automatisch
den Counter auf 0 stellt und mit dem Zählen beginnt oder muß ich das in
der IRQ Routine erledigen?

Gruß
Markus
Gast
Wie gesagt gehts um den AVR (steht im Betreff)
Ich hab grad das Datenblatt vom Mega162 vor mir (ich brauch nen
Controller mit 2 16 Bit Countern). Ich kapier nur nicht ganz ob der
Counter automatisch bei 0 anfängt bzw wieviel der Timer automatisch
macht. Der Ablauf ist so:

Steigende Flanke an ICPx: Timer startet mit dem Wert 0
Fallende Flanke an ICPx: Timer schreibt den Wert in das Capture
Register
Interrupt: Ich hole den Wert und mach meinen Kram.

Bisher hab ich nur verstanden das durch eine Pegeländerung (high/low
oder low/hig, je nachdem wie es programmiert ist) der Capture
getriggert wird. Dabei wird der aktuelle Timerstand in das Capture
Register kopiert und ein Interrupt ausgelöst.

Aber wie wird der Timer gestartet? Wird der auf 0 gesetzt oder läuft
der weiter? Ich blicks irgendwie nicht ganz
Ganz einfach, Du machst Capture erst auf die eine Flanke und dann auf
die andere und ziehst die Werte dann voneinander ab.

Der Timer läuft ständig durch und läßt sich so noch für andere Sachen
benutzen (RTC, Tasten Entprellen, LED-Multiplex usw.).


Peter
Gast
ok, auf die idee bin ich nicht gekommen bei beiden Flanken nen Capture
zu machen. Ist halt blos ne blöde Rechnerei wenn man nen Überlauf hat.
THX
"Ist halt blos ne blöde Rechnerei wenn man nen Überlauf hat."

Beschäftige Dich bitte nochmal mit Binärzahlen.

Den Überlauf kannst Du einfach knicken.

Die Differenz ist nämlich immer richtig, solange die Pulsbreite <16Bit
ist.


Peter
Gast
mea culpa, mea maxima culpa
ich glaub ich mach für heute Feierabend. Ich blick heut ja bald gar nix
mehr. Is natürlich logisch, aber ich seh den Wald vor lauter Bäumen
nicht mehr

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.