Marco G. schrieb:
> Ich würde gerne den Prescaler des Timer-Interrupts am Ende der
> Interrupt-Routine ändern. Ist dies ohne weiteres möglich?
Nein. Der Interrupt besitzt nämlich überhaupt keinen Prescaler.
Der Timer hingegen schon. Und dessen Prescalerfaktor darfst du natürlich
jederzeit ändern.
Berücksichtigen mußt du allerdings, daß bei einer Änderung von einem
geringen Faktor zu einem höheren nicht gewährleistet ist, daß der
nächste Interrupt erst nach der zu erwartenden Zeit ausgelöst wird. Im
schlimmsten Fall tritt er nämlich noch im Zyklus des geringeren Faktors
auf.
Willst du diesen Effekt vermeiden, mußt du nicht nur den Prescalerfaktor
setzen, sondern auch den Prescaler resetten. Auch dabei entsteht
allerdings ein Fehler, der bewegt sich aber immer unterhalb des Zyklus
des kleineren Prescalerfaktors. Dafür tritt er aber immer auf,
unabhängig davon, in welche Richtung der Faktor geändert wird.
Wenn man sich nicht mit speziellen Programmiertechniken auseinadersetzen
möchte, mit denen man den Fehler komplett vermeiden kann, ist also die
beste Vorgehensweise: beim Wechsel von einem niedrigen auf einen hohen
Faktor: Prescaler-Reset, bei der umgekehrten Richtung: kein
Prescaler-Reset.