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; |