ATMega168: Schreiben von OCR1A in Fast-PWM

Gast #1751973
Lesenswert?
• ▲
▼
Hallo und guten Morgen,

irgendwie stehe ich voll auf dem Schlauch. Es geht um einen ATMega168. 
Timer 1 möchte ich im Fast PWM Mode verwenden und OCR1A als Top (Wave 
Generation Mode 15). Schreibe ich nun den Wert 0x4704 ins OCR1A, so wird 
allerdings nur 0x0304 reingeschrieben. Bei 0xFFFF ist es 0x03FF. Die 
ersten 6-bit lassen sich nicht setzen. Im Disassembler sieht alles okay 
aus.
Ein Test im CTC Modus hat gezeigt, das die Bits sich beschreiben lassen. 
Es liegt also kein Defekt vor.
Im Handbuch finde ich keinen Hinweis, das im Fast-PWM-Modus mit OCR1A 
als Top
nur 10 bit verwendet werden können.
Habt ihr ne Idee oder habe ich was übersehen?

Danke schon mal
Gruß
Jörg

P.S.: Habe probiert zuerst OCR1B zu beschreiben und dann zu kopieren. 
OCR1B zeigt das gleich Problem wie OCR1A.

P.P.S.: Ich möchte gerne eine Spule über ne PWM mit variabler Frequenz 
und variablem Duty-Cycle ansteuern. Die variable Frequenz ist eigentlich 
nur zum Erzeugen unterschiedlicher "Töne" da.
1
TCCR1A  = (1<<COM1B1) | (1<<COM1B0) | (1<<WGM11) | (1<<WGM10);
2

3
//OCR1A = 0x4704; // Top Value
4
//OCR1B = OCR1A;
5

6
OCR1A = OCR1B = 0xFFFF;
7

8
TCCR1B  = (1<<WGM13) | (1<<WGM12);
9
TCCR1B   |=  0x01;
Gast #1751975
Lesenswert?
• ▲
▼
Der Original C-Code sieht so aus:
1
TCCR1A  = (1<<COM1B1) | (1<<COM1B0) | (1<<WGM11) | (1<<WGM10); //0xC3
2

3
OCR1A = 0x4704;
4
OCR1B = OCR1A;
5

6
TCCR1B  = (1<<WGM13) | (1<<WGM12); //0x0A
7
TCCR1B   |=  0x01;
Gast #1757238
Lesenswert?
• ▲
▼
Hallo zusammen,

Stefan Ernst hat recht. Nachdem ich die Reihenfolge geändert habe funzt 
es.

Die Reihenfolge ist "historisch" gewachsen, da ich zunächst eine 
10-bit-Phase Correct-PWM verwendet habe. Habe dann nur noch die Zeile 
hinzugefügt, die mir die Bits WGM13 und WGM12 setzt und wollte OCR1A und 
OCR1B entsprechend anpassen.

Danke nochmals

Gruß und schönen Tag
Jörg

Antwort schreiben

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.

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.