Witam.
Dziś postanowiłem napisać program, którego zadaniem byłoby:
- po wciśnięciu klawisza KEY_MORE rozjaśniać diody LED
- po wciśnięciu klawisza KEY_LESS ściemniać diody LED
Założenie było stosunkowo proste i takowe zadanie również wydawało mi się dość łatwe.
Postanowiłem, że skorzystam z procesora Atmega32 (na płytce testowej EvB), wybrałem TIMER2 - tryb CTC. Stwierdziłem, że timer ośmio-bitowy będzie wystarczający. Taktowanie procesora w moim przypadku to 16MHz - również wystarczające, w zupełności. Wbrew moim założeniom prawie nic nie zgrało się z moim planem - krótko mówiąc "ja sobie, diody sobie."
Diody rozjaśniają się powoli (wolniej niż założyłem) i ściemniają po pewnym czasie, nawet dość długim (ok. 1min), ale nie stopniowo lecz nagle. Szukam błędu w kodzie od godziny i nic nie mogę znaleźć, co jest zapewne wynikiem tego, że jestem początkujący.

Oto program:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Przepraszam za ubogie komentarze, ale program był robiony "na szybko", gdyż miał być to przedsmak zastosowania tego toku myślenia dla wysterowania przerobionego mikroserwa na silnik DC z przekładnią poprzez PWM z mostkiem H (L293D) - 600mA to wystarczająco jak na taki silnik, a specjalne wejście umożliwia sterowanie PWM silnikiem, fajna sprawa, ale co z tego jak program nie działa (po prostu ja go źle napisałem, proszę nie myśleć, że mam pretensje to uC

).
Moja prośbę kieruję do osób, które mogłyby przejrzeć kod i stwierdzić gdzie mogłem popełnić ew. błąd.
Pozdrawiam, robert95.