Hallo,

ich habe ein kleines, jedoch für mich wichtiges Verständnisproblem.
Laut Datenblatt eines Atmega's 32 wird für den Timer1 bei CTC diese Formel für die gewünschte Frequenz berechnet:

Quarzfrequenz / (2*Prescaler*(1+OCR1A))

Dies ist soweit logisch, man kann diesen Wert von OCR1A ja in dezi oder in hex schreiben.

Mein Problem ist dieser Ausdruck:

Code:
OCR1A = (unsigned short) ((unsigned long) F_CPU / IRQS_PER_SECOND-1);
Wenn man nun Quarzfrequenz durch die IRQ's/s berechnet, dann erhält man einen komplett anderen Wert.

Beispiel:
https://www.roboternetz.de/wissen/index.php/Hallo_Welt_für_AVR_(LED_blinken)

Quarzfrequenz: 1MHz
IRQ's/s: 2000
gewünschte Frequenz: 0,5Hz

Laut der o.g. mir nicht verständlichen Ausdruck erhält man für OCR1A=500.
Wenn man nun die Formel aus dem Datenblatt mit einem Prescaler von 1 anwendet, dies: OCR1A=999999 bzw. 0xF423F.

Könnt ihr mir bitte diesen Ausdruck erklären

Gruß
Stefan