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?
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
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 :-)
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 :-)
$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
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.