Hallo, es gibt im Forum schon einige (leider wenig hilfreiche) Beitraege zu dem Thema....da ich nun auch vor dem Problem stehe und es aus irgendwelchen Gruenden nicht funktioniert, hoffe ich dass mir jemand helfen kann :) Verwendet werden soll der Timer/Counter 2 im PWM Mode, wobei ich ein 32,768kHz Quartz angeschlossen habe...folgender Code fuehrt leider nicht zum Erfolg: ;============================================ ; PWM init in r18,TCCR2 ; in PWM-Mode schalten (up/down counter) sbr r18,PWM2 ; PWM ausschalten (prescale auf 0 setzen) cbr r18,CS22 cbr r18,CS21 cbr r18,CS20 out TCCR2,r18 ; externes Quartz verwenden in r18,ASSR sbr r18,AS2 out ASSR,r18 ; PWM-Mode setzen (non-inverted) in r18,TCCR2 sbr r18,COM21 cbr r18,COM20 ; prescale select (0=aus,1=1, 2=8, 3=32, 4=64, 5=128, 6=256, 7=1024) ; [hier mal auf 7=1024 gesetzt] sbr r18,CS20 sbr r18,CS21 sbr r18,CS22 out TCCR2,r18 ; eigentlich sollte die Frequenz in gewissem Rahmen jetzt ueber den Wert von OCR2 variiert werden koennen ldi r16,0x11 out OCR2, r16 ;============================================================ Was mache ich falsch ? Ich werde den Code morgen mal mit dem AVRStudio durchsimulieren...evtl. ergibt sich dabei noch was. Danke, Lars.
Hi Lars, probier's mal damit: sbr r18,1<<PWM2 ... und das bei allen sbr und cbr Befehlen. Die funktionieren nämlich anders als sbi und cbi, denn sie erwarten als 2. Operanden eine Bitmaske wie 0b00000111 (=Bit 0, 1 und 2 werden gesetzt bzw. gelöscht) und nicht die Nummer des zu ändernden Bits. "1<<5" bedeutet z.B. dass eine 1 (=0b00000001) um 5 Stellen nach links verschoben wird (=0b00100000), damit wird dann das 5. Bit gesetzt. Ein anderes Beispielprogramm: http://www.mikrocontroller.net/forum/read.php?f=1&i=113&t=80 und noch was: <b>Bitte Assemblercode <i>immer</i> als Anhang posten!</b> MfG Andreas
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.