mikrocontroller.net

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


Autor: Lars (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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&...

und noch was:
<b>Bitte Assemblercode <i>immer</i> als Anhang posten!</b>

MfG
Andreas

Autor: Lars (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
an kopf fass ;)

Thx fuer den Hinweis.

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.