Forum: Mikrocontroller und Digitale Elektronik PWM mit ATmega128


von Rene (Gast)


Lesenswert?

Hallo, ich habe bereits die suche betätigt und auch vieles zu PWM
gefunden aber bis jetzt hat bei mir nichts davon funktioniert, ich muss
dazu sagen dass ich Anfänger in Sachen µC-Programmierung bin.

Ausgangspunkt: ich möchte mit meinem ATmega128 (im STK501) ein
PWM-Signal erzeugen, zum Programmieren benutze ich AVR-Studio.
Und suche ein Beispiel was funktioniert um damit rumzuspielen leider
funktionierten die breits gefunden Bsp. nicht... vielleicht hat jemand
von euch sowas da. Zum überprüfen ob es funktioniert benutze ich einen
Oszi.

Gruß Rene

von Michael W. (mictronics) Benutzerseite


Lesenswert?

>>Und suche ein Beispiel was funktioniert um damit rumzuspielen leider
>>funktionierten die breits gefunden Bsp. nicht

Definiere mal "funktioniert nicht" etwas genauer.

von Rene (Gast)


Lesenswert?

Ein Bsp was ich zB versuche ist
http://www.kreatives-chaos.com/index.php?seite=c_t1_pwm
muss ich da noch extra einen Ausgabe port bestimmen oder ist das
standard auf PB5?
Denn es wir nirgendwo etwas ausgegeben.

von johnny.m (Gast)


Lesenswert?

Jede Compare-Einheit hat einen ihr zugeordneten Pin, der hardwaremäßig
mit der Compare-Einheit verbunden werden kann. Dadurch besteht die
Möglichkeit, eine echte Hardware-PWM (also ohne dass im Programm
irgendwelche Pins umgeschaltet werden müssen) zu implementieren. Wenn
man aus irgendwelchen Gründen diesen speziellen Pin (OCnx) nicht nehmen
kann (weil z.B. mehrere Pins geschaltet werden sollen) oder will (warum
auch immer...), dann kann man eine Soft-PWM machen, die dann allerdings
erstens einen erheblich höheren Aufwand an Software erforderlich macht
und zweitens nicht so präzise ist, weil vom Auftreten des
Compare-Ereignisses bis zum Umschalten des Pins eine gewisse Zeit
vergeht.

von Rene (Gast)


Lesenswert?

soweit habe ich es begriffen, es geht mir um die Hardware-PWM.

Da ich den Timer1 benutze ist es bei mir der PINB6 OC1(B)...

Nur ist nichts auf meinem Oszi zu sehen also muss ich irgend eine
kleinigkeit vergessen oder falsch gemacht haben.

von johnny.m (Gast)


Lesenswert?

Der Pin muss als Ausgang konfiguriert sein (DDRB.6 = 1)

von Rene (Gast)


Lesenswert?

also fehlt die in dem oben genannten Beispiel?

Ich kenne nur den Assembler Befehl, was müsste ich in C schreiben um es
als Ausgang zu konfigurieren...
DDRB = (1<<DDRB);     so?

von Karl heinz B. (kbucheg)


Lesenswert?

Denk doch mal nach. Bei

   DDRB = (1<<DDRB);

Wo kommt hier zum Ausdruck, dass du ausgerechnet Pin
Nummer 6 als Ausgang setzen willst. Warum nicht 2 oder 5?

   DDRB = ( 1 << DDB6 );


Ich empfahler mal das AVR-GCC Tutorial auf dieser Seite
zu studieren.

von Rene (Gast)


Lesenswert?

ich habe es so geschrieben weil bei dieser schreibweise am PB1 ein
PMW-Signal zu sehen war... und wenn es auf DDB6 oder DDB5 setze kommt
auf den jeweiligen pins nichts an.

Warum PinB6 weil da die Ausgabe für den Timer1b laut Datenblatt ist...

von Rene (Gast)


Lesenswert?

Danke für die bis jetzt gebrachten Antworten!

Ich komme nicht weiter...

Dem oben genannten Bsp. habe ich

   DDRB = (1 << DDB5) | (1 << DDB6);

hinzugefügt aber es kommen keine PWM-Signale an diesen Pin´s an, was
muss ich noch beachten das die Signale ausgegeben werden?

Vielleicht kann jemand von euch das Bsp. mal testen um mir zu sagen ob
es bei ihm läuft.

von Toni K. (goahead)


Lesenswert?

Die Datei http://homepage.hispeed.ch/peterfleury/avrgcc-examples.zip
enthält kurze, gut kommentierte Programme, unter anderem ein einfaches
Beispiel für PWM in pwmdemo.c.

Vielleicht kommst Du damit weiter.

von Rene (Gast)


Lesenswert?

Danke für das Beispiel, ich musst nur den µC Anpassen und es lief aber
das Dimmen funktioniert nicht ... warum kann ich nicht sagen ... wenn
man OCR1AL direkt einen Wert zuweist kann man die PWM beeinflussen aber
bei der for Schleife passiert nichts...

Gruß René

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.