Schrittweite von PWM Signal einlesen ATMega16

OP #663006
Lesenswert?
• ▲
▼
Hallo zusammen,
ich habe ein Problem mit dem einlesen der Schrittweite eines PWM 
Signals.
Die Frequenz kann ich einlesen (schwankt bei 17kHz schon sehr. ca. +/- 
100Hz).
Allerding erfasse ich ja nur die Frequenz einer Periode (High Flanke 
nach High Flanke). Nun möchte ich aber die Schrittweite des Signals 
bestimmen. Diese beträgt ca. 98%. Wie kann ich nun den Timer1 von High 
nach Low Flanke laufen lassen?

Vielen Dank für dir Hilfe
#663024
Lesenswert?
• ▲
▼
@ Sören Schnell (soeren)

>ich habe ein Problem mit dem einlesen der Schrittweite eines PWM
>Signals.
>Die Frequenz kann ich einlesen (schwankt bei 17kHz schon sehr. ca. +/-
>100Hz).

Du willst also die Pulsbreite eines PWM-Signals messen, das 17 kHz 
Periodendauer hat?
Bei einer Auflösung von 8 Bit (=256 Stufen) brauchst du einen Takt von 
4,3 MHz oder mehr.

>Allerding erfasse ich ja nur die Frequenz einer Periode (High Flanke
>nach High Flanke). Nun möchte ich aber die Schrittweite des Signals
>bestimmen. Diese beträgt ca. 98%.??

> Wie kann ich nun den Timer1 von High
>nach Low Flanke laufen lassen?

Du musst das mit der Input Capture Funktion machen. Dabei musst du sie 
erst auf die steigende Flanke einstellen. Wenn dann ein Interrupt 
ausgelöst wird musst du sie auf die fallende Flanke einstellen. Die 
Differenz der Messergebnisse ist deine Pulsbreite. Allerdings kannst du 
nur Pulse messen, die länger dauern als deine Interruptroutine, die 
vielleicht 100 Takte braucht. Bei 10 MHz wären das 10us, bezogen auf 
dein 17 kHz PWM Signal ca. 17%.

MFG
Falk
OP #663044
Lesenswert?
• ▲
▼
Hallo.
Also ich benutze diese Input Caputure Funktion des AT Mega 16 (PD6).
Mein Interner Resonator ist auf 8MHZ gesetzt.
Wie gesagt, das Signal hat 17kHz / Schrittweite 98% high.
Deine Rechnung verstehe ich nicht ganz. Wieso kann ich die 98% nicht 
auflösen?

Wenn in die Interrupt Routine gesprungen wird, kann ich doch nicht die 
Trigger für die Flanken umstellen, oder doch?

Hast du sowas schon einmal gemacht?

Hast du ein dokumentiertes Codebeispiel??

Danke für deine Hilfe - bin sehr am Schwitzen.

Viele Grüße
#663051
Lesenswert?
• ▲
▼
@ Sören Schnell (soeren)

>Also ich benutze diese Input Caputure Funktion des AT Mega 16 (PD6).
>Mein Interner Resonator ist auf 8MHZ gesetzt.

Der ist relativ ungenau.

>Wie gesagt, das Signal hat 17kHz / Schrittweite 98% high.

Wenn du das genau weist, warum willst du dann messen?

>Deine Rechnung verstehe ich nicht ganz. Wieso kann ich die 98% nicht
>auflösen?

Hat keiner gesagt.

>Wenn in die Interrupt Routine gesprungen wird, kann ich doch nicht die
>Trigger für die Flanken umstellen, oder doch?

Doch.

>Hast du sowas schon einmal gemacht?

Ja.

>Hast du ein dokumentiertes Codebeispiel??

Nein.

MFG
Falk

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