mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 3 PWMs mit ATmega8 - gedankenkontrolle


Autor: maxigs (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich sitze hier schon ein paar Stunden über dem Datenblatt des ATmega8,
über der GCC-Faq hier und der ein oder anderen "kleinen" Anleitung zu
PWMs, aber ganz durchsteigen tu ich noch immer ned.
Ok Stur abschreiben ginge, aber das macht keinen Spass lol

Das PWM Prinzip an sich ist kein Problem (ist hier auch super erklärt),
nur welche Register jetzt genau was machen verwirrt mich sehr.
Deshalb wäre ich echt dankabar, wenn sich hier jemand die Zeit nimmt
und mal überfliegt was ich mir so zusammegesponnen habe - und ob es
passt.

TCCR0:
–; –; –; –; –; CS02; CS01; CS00;
TCCR1A:
COM1A1; COM1A0; COM1B1; COM1B0; FOC1A; FOC1B; WGM11; WGM10
TCCR1B:
ICNC1; ICES1; WGM13; WGM12; CS12; CS11; CS10
TCCR2:
FOC2; WGM20; COM21; COM20; WGM21; CS22; CS21; CS20

Die drei sind die Register zum Einstellen der 3Timer.

Die CSxx sind für die Prescaler.
=> CS1x für Timer 1 (PWM 1 und 2)
=> CS2x für Timer 2 (PWM 3)

Die WGMxx geben den Modus für den jeweiligen Counter an.
=> WGM1x für Timer 1 (PWM 1 und 2)
=> WGM2x für Timer 2 (PWM 3)

Die COMxxx geben die Ausgabeart an
=> COM1Ax für Timer1 Ausgang1 (PWM 1)
=> COM1Bx für Timer1 Ausgang2 (PWM 2)
=> COM2x für Timer2 (PWM 3)


OCR1AH; OCR1AL; OCR1BH; OCR1BL; OCR2

Sind die Output Compare Register der Timer. Da gehört der Zielwert fürs
PWM rein
OCR1AL = PWM1
OCR1BL = PWM2
OCR2 = PWM 3
(ich will nur 8bit daher nur die low Register)

Stimmt das so in etwa? Oder bin ich komplett auf dem falschen Weg?

Autor: DJShadowman (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eigentlich schon.
Timer1 für A und B
Timer2 für "C"

Timer 2 kann nur 8bit.
Timer 1 kann 8,9,10......


Ich habe 2 Nächte lang ähnliches probiert.
Zwar in Bascom, aber auch da muss ich ja auch die Register setzten.
Kurz bevor ich verzweifelt bin habe ich dann allerdings 'n
Beispielcode im Netz gefunden.
Allerdings hift der Dir nicht, weils ne Bascom eigene Befehlszeile ist,
die mit einfachen "Worten" die PWM's initialisiert.
Muss nur sagen wieviel Bit,Clear up oder down etc, und ab geht er ;-)

Tut mir ja wirklich leid....hmhmhm

Autor: maxigs (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
macht nix, ich wollt eh keinen fertigen code - anschreiben ist leicht
nur wenn dann mal was anders werden soll hat man keinen peil was sache
ist, desahalb will ich lieber wissen, was jetz für was ist.

pwm ist ja eigentlich ganz easy, wenn man den sinn mal durch hat und
gerade daran scheitern die meißten beispiele, weil die zwar grob sagen
wie es geht, aber denn sinn der einzelen sachen doch etwas übergehen

und danke schon mal für die bestätigung :-)

Autor: Ralf K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,
hab mir auch mal mit Bascom und PWM ne Nacht um die Ohren gehauen :-(
Mit Bascom geht es nicht!!!
Zum. nicht wie es gehen soll.
Hab mir dann das Datenblatt genau angeschaut und einfach die
entsprechenden Bits gesetzt:

'Timer2 Einstellungen - als PWM auf Pinb.3 (ATMEGA8)
Tccr2 = &B01101010  'für Fast PWM Mode

Will man das Tastverhältnius ändern, so muß man das OCR Register mit
dem neuen Wert laden (hier OCR2).
Das PWM Signal liegt dann am jeweiligen OCR Pin des AVR (Datenblatt).
Also OCR0..OCR2, aber nur die grösseren AVR haben mehrere OCR
Ausgänge.

Diese Variante läuft in all meinen entwickelten Geräten.

Wer hat das schonmal in Bascom mit "Config Timer ... " geschafft?
;-)

lg Ralf :-)

Autor: DJShadowman (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
$regfile = "m8def.dat"
$crystal = 1000000


Ddrb.1 = 1                    'LED 1 Ausgang
Ddrb.2 = 1                    'LED 2 Ausgang
Ddrb.3 = 1                    'LED 3 Ausgang

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B
Pwm = Clear Down , Prescale = 1
Config Timer2 = Pwm , Pwm = On , Compare Pwm = Clear Up , Prescale = 1


Pwm1a = 255
Pwm1b = 255
Ocr2 = 255

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.