Hallo Leute!
Ich bin neu hier und hab gleich mal ne Frage:
Ich möchte am ATtiny461 den PWM Output(Counter1) im "Phase and Frequency
Correct"-Modus benutzen um eine Frequenz zwischen 45kHz bis 100kHz zu
erzeugen.
Im Datenblatt ist die Formel f_PWM=f_clk/N wobei N der obere Zählerwert
ist, zu finden.
Daher hab ich die Frequenz per OSCCAL auf 11,5MHz gestellt, sodass für
eine gute Abstufung gilt: 11,5MHz/2^8=45kHz.
Ich konfiguriere die PWM wie folgt:
1 | OCR1A=period/2;//Tastverhaeltnis 0.5
|
2 | OCR1C=period;
|
3 | TCCR1B=0x01;//Prescaler=1
|
4 | TCCR1D=0x01;//Phase and Frequency correct Mode
|
5 | TCCR1A=0xC2;//Compare Match A, PWM auf OCR1A basierend
|
CKDIV8 ist 0 und CKOUT ist 1.
Nun setze ich period=100 und müsste eigentlich 11,5MHz/100=115kHz PWM
Frequenz erhalten. Stattdessen erhalte ich aber exakt die Hälfte,
nämlich 57,5kHz. Messe ich an CKOUT den Takt, so ist der korrekt bei
11,5MHz.
Was mache ich da falsch? Ich habe keinen weiteren Prescaler gefunden,
der irgendwie mit Faktor 2 belegt ist.
Für die genauere Abstufung wäre es mir schon wichtig, dass ich mit
möglichst hohen Werten im OSR1C Register arbeite.
Danke für Eure Hilfe
Andreas
P.S. Diese Register sind ja alle auch 10-Bit beschreibbar. Das würde mir
aber nur was bringen, wenn ich den schnelleren PLL Takt nehme, da ich
dann wieder mit 10 Bit besser auflösen kann, ist das soweit richtig?
Oder irre ich mich da?