PWM mit AVR auslesen

Gast #5680432
Lesenswert?

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
Gast #5680741
Lesenswert?

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.
#5680747
Lesenswert?

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.
#5680755
Lesenswert?

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.
Gast #5681206
Lesenswert?

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

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