So, ich gebe auf. Ich habe mehrere Modi, Prescaler und TOP Werte probiert:
Ergebnis: Frequenz bleibt konstant, egal welche Werte ich einsetze. PWM ist aber von 0 bis 100% Duty nutzbar.
Lediglich die Änderungen an COM1A1/COM1A0 und COM1B1/COM1B0 zeigen Wirkung: Tatsächlich wird das PWM Signal invertiert.
Jetzt kommt der Hammer:
Dies hier:
Code:
TCCR1A = (1<<COM1A1)|(0<<COM1A0)|(1<<COM1B1)|(0<<COM1B0)|(1<<WGM11)|(0<<WGM10);
TCCR1B = (0<<ICNC1)|(0<<ICES1)|(1<<WGM13)||(1<<WGM12)|(0<<CS12)|(0<<CS11)|(0<<CS10);
Was denkt ihr, was passieren müßte (Auflösung: Timer gestoppt)?
Bei mir: PWM 20 kHz.
Ich gebe auf.
P.S.: Kann man vor Auslieferung eines ATmega z.B. Bits in TCCRxA/B so festlegen, dass sie via Programm im Flash nicht mehr zu ändern sind?
Oder kann man so etwas in einem Bootloader machen?
Grund der Frage: Ich habe das ATmega644 Board nicht neu, sondern gebraucht übernommen.
Mich irritiert nämlich, dass alle Änderungen (bis auf COM1A1/COM1A0 und COM1B1/COM1B0) keinen erkennbaren Effekt auf die Timerfunktion haben.
Lesezeichen