Cześć, jak pisałem wcześniej w jednym z wątków w tym dziale pracuję nad zegarkiem na 6 lampach NIXIE IN-4 i ATMEGA8a. Procesor taktuje na zewnętrznym kwarcu 16MHz.
Zacząłem do multipleksowania lamp za pomocą programu z bluebooka o multipleksowaniu wyświetlaczy 7-SEG. Działa pięknie.
Kiedy przyszła kolej na ściemnianie lamp za pomocą PWM również posłużyłem się programem z Bluebooka. Stworzyłem nowe przerwanie (zakomentowany timer0) jednak szybko doszedłem do wniosku, że to nie ma prawa działać, bo w zasadzie w jednym przerwaniu (multipleksowanie) zmieniam kolejno zaświecone anody, a w drugim (programowy PWM) nadpisuje cały stan portu. Spróbowałem więc połączyć oba te tematy w przerwaniu od multipleksowania, uzależniając wyświetlanie anod od programowego PWM. Niestety wynikiem tej operacji jest to, że zegarek wyświetla anody poprawnie, ale zamiast ściemniać wszystkie lampy, cały komplet miga cyklicznie ON-OFF, teraz powiedzmy co 1s. Kiedy zmieniam wypełnienie zmiennej pwm w zakresie od 0-255 zmienia się tylko częstotliwość tego migania.
Od czego zacząć, gdzie szukać błędu? Czy może gdyby wrócić do realizacji tego na 2 przerwaniach udałoby się osiągnąć efekt? Prosze o pomoc.
Poniżej znajdują się kody pliku nagłówkowego i pliku .c .
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.