Forum: Mikrocontroller und Digitale Elektronik Integrierter PWM Generator (AT90S8535/4434)


von Lars (Gast)


Lesenswert?

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.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

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

von Lars (Gast)


Lesenswert?

an kopf fass ;)

Thx fuer den Hinweis.

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.