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
@ 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
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
@ 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
Hi, soll eine Funktionsüberprüfung werden, daher das Einlesen des Signals. Ich tüftel man. Danke
>Hast du ein dokumentiertes Codebeispiel?? Atmel könnte sowas zwischen den ApplicationNotes "rumliegen" haben... >Wenn in die Interrupt Routine gesprungen wird, kann ich doch nicht die >Trigger für die Flanken umstellen, oder doch? Klar geht das.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.