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