Witajcie moi drodzy.
Dziś przedstawię projekt, o którym myślałem od bardzo dawna. Początkowo byłem pewny, że będę musiał go zrealizować od 0, ale dość długie poszukiwania w sieci pozwoliły mi odnaleźć gotowe rozwiązanie, które spełnia moje oczekiwania, a mianowicie ASCII Video Terminal autorstwa Geoffs.
Strona domowa projektu: http://geoffg.net/terminal.html
Jest to w skrócie 'mikrokomputer' który wyświetla na ekranie to, co odbierze przez UART oraz wysyła na UART to, co zostanie mu podane przez klawiaturę z PS/2.
Wspiera on generowanie sygnału NTSC, PAL oraz VGA.
Jego rozdzielczość VGA to 24 linie po 80 znaków.
Dodatkowo można go programować poprzez USB dzięki zastosowaniu odpowiedniego bootloadera.
Schemat i PCB
Konstrukcja
Gerbery wziąłem ze strony autora projektu, a następnie zamówiłem wykonanie 10 płytek z jednej z fabryk z chin. Paczka przyszła po paru tygodniach:
Większość elementów miałem już pod ręką, jedynie gniazdko VGA musiałem wylutować z pomocą opalarki ze starej płyty głównej od komputera. Mogłoby się zdawać, że to dość destruktywny proces, ale odlutowane tak elementy radzą sobie całkiem nieźle.
Złączę na klawiaturę (PS/2) zamówiłem online, ponieważ te z płyty głównej od komputera niestety tu nie pasuje (jako że jest podwójne):
Po zlutowaniu wszystkiego wybrałem jaki chcę mieć kolor czcionki VGA (kropla cyny na odpowiedniej zworce):
Tak wygląda prawie gotowa całość:
I ostatecznie wgrałem wsad z pomocą PICKIT3 oraz MPLAB IPE v4.01:
Projekt ruszył z miejsca, aczkolwiek tak naprawdę do tej pory nie znalazłem czasu by dolutować dwa brakujący kondensatory paręnaście-pF obok rezonatora kwarcowego.
Bootloader
Projekt korzysta z bootloadera oferowanego przez Microchip, dzięki czemu po jednorazowym zaprogramowaniu go z pomocą PICKIT3 lub innego programatora PIC można już aktualizować jego soft bezpośrednio przez USB. Jest to duże ułatwienie, zwłaszcza dla osób które nie mają stałego dostępu do programatora.
Plik wykonywalny bootloadera też zamieszczam w załącznikach do tematu.
Testowanie w trybie 'echo'
Najprościej przetestować można całość poprzez dodanie zworki na złączu UART, tzn. poprzez połączenie RX z TX:
W ten sposób to co podamy na klawiaturę od razu idzie do wyświetlania. Można tak pisać małe i duże litery, cyfry oraz pozostałe znaki, jak również poruszać kursorem pisania z pomocą strzałek:
Testowanie z Arduino UNO
Układ można podłączyć bezpośrednio do Arduino UNO, mimo iż UNO zasilane jest z 5V a PIC w konstrukcji 3.3V. To dlatego, że przy pinie RX dodany jest dzielnik napięcia na rezystorach, który (wg. autora schematu) chroni układ nawet przed napięciami rzędu ±12V.
Test z Arduino - tabelka
Na początek odpaliłem przykłady kod użycia UART z oficjalnej strony Arduino. Generuje on tabelkę z liczbami w różnych formatach:
Kod: C / C++
Wynik na ekranie:
Test z Arduino - gwiazdki
Ten prosty program z kolei wydrukuje na terminalu prostokąt z gwiazdek.
Kod:
Kod: C / C++
Wynik na ekranie:
Test z Arduino - escape codes na okrąg
Video terminal VGA również wspiera tzw. 'escape codes', które pozwalają wydać mu polecenia inne niż wyświetlanie samego tekstu, czyli np. rysowanie prostych kształtów czy tam czyszczenie ekranu.
Ten przykład rysuje prosty okrąg o promieniu 100 pikseli na pozycji 240;144.
Kod:
Kod: C / C++
Wynik na ekranie:
Wszystkie 'escape codes' są dostępne w dokumentacji projektu:
Załączniki
Załączam tutaj całą 'construction pack' dla projektu, która zawiera też pliki Gerber:
Kod źródłowy (dla Microchip MPLAB X i kompilatora XC32)
Dokumentacja VT100:
Aktualizacja firmware V1.3:
Podsumowanie
Projekt był prosty do wykonania i uruchomienia, ale moim zdaniem można by spróbować go rozwinąć i generować kolorowy obraz VGA, ale nie wiem na ile to jest możliwe przy zachowaniu rozdzielczości takiej jak w projekcie. Zmiana PICa na szybszy z pewnością by pomogła, ale z tego co wiem to użyty tutaj PIC32MX250F128B należy do najszybszej rodziny PICów która jest teraz dostępna w obudowach DIP. Cokolwiek mocniejszego byłoby już w TQFP.
Jakby kogoś zainteresował ten projekt, to tak jak widać na zdjęciach zostało mi trochę PCB czy tam złącz, a wsad na PICa też mogę wgrać (dalej można korzystać z bootloadera).
Fajne? Ranking DIY Pomogłem? Kup mi kawę.
