Die Konfusion resultiert daraus, dass ihr nur die Formel betrachtet habt, nicht aber den dazugehörigen Text:
Du vermischt "Ereignishäufigkeit" und "Signalfrequenz". Du möchtest eine bestimmte Ereignishäufigkeit, nämlich ein Ereignis alle 50 µs. Das fOCR in der Formel aber ist die Frequenz eines Signals, das entsteht, wenn der Timer in einem speziellen CTC-Modus benutzt wird, bei dem bei jedem OCR-Ereignis der Ausgang toggelt.For generating a waveform output in CTC mode, the OC2A output can be set to toggle its logical
level on each compare match by setting the Compare Output mode bits to toggle mode
(COM2A1:0 = 1). The OC2A value will not be visible on the port pin unless the data direction for
the pin is set to output. The waveform generated will have a maximum frequency of fOC2A =
fclk_I/O/2 when OCR2A is set to zero (0x00). The waveform frequency is defined by the following
equation:
Oder ganz konkret:
Bei "Init Tmr/Cntr 2, 8-Bit auf 20 kHz = 50 µs" meinst du 20 kHz im Sinne von 20k Ereignisse/s. Wenn du aber bei jedem Ereignis einen Ausgang toggelst (so wie es der beschriebene Timermodus automatisch macht), hat das an diesem Ausgang entstehende Signal eine Periodendauer von 100 µs, also eine Frequenz von 10 kHz. Und diese 10 kHz ist das fOCR in der Formel.
PS: Deine Berechnungen stimmen übrigens nicht ganz. Wenn du in OCR2A 125 lädst, dann teilst du den Takt durch 126 (nicht 125).
Lesezeichen