Forum: Mikrocontroller und Digitale Elektronik AVR ATmega 32 Soft-PWM erzeugen funktioniert nicht


von Florian (Gast)


Lesenswert?

Hallo,
ich versuche schon seit geraumer Zeit, auf meinem ATmega 32 ein PWM 
Signal zu erzeugen. Nachdem ich mehr als 4 Kanäle brauche, habe ich mich 
für die Soft-PWM Methode entschieden, anders geht's ja anscheinend nicht 
;). Ich habe schon verschiedene Ansätze probiert, leider immer ohne 
Erfolg. Um zu prüfen ob ich einen Denkfehler habe, habe ich den Code aus 
diesem Forum hier (Version 2): 
https://www.mikrocontroller.net/articles/Soft-PWM, ausprobiert. 
Funktioniert leider auch nicht.
Jetzt weiß ich eigentlich nicht mehr weiter. Kann es auch ein 
Hardwaredefekt sein? Ich kann grundsätzlich die Pins auf High setzen und 
auch ein PWM Signal einlesen und verarbeiten. Das Ergebnis des Versuches 
ein PWM Signal zu erzeugen habe ich mit einem Oszi überprüft. Da kam ein 
annähernd sinusförmiges Signal mit ca. 50 mV raus (also nur "Rauschen").

Ich hänge hier jetzt bei meinem Abschlussprojekt für meine Schule und 
hoffe einer von Euch hat gute Tipps für mich, wie ich den Fehler 
eingrenzen/beheben kann.
Vielen Dank im Voraus,
Florian

von Stefan F. (Gast)


Lesenswert?

Florian schrieb:
> Funktioniert leider auch nicht

Du musst das Problem analysieren und einkreisen.

Estmal solltest du prüfen, ob der Beispielcode überhaupt zu deinem AVR 
Modell passt. Die Timer-Register sind nämlich nicht alle gleich. Gleiche 
das mit dem Datenblatt deines Mikrocontroller ab.

Dann solltest du dir eine Möglichkeit schaffen, serielle Debug-Meldungen 
auszugeben. Dann kannst du anhand von Textausgaben herausfinden, welche 
Programmteile in welcher Reihenfolge durchlaufen werden.

Für weitere Fragen solltest du deinen Quelltext posten. Ich habe keine 
Lust, über einen Code zu diskutieren, der nur vielleicht irgendeiner 
Variante der Webseite entspricht.

> Da kam ein annähernd sinusförmiges
> Signal mit ca. 50 mV raus (also nur "Rauschen").

Hast du vielleicht vergessen, den I/O Pin als Ausgang zu konfigurieren? 
Zeige mal das Bild vom Oszilloskop und wie du es eingestellt hast. Ich 
hoffe du misst DC, nicht AC.

von Falk B. (falk)


Lesenswert?

Florian schrieb:
> diesem Forum hier (Version 2):
> https://www.mikrocontroller.net/articles/Soft-PWM, ausprobiert.
> Funktioniert leider auch nicht.

Was geht denn nicht? Was kommt denn aus den Ports?
Wie sieht DEIN Quelltext aus?

> Jetzt weiß ich eigentlich nicht mehr weiter. Kann es auch ein
> Hardwaredefekt sein? Ich kann grundsätzlich die Pins auf High setzen und
> auch ein PWM Signal einlesen und verarbeiten.

Warum einlesen? Die Soft-PWM erzeugt PWM-Signale, also AUSgabe.

> Das Ergebnis des Versuches
> ein PWM Signal zu erzeugen habe ich mit einem Oszi überprüft. Da kam ein
> annähernd sinusförmiges Signal mit ca. 50 mV raus (also nur "Rauschen").

Du misst irgendwie falsch.

> Ich hänge hier jetzt bei meinem Abschlussprojekt für meine Schule und
> hoffe einer von Euch hat gute Tipps für mich, wie ich den Fehler
> eingrenzen/beheben kann.

Mit einer systematischen Fehlersuche.

Lass erstmal auf allen Port, wo deine PWM rauskommen soll, das Pin 
einfach per CPU und _delay_ms() im 1s Takt blinken und miss das Signal. 
Wenn das geht, ist die Hardware in Ordnung. Dann geht es bei der 
Software weiter.

von c-hater (Gast)


Lesenswert?

Florian schrieb:

> Das Ergebnis des Versuches
> ein PWM Signal zu erzeugen habe ich mit einem Oszi überprüft. Da kam ein
> annähernd sinusförmiges Signal mit ca. 50 mV raus (also nur "Rauschen").

An welchem Pin hast du das versucht? Irgendwo an PortC? Dann JTAG-Fuse 
überprüfen. Oder PortA?? Dann überprüfen, ob die Versorgung auch an AVCC 
und AGND korrekt angeschlossen ist.

von Uwe D. (monkye)


Lesenswert?

Geht ja auch mit Hardware per I2C: PCA9685: 16-channel, 12-bit PWM --> 
einfach mal in den einschlägigen Handelsplattformen schauen, da gibt es 
fertige Module...

von Peter D. (peda)


Lesenswert?

Der pinkompatible ATmega324PA hat 6 PWM-Ausgänge.

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
Noch kein Account? Hier anmelden.