> TCNT0 = 0xFF - 230; // reload time for 1ms timetick
Deine Taktfrequenz ist 1843200 Hz
Mit einem Vorteiler von 8, zählt der Timer in 1 Sekunden also bis
230400. D.h. würdest du 230400 Timerinkrements zählen, wäre 1 Sekunde
vergangen.
Da du Millisekunden willst, brauchst du 1 Tausendstel davon. Also 230.
D.h. du willst mit dem Timer jeweils 230 Zählvorgänge abzählen, ehe dir
dann ein Interrupt mitteilt: 1 Tausendstel Sekunde vergangen.
Von daher ist deine Berechnung soweit ok (gut, über +-1 streite ich
jetzt nicht rum).
Wenn also die effektive Zeit am Pin nicht stimmt, gibts in der ganze
Rechnerei nur 2 Dinge, die nicht stimmen können:
* die 1843200Hz entsprechen nicht der Realität
* das hier
TCCR0 = 0x02;
ist kein Teilerfaktor 8
wenn diese beiden Punkte gegeben sind, dann muss sich daraus zwangsweise
1 Sekunde an der LED ergeben. Denn eines können wir ausschliessen: Der
Timer verzählt sich nicht.