Lars schrieb:
> Und wie sieht das aus, wenn der Interrupt 119,88x pro Sekunde
> ausschlagen soll?
Und in Zukunft fragst du jedesmal, wenn du einen Timer brauchst hier im
Forum nach oder wie? :-)
- Der Timer-"Baustein" im Controller wird mit einem bestimmten Takt
versorgt. Wie du schon richtig angibst ist das der PCLK1 (oder auch
PCLK2 bei anderen Timern, siehe Datasheet).
- Dieser Takt wird jetzt erstmal vom Prescaler heruntergeteilt. Also
Timertakt = PCLKx / Prescaler.
- Der Timer selbst zählt nun mit diesem Takt sein CNT Register hoch oder
runter. Wie lange er dafür brauchen soll gibst du ja vor - du musst ihm
also sagen, von wo an er wegzählen soll.
Du verlangst 199,88x pro Sekunde, also alle 5,003ms. Deine PCLK hat eine
Periode von 1/36MHz = 27,778ns. Ohne Prescaler müsste dein Timer also
5,003ms/27,778ns = 180108 mal zählen. Da das größer ist, als der
höchstmögliche Wert im CNT Register (16bit -> 65535), musst du den Takt
mit dem Prescaler runterteilen, z. B. durch 3. Dann ergibt sich der
Zähler Takt zu 36MHz/3 = 12MHz, was einer Periode von 83,33ns
entspricht. Damit muss dein Timer jetzt 5,003ms/83,33ns = 60036 mal
zählen.
Die Genauigkeit lässt sich halt auf +/- einen Timer-Zählschritt
einstellen. Ich denke mal bei 36MHz Grundtakt und 200Hz Timerfrequenz
solltest du dir darüber keine Sorgen machen müssen.
mfg