Witam brać forumową

O ile do tej pory, po mniejszym lub większym rwaniu włochów z głowy, jakoś znajdywałem przyczynę problemu niedziałania moich programów, o tyle ta passa zostaje dzisiaj przerwana. Do momentu dostania do ręki bluebooka posiłkuję się dość nieuporządkowaną wiedzą na temat składni w języku C, i pewnie tam będzie leżeć przyczyna mojego problemu. Jednakże proszę o wskazanie właściwej drogi w dalszym toku nauki.
Projekt zakłada uruchomienie układu PWM sterującego prędkością wentylatora 12V, oraz wyświetlenia jego wartości na wyświetlaczy 7-segmentowym LED(od 0 do 255). Jako mózg w moim urządzeniu pracuje Atmega8 (wszystko chodzi na zestawie uruchomieniowym ZL2AVR
PDF). Jako PWM został zaprzęgnięty TC1, w podanym niżej programie został skonfigurowany jako 2 niezależnie 8-bitowe PWM-y. TC0 pracuje jako generator przerwań. Wyświetlacze są podpięte do portu D, a ich anody do portu C.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Problem pojawił się na jednym z pierwszych etapów uruchamiania. PWM ruszył poprawnie - wiatraczek powoli rozpędza się i zwalnia. Jest to zależne od wartości zmiennej "i". Następnie sprawdziłem poprawność działania funkcji wyświetlenia, oraz wyciągania cyfry jedności ze zmiennej. Do tej pory wszystko szło gładko. W momencie, gdy próbowałem wyświetlić cyfrę jedności zmiennej "i", na wyświetlaczu dostaję okrągłego nulla. Jednak gdy zamiast polecenia:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
wpiszę cokolwiek ręcznie, np.:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
na wyświetlaczu dostaję cyfrę 4.
Pytanie:
Co robię źle?
Zaznaczam, że nie chcę ryby, tylko wędkę

W dostępnych publikacjach nie znalazłem niczego, co byłoby dla mnie pomocne, albo po prostu nie wiem czego szukać.
Pozdrawiam.