AVR: 16 Bit Timer als Pulsweitenmesser

Gast #224557
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
Gast #224559
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren