K r a k ó w 1 1. 0 2. 2 0 1 4 Technika mikroprocesorowa Konsola do gier W yk o n a l i : P r o w a d z ą c y: P a w e ł F l u d e r R o b e r t S i t k o D r i n ż. J a c e k O s t r o w s k i
Opis projektu sterowanie oraz wyświetlanie grafiki o rozdzielczości 800x600 w 1 bitowej palecie kolorów na monitorze ze złączem VGA sprite o dowolnym rozmiarze z wykorzystaniem techniki bit-banding obsługa klawiatury z portem komunikacyjnym ps/2 biblioteka graficzna oraz biblioteka gui dla monitora gra Snake Po uruchomieniu układu na monitorze wyświetla się animowane (przesuwane) menu. Za pomocą klawiszy strzałek klawiatury można zmieniać numer menu. Pod numerem 1 jest gra Snake. W grze tej wężem steruje się za pomocą klawiszów strzałek. Grę rozpoczyna się wciskając klawisz ENTER. Zasady gry są takie same jak standardowej gry Snake. Spis użytych części zestaw uruchomieniowy STM32F4DISCOVERY z mikrokontrolerem STM32F407VGT6 przejściówka goldpin-gniazdo VGA styki do goldpinów wraz z wtyczkami skrętka UTP gniazdo DB15 żeńskie 3 rezystory 270 Ohm przejściówka goldpin-gniazdo ps/2 styki do goldpinów wraz z wtyczkami przewód 6 żyłowy wtyczka ps/2 Środowisko programistyczne µvision V5.1.0.0 Podłączenie przejściówek przejściówka goldpin-vga
przejściówka goldpin-ps/2 pomarańczowy 5V niebieski GND żółty clock PA1 biały data PA2 Podział kodu na bloki funkcjonalne (najważniejsze) main funkcja main() oraz wywołanie funkcji startowych video funkcje potrzebne do uruchomienia i synchronizacji peryferii do obsługi monitora ps2 obsługa klawiatury gl biblioteka graficzna (niższego poziomu) gui biblioteka do gui (biblioteka graficzna wyższego poziomu) start ekran startowy snake gra Snake Opis działania układu Mikrokontroler działa z częstotliwością taktowania 168 MHz z zewnętrznym rezonatorem kwarcowym o częstotliwości 8 MHz. VGA Timer 1 zapewnia synchronizację poziomą poprzez pin PA8. Timer 1 działa z częstotliwością około 35,1 khz. Poniżej przebieg z oscyloskopu
Timer 2 odpowiada za synchronizację pionową za pomocą pinu PB3. Timer 2 działa z częstotliwością 56 Hz. Poniżej przebieg z oscyloskopu Poniżej ilustracja przebiegów Timera 1 oraz Timera 2. Transfer danych z bufora ekranowego fb do rejestru danych wyjściowych SPI zapewnia sprzętowy kontroler DMA. SPI następnie wyrzuca dane poprzez pin PA7 (kolor zielony). Dane z SPI pojawiają się na linii sygnałowej pomiędzy impulsami synchronizacji poziomej. Poniżej przykładowe przebiegi z oscyloskopu (żółty przebieg dane SPI, niebieski sygnał synchronizacji poziomej)
Poglądowy diagram pracy algorytmu VGA klawiatura ps/2 Po naciśnięciu klawisza klawiatura generuje swój własny zegar wysyłając równocześnie dane. Poniżej przykładowa sekwencja dla klawisza ENTER Pierwszy bit to bit startu, następnie 8 bitów danych, bit parzystości oraz bit stopu. Na pinie PA1 ustawione jest zewnętrzne przerwanie na opadające zbocze zegara z klawiatury. To uruchamia funkcję obsługi przerwania klawiatury, w której dekodowana jest sekwencja bitów dostarczonych z klawiatury na kod ASCII.
Możliwości rozwoju Zbudowaną konsolę do gier można rozszerzyć o obsługę kart SD, z której byłaby możliwość odczytywania gier, obrazów oraz innych plików 3 bitową paletę kolorów z możliwością regulacji jasności każdego z koloru za pomocą przetwornika DAC zaimplementowanie interpretowanego języka programowania CHIP-8, dzięki któremu gry stałyby się uniwersalne stworzenie biblioteki grafiki 3D wykorzystanie akcelerometru, który znajduje się na płytce uruchomieniowej, do sterowania obiektami w grze Dodatkowe biblioteki Biblioteka producenta: STM32F4DISCOVERY board firmware package - http://www.st.com/web/en/catalog/tools/pf257904 Bibliografia http://www.st.com/st-webui/static/active/en/resource/technical/document/reference_manual/dm00031020.pdf http://www.javiervalcarce.eu/wiki/vga_video_signal_format_and_timing_specifications http://edu.i-lo.tarnow.pl/inf/utils/002_roz/p017.php http://edap.pl/artykuly/avr-i-klawiatura-ps2 http://www.atmel.com/images/doc1235.pdf