Mit WGM10 und WGM13 gesetzt hast Du Mode 9, und bei dem steht der
TOP-Wert in OCR1A, was die Benutzung von OC1A als PWM-Ausgang
ausschließt! Wenn Du "WGM13 in TCCR1B setzt", dann bedeutet das nur,
dass in TCCR1A COM1B0 gesetzt wird, was für Dein Programm keinerlei
Auswirkung hat. Der andere Effekt ist, dass WGM13 in TCCR1B gar nicht
gesetzt wird, was zu Mode 1 (8-Bit Phase Correct PWM) führt...
Ich habe den Eindruck, dass Du das Funktionsprinzip der PWM nicht ganz
verstanden hast. Wenn Du an OC1A ein PWM-Signal ausgeben willst, dann
musst Du einen Modus benutzen, bei dem OCR1A nicht für den TOP-Wert
belegt wird. Wenn TOP (und damit die PWM-Frequenz) tatsächlich frei
einstellbar sein soll, dann musst Du in dem Fall einen Modus nehmen, in
dem TOP in ICR1 abgelegt wird.
Bei einer PWM musst Du immer zwei Dinge angeben:
- TOP bestimmt die Frequenz der PWM, ist entweder fest vorgegeben (bei
8-, 9- oder 10-Bit-PWM mit 0xFF, 0x1FF bzw. 0x3FF) oder kann je nach
Modus in OCR1A oder ICR1 geschrieben werden.
- Compare-Wert bestimmt das Tastverhältnis der PWM und wird in das dem
gewünschten Ausgang zugeordnete Compare-Register geschrieben und darf
(sinnvollerweise) nicht größer als TOP sein.
Wenn OCR1A schon anderweitig belegt ist, kann die Compare-Einheit nicht
mehr zur Ausgabe eines PWM-Signals benutzt werden.