8000000[Hz] / 1024 * 0.010[s] = 78.125
Wobec tego wartość rejestru OCR1A powinna wynieść 78.
To 1024 albo 256 to tzw. preskaler czyli wstępny dzielnik częstotliwości i nijak się ma do wartości początkowej rejestrów OCRxy. Wzorcowy sygnał zegarowy (taktowanie procesora w Twoim przypadku 8MHz) jest dzielony przez ten właśnie dzielnik i takie "wydłużone" czasowo impulsy są podawane na układ liczący, który liczy do zadanej wartości OCRxy (lub innej - górne i dolne progi zależą od ustawień samego układu licznikowego).
Zauważ w takim razie, że obliczona wartość 78 jest dodatkowym dzielnikiem dla układu liczącego, gdyż każdy impuls (wstępnie podzielony przez preskaler = 1024) zwiększa wartość licznika (rejestr TCNT0) i porównuje go z wartością 78. Wobec czego musi być aż 78 "tyknięć" zegara licznika, aby uzyskać zakładany czas (10ms).
Jeżeli zastosujemy "inżynierię odwrotną"
wtedy:
8000000[Hz] / 1024 / 78 = 100.16Hz, czyli w przybliżeniu 10ms.
To przybliżenie wynika z faktu świadomego odrzucenia wartości ułamkowej początkowych obliczeń.
Jeżeli potrzebna jest dwukrotnie większa częstotliwość (dwa razy krótszy czas interwału) wtedy wystarczy tylko podzielić wartość 78 / 2 = 39. Uzyskamy wtedy 200Hz na które wskazuje moja poniższa uwaga.
Timer0 oraz Timer2 to liczniki 8-mio bitowe, a więc rejestr OCR2 jest również 8-mio bitowy. W takim razie
OCR2 |= 410; powoduje zapisanie wartości 154 do OCR2 odrzucając najstarszy bit (pomijam ewentualną poprzednią wartość tego rejestru). W związku z tym tak naprawdę uzyskana częstotliwość to ok. 200Hz:
8000000[Hz] / 256 / 154 = 202.92Hz => 5ms