Integrierter PWM Generator (AT90S8535/4434)

Gast #624
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.
Admin Persönliche Seite #625
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 25 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.