Hej.
Po długim czasie udało się zrobić Tetrisa plus psycho-test i ruletkę. Dojdzie jeszcze jakaś strzelanka.
Proszę o sprawdzenie przerwania, które odpowiada za multipleksowanie.
Wyświetlacz/cała matryca składa się z 10 pojedynczych matryc 8x5 led.
Katody matryc ( 8 ) są sterowane po dwie z przerzutników typu D czyli, że jest ich 5 co daje 8 pinów danych i 5 pinów zatrzasków.
Wejścia odwracającego nie wykorzystuję.
Anody matryc (też po dwie czyli 10) zasilane są z tranzystorów BD co daje kolejne 10 pinów.
Całość jest sterowana z Atmegi 164.
Funkcję przerwania rozwiązałem tak, że zastosowałem bufor 50 - elementowy ( bo wyświetlacz jest ustawiony jako kolumna o wysokości 50 linii i szerokości 8), wyłączam katody, ładuję po kolei na przerzutniki co 10-tą wartość bufora licząc od 0 zatrzaskując ją na każdym( wykorzystuje je jako pamięć ), a następnie załączam odpowiednią anodę (co 10-tą), następuje inkrementacja licznika ładowanej komórki tablicy bufora i wszystko leci od nowa w kolejnym przerwaniu. Gdy licznik osiągnie wartość większą niż 9 (czyli załaduję 9, 19, 29, 39 i 48 bajt to sie zeruje.
Na moje oko działa ok.
Proszę o sprawdzenie czy tak to powinno wyglądać.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.