Moin Leute, Ich steh vor folgendem Problem, ich möchte mit einem AT90can128 ein Pwm-Siganl mit fester Frequenz(1kHz) auswerten. Kurz gesagt ich möchte die High oder Low-Zeit messen um dann den duty-cycle zu bestimmen. Je nach Duty-Cycle möchte ich dann verschiedene Aktionen ausführen. Hat da vlt einer einen kleinen Beispielcode oder ähnliches? Habe schon Ewigkeiten mit googlen verbracht aber nichts gescheites gefunden. (Programmiere übrigens in c mit Ateml Studio7 ) Danke im Voraus
Ich habe kein Beispiel. Normalerweise benutzt man dazu die Capture Funktion des Timers. Man captured jeden Flankenwechsel und in der ISR wird dann die Zeitspanne berechnet.
Guck dir mal die Application Note AVR135 von Atmel an: https://www.microchip.com/wwwAppNotes/AppNotes.aspx?appnote=en591541 Das tut's eigentlich ganz gut.
:
Bearbeitet durch User
Leider funktioniert das Beispielprogramm wohl nicht mit dem at90can. Bekomme jedes mal eine Fehlermeldung das icp.h nicht vorhanden ist. Ein Beispielprogramm wo vlt je nach duty cycle ein pin auf high gesetzt wird o.ä,würde mir echt weiterhelfen. Danke im voraus.
Peter schrieb: > Leider funktioniert das Beispielprogramm wohl nicht mit dem at90can. > Bekomme jedes mal eine Fehlermeldung das icp.h nicht vorhanden ist. Das klingt nicht so, als würde es am Controller liegen. Und gegebenenfalls musst du in der device.h noch einen Fall für den AT90CAN anlegen und die entsprechenden Registernamen anpassen. Eigentlich ist das Beispiel funktionierend und sollte leicht abstrahierbar sein. Und du solltest einen Timer nehmen, der noch frei ist.
Peter schrieb: > Moin Leute, > Ich steh vor folgendem Problem, > ich möchte mit einem AT90can128 ein Pwm-Siganl mit fester Frequenz(1kHz) > auswerten. Kurz gesagt ich möchte die High oder Low-Zeit messen um dann > den duty-cycle zu bestimmen. Man nehme einen RC-Tiefpass und einen ADC-Eingang. Wenn das PWM-Signal von außen nochmal durch ein Gatter puffert, welches an der gleichen Versorgungsspannung wie dein ADC hängt, ist das eine ratiometrische Messung und damit unabhängig von VCC. Außerdem funktioniert das auch bei sehr hohen PWM-Frequenzen. > Je nach Duty-Cycle möchte ich dann > verschiedene Aktionen ausführen. Hat da vlt einer einen kleinen > Beispielcode oder ähnliches? Habe schon Ewigkeiten mit googlen verbracht > aber nichts gescheites gefunden. Dann hast du sehr schlecht gesucht.
Peter schrieb: > Leider funktioniert das Beispielprogramm wohl nicht mit dem at90can. Natürlich nicht. Du müsstest Dir jede einzelne Fehlermeldung vornehmen und die #defines im device.h anpassen (Registernamen, Ports). Fehlermeldung ("... undeclared ...") anklicken, Rechte Maustaste, Goto Implementation, dann bist Du bei dem zugeh. #define. Im Datenblatt nachsehen, wie Register im aktuellen Controller heißt, oder anderen Port wählen, oder ... Sollte aber machbar sein. mfg Achim
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.