Zitat Zitat von RCO
Damit der Timer pünktlich zur Sekunde überläuft muss er mit 3036 neu beladen werden. Allerdings hier meine Frage, wenn der Timer doch erst in der Interruptroutine neu beladen wird, dann wird ja die Zeit, die vom Sprung zur Routine bis zum neu beladen vergeht, immer auf die Sekunde gerechenet. Stimmt das so?
Ja, aber das sind ja nur wenige Takte. Behaupten wir mal, ein Takt für den Sprung und 1 Takte um den Timer wieder zu laden.
Wenn man die ungenauigkeit des Quarz bedenkt, sind die 2 Takte bei über.
Dann geht's aber weiter. Ein Interrupt verhält sich ja ähnlich wie ein GOSUB. Es muss noch gespeichert werden, wo das Programm gerade steht um an der Stelle nach Return (oder Reti) weiterzumachen.
(2 Takte glaube ich)
Das schlimmst kommt aber noch. Das speicher aller Register. (jeweils 2 Takte!)
So sind mal gut und gerne 60 Takte abgelaufen, bis der Timer mit x (3036) wieder aufgeladen wird.
Nach meinem Verständnis wirkt sich das aber nur auf Prescaler=1 aus. Weil ja nur da jeder Takt ein Schritt näher zum Overflow bedeutet. Bei Teiler = 256 müssen ja erstmal 256 Takte abgelaufen sein, damit der Timer um 1 erhöht.