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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.