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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren