Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyj±tek www.elektroda.pl do Adblock.
Dzięki temu, że ogl±dasz reklamy, wspierasz portal i użytkowników.

Terminal PAL/NTSC/VGA na PIC32 z obsług± klawiatury PS/2

p.kaczmarek2 02 Mar 2019 18:58 2220 5
  • Terminal PAL/NTSC/VGA na PIC32 z obsług± klawiatury PS/2
    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
    Terminal PAL/NTSC/VGA na PIC32 z obsług± klawiatury PS/2
    Terminal PAL/NTSC/VGA na PIC32 z obsług± klawiatury PS/2

    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:
    Terminal PAL/NTSC/VGA na PIC32 z obsług± klawiatury PS/2
    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.




    Terminal PAL/NTSC/VGA na PIC32 z obsług± klawiatury PS/2

    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):
    Terminal PAL/NTSC/VGA na PIC32 z obsług± klawiatury PS/2
    Po zlutowaniu wszystkiego wybrałem jaki chcę mieć kolor czcionki VGA (kropla cyny na odpowiedniej zworce):
    Terminal PAL/NTSC/VGA na PIC32 z obsług± klawiatury PS/2
    Tak wygl±da prawie gotowa cało¶ć:
    Terminal PAL/NTSC/VGA na PIC32 z obsług± klawiatury PS/2
    I ostatecznie wgrałem wsad z pomoc± PICKIT3 oraz MPLAB IPE v4.01:
    Terminal PAL/NTSC/VGA na PIC32 z obsług± klawiatury PS/2
    Terminal PAL/NTSC/VGA na PIC32 z obsług± klawiatury PS/2
    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.
    Terminal PAL/NTSC/VGA na PIC32 z obsług± klawiatury PS/2
    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:
    Terminal PAL/NTSC/VGA na PIC32 z obsług± klawiatury PS/2
    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:
    Terminal PAL/NTSC/VGA na PIC32 z obsług± klawiatury PS/2


    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
    Zaloguj się, aby zobaczyć kod

    Wynik na ekranie:
    Terminal PAL/NTSC/VGA na PIC32 z obsług± klawiatury PS/2

    Test z Arduino - gwiazdki
    Ten prosty program z kolei wydrukuje na terminalu prostok±t z gwiazdek.
    Kod:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Wynik na ekranie:
    Terminal PAL/NTSC/VGA na PIC32 z obsług± klawiatury PS/2

    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
    Zaloguj się, aby zobaczyć kod

    Wynik na ekranie:
    Terminal PAL/NTSC/VGA na PIC32 z obsług± klawiatury PS/2
    Wszystkie 'escape codes' s± dostępne w dokumentacji projektu:
    TerminalEs...eCodes.pdf Download (19.42 kB)

    Zał±czniki
    Zał±czam tutaj cał± 'construction pack' dla projektu, która zawiera też pliki Gerber:
    Constructi..ack.zip Download (5.23 MB)Punkty: 1 dla użytkownika
    Kod Ľródłowy (dla Microchip MPLAB X i kompilatora XC32)
    Terminal_S..rce.zip Download (571.1 kB)Punkty: 0.45 dla użytkownika
    Dokumentacja VT100:
    VT100_User..ide.pdf Download (1022.22 kB)Punkty: 0.8 dla użytkownika
    Aktualizacja firmware V1.3:
    Terminal_V...PGRADE.zip Download (265.04 kB)Punkty: 0.21 dla użytkownika


    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
    Potrafisz napisać podobny artykuł? Wy¶lij do mnie a otrzymasz kartę SD 64GB.
  • #2 02 Mar 2019 21:27
    LChucki
    Poziom 28  

    p.kaczmarek2 napisał:
    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.

    Na uC to karkołomne albo wręcz niemożliwe. Takie rzeczy robi się na FPGA ewentualnie CPLD + szybkie RAM, DAC.

  • #3 03 Mar 2019 12:27
    tmf
    Moderator Mikrokontrolery Projektowanie

    LChucki napisał:
    p.kaczmarek2 napisał:
    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.


    Na uC to karkołomne albo wręcz niemożliwe. Takie rzeczy robi się na FPGA ewentualnie CPLD + szybkie RAM, DAC.


    E tam. To proste, a jedynym ograniczeniem jest ilo¶ć dostępnej pamięci. Niestety nawet żeby zapamiętać 320x200 mono potrzeba 8 kB, a jak chcemy mieć np. 16 kolorów to już 32 kB i dla małych procesorków robi się problem. Do krórej¶ z ksi±żek o XMEGA doł±czyłem przykład takiego projektu i działa to całkiem nieĽle. Żeby było ¶mieszniej, generowanie obrazu VGA nawet nie obci±ża za bardzo procesora. Można też przejrzeć YT, aby się przekonać jakie cuda ludzie robi± na prostych procesorkach w kwestii generowania obrazu.
    VGA jest o tyle proste, że s± rozdzielone sygnały kolorów RGB, o wiele bardziej nieciekawe jest generowanie kolorowego sygnału NTSC lub PAL, ale też się da.

  • #4 03 Mar 2019 13:08
    prosiak_wej
    Poziom 26  

    p.kaczmarek2 napisał:
    Mogłoby się zdawać, że to do¶ć destruktywny proces, ale odlutowane tak elementy radz± sobie całkiem nieĽle.
    Terminal PAL/NTSC/VGA na PIC32 z obsług± klawiatury PS/2


    Łojezu! Proponuję inwestycję w jak±¶ opalarkę Steinel z cyfrow± regulacj± temperatury. Ustawiasz 370 stopni, dmuchasz i po czasie elementy same wypadaj±, a płyta pozostaje niezniszczona :)

  • #5 09 Mar 2019 20:50
    radiosimon
    Poziom 28  

    Płytka PCB tragiczna, jak z autoroutera. Rozumiem, że autorem jest kto inny ale pierwsze co bym zrobił to smd + nowy layout.

  • #6 10 Mar 2019 10:45
    Olza98
    Poziom 13  

    Jak najbardziej jest to możliwe. W tym trybie do wy¶wietlenia jednego ekranu potrzeba 1920 bajtów, czyli ok. 2 kB. Je¶li dodasz do tego atrybuty koloru, to przy 8 bitach potrzebujesz dodatkowo 2 kB, a przy 4 bitach 1 kB na ekran.