mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR: 16 Bit Timer als Pulsweitenmesser


Autor: Markus (Gast)
Datum:

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

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falls du den AVR meinst?

Da bietet sich der Input-Capture-Mode des Timer1 an. Ist im Datenblatt
des jeweiligen AVRs beschrieben.

...

Autor: Markus (Gast)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

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

Autor: Markus (Gast)
Datum:

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

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso blöde Rechnerei wegen Überlauf? Es genügt eine einfache
16-Bit-Subtraktion. Fehler entstehen erst, wenn der Impulsabstand
länger ist als der Zählumfang des Timers (zeitmäßig).

...

Autor: Peter Dannegger (peda)
Datum:

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

Autor: Markus (Gast)
Datum:

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

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.