mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PWM mit ATmega128


Autor: Rene (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael Wolf (mictronics) Benutzerseite
Datum:

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

Definiere mal "funktioniert nicht" etwas genauer.

Autor: Rene (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rene (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Pin muss als Ausgang konfiguriert sein (DDRB.6 = 1)

Autor: Rene (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rene (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Rene (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Toni K. (goahead)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rene (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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é

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.