Ähm, mir fällt gerade was auf, du hast die Frequenz nicht zufällig mal gemessen? Du hast bei deinem Code was ganz wesentliches übersehen!

Takt: Quarz/8 => 460800 => Tick alle 2.17usek
Das stimmt leider überhaupt nicht. Alle 2.17 uS wird der Timer0 um ein erhöht. Er läuft aber erst bei 256 über und löst erst dann einen Interrupt aus! Ich hab mich leider vorher immer auf die Angabe 2,17 uS verlassen.
OnTimer wird also nur alle 556 uS ausgelöst!
Du musst vermutlich nen kleineres Prescaler nehmen (1).
Und den Timer vorladen.
Leider ist es sehr schwer da, der Timer nach 3,6864 Takten überlaufen müsste, damit er jede uS überläuft.
Wenn wir uns die Zahl mal anschauen, fällt uns was aus! Das ist im Grunde die Quarzfrequenz/1 Mio
Könntst du also ein anderen Quarz nehmen?
4 Mhz oder 8 wären gut. Da das Timing sehr viele Resourcen frisst, wäre ein 16 Mhz Qurz natürlich am besten.


Fragen?!

MFG Moritz