Mikrokomputer CA80 zdalne sterowanie klawiaturą |
|
Temat zdalnego sterowania panelem operatorskim pewnego `starego, smutnego urządzenia` wpadł mi w pracy kilka tygodni temu, w ramach eksperymentów jakby tu z zadania się wykaraskać wykorzystałam także systemik CA80. Potem zbudowanie sterowanej klawiaturki do CA stało się celem samym w sobie i zaowocowało materiałem jak poniżej, no i jak bożkowie celtyccy dadzą - wypracowaniem w którymś z wiosennych numerów EdW. ❦ podglądanie klawiatury CA80 Oczywiście niezawodne pudełeczko AD2 w roli analizatora stanów logicznych, należy zaznajomić się z przebiegami czasowymi na liniach klawiatury starego CA80 (dziesięć kolumn /7442/ x trzy rzędy /PA6,5,4/ kostki 8255). Praca dekodera 4/10 zgodna z oczekiwaniem, smutkiem napawa czas trwania wyboru jednej kolumny klawiatury - około 100us. ![]() ![]() ❦ wparcie sprzętowe Cała zabawa w zdalną klawiaturę wymaga pewnych zabiegów układowych, a pryncypia w tym są dwa: I stąd właśnie obecność układu 74147 - enkodera priorytetowego 10/4, którego dokumentację znajdziemy tu: ➮ 10-line to 4-line priority enkoders. Kostka przytrafiła mi się w SMD stąd płytka-adapter (btw, dwukrotnie droższa od samego układu, no taki life). ❦ dygresja o łączeniu płytek w starym CA80 Tu uważam za wielce zasadną wtrącinę o łączeniu płytek CA80, bo szczerze mówiąc słabo mi się robi na widok pokracznie i niestety na stałe polutowanych wiązek przewodów pomiędzy płytkami systemu. Listwy goldpin są przecież ogólnie dostępne, jednopinowe, łamane z listwy nasadki także - jaki problem pospinać to elastycznymi przewodami? Na upartego można by wykorzystać choćby tanie jak ryż, chińskie kabelki do płytek stykowych. Daje to super komfort pracy z tak połączonymi płytkami, jak się kabelek wyrobi - wymiana na inny to dosłownie chwila. No i mamy tym sposobem drugi komplet styków do wykorzystania do własnych celów, od podpinania analizatora logicznego (jak AD2) po własne fanaberie (jak moje 74147). ❦ interfejs - cześć Arduino Schemat części elektronicznej finalnie wypada taki i zasada działania w dwóch zdaniach: binarna pozycja logicznego zera ustawianego podczas skanowania klawiatury jest odtwarzana w enkoderze 74147 i wprowadzana do Ardu, takoż z Ardu wychodzą trzy bity sterujące rzędami klawiatury (8255.PA6,5,4) systemu CA80. Program w Ardu mapuje znak z łącza szeregowego na odpowiedni element tabeli lookup indeksowanej numerem kolumny, wartość tego elementu stanowi o wciśnięciu lub zwolnieniu wybranego klawisza, ot co. ![]() ![]() Oczywiście program na Arduino (UNO):➮ ca80typer_ardu.ino Program w Pascal na komputer PC:➮ ca80typer.pas Skrócona instrukcja obsługi:
Pierwsze wywołanie załaduje i wklika nam do pamięci CA80 kod maszynowy w formacie Intel HEX, jest też możliwy automatyczny start programu, zaraz po wpisaniu, użycie opcji --address odpowiada klawiszom [G][nnnn][=]. Co do zasady nowy rekord HEX jest wklikiwany osobna sekwencją systemowego polecenia [D], daje to możliwość porozkładania sobie testowych danych i procedurek pod `ładnymi` adresami, np. 8000, c000, c100, etc/itd. Drugie wywołanie daje możliwość wydawania luźnych komend CA80, tak, jakbyśmy pisali po jego klawiaturce. Dobrze jest rozpoczynać sekwencję co najmniej dwoma "mm", to wywołanie Monitora. No niestety, ale interfejsik mój się czasem gubi i trzeba go przywołać do porządku i znanego a priori stanu wejściowego. W obu przypadkach parametr --speed określa opóźnienie pomiędzy kliknięciami, zbyt mały może doprowadzić do błędów (Err CA80), zbyt wielka wartość spowoduje, że zanudzimy się na śmierć, 250...400 to jest tak akurat do kręcenia filmików czy robienia pokazów na żywo. Przykłady - wpisanie i uruchomienie demo_com_1.hex oraz ustawienie i wywołanie zegarka zleceniami [1] oraz [0].
❦ pierwsze próby sterowania Testy reakcji na klawisze: Prymitywny programik testowy z MIK05: ➮ demo_com_1.asm
Wydane kolejno polecenia: [E][c000][.][c010][.][0][=] - wyzerowanie RAM c000-c010 [D][c000][=][=][=]...[=] - przegląd zleceniem D czy są zera [D][c000][=][0e][=][73][=]... - wpisanie kodu maszynowego Następnie, testowe 'hello': ➮ hello1.asm
praca z terminalem PuTTY, można radośnie klikać po klawiaturce CA80: ❦ wszystko samo za mnie sie dzieje Program demonstracyjny 'hello.edw': ➮ hello_edw.asm
Skrypt powłoki do wklikiwania kolejnych poleceń: ➮ demo_edw.sh
Zrzut terminala, wersja statyczna ![]() Finalne zdjęcia CA80 z klawiaturą zarządzaną przez chińskie Arduino A na żywo wygląda to następująco: #slowanawiatr, marzec 2019 |
![]() |
![]() |
![]() |