[CA80]Jak uruchomić CA80 - poradnik dla początkujących.

To nie jest miejsce tylko dla początkujących, wszyscy jesteśmy w czymś początkujący i wymieniamy się doświadczeniami.
Awatar użytkownika
Zegar
User
User
Posty: 316
Rejestracja: wtorek 02 lip 2019, 14:42

[CA80]Jak uruchomić CA80 - poradnik dla początkujących.

Postautor: Zegar » niedziela 12 lip 2020, 14:20

Jestem analfabetą wtórnym, więc być może potrafię spojrzeć na ten temat z perspektywy nowicjusza lub chociaż średniozaawansowanego amatora... W podobny sposób należy rozpatrywać również inne urządzenia czy projekty.
Na początek należy zapoznać się z obiektem. Czym jest CA80? Odpowiedzi może być wiele zależnie od kontekstu zadanego pytania:
1. Jest obiektem naszych oczekiwań lub niespełnionym marzeniem z młodości...
2. Jest modnym staroświeckim gadżetem, który ładnie wyświetla godzinę...
3. Jest przykładem klasycznego systemu mikroprocesorowego, który chcemy poznać, żeby lepiej rozumieć mikroelektronikę.
...
...
...

Jeżeli nasza odpowiedź jest zbliżona do pierwszej lub drugiej - proponuję kupić gotowy działający egzemplarz i cieszyć się jego posiadaniem.

Gdyby jednak wystąpił trzeci przypadek, proponuję zacząć od lektury MIK-ów. "Ale po co?" - zapytają doświadczeni elektronicy. Stare porzekadło mówi, że pycha kroczy przed upadkiem. Zapomnijmy na chwilę wszystko, czego się nauczyliśmy w szkole czy w ramach hobby, to nic nie kosztuje. Czas poświęcony na czytanie zaowocuje w przyszłości. Nawet gdyby nasz egzemplarz miał wystartować zanim ostygnie ostatni lut, dobrze jest wiedzieć dlaczego działa.

Do rzeczy. Odpowiedzmy na pytanie, co jest najważniejszym elementem naszego systemu. Automatycznie nasuwa się się odpowiedź: procesor czyli Z80. Czy na pewno? Jak działa procesor? Otóż wykonuje on kolejne rozkazy, których kody odczytuje z pamięci... Może jednak ważniejsza od procesora jest pamięć? A może coś innego? Kolejne rozkazy muszą tworzyć logiczną całość, która ożywi komputer. Często pojawia się określenie "wsad". Ten brzydki wyraz pochodzi z metalurgii lub innej dziedziny, o której nie mam zielonego pojęcia... "Wsad" to plik zawierający zbiór bajtów, który dla programatora jest źródłem danych do zapisania w pamięci programowalnej, czyli PROM, EPROM lub EEPROM. Nie zajmujemy się na razie różnicami wyżej wymienionych ROM-ów, interesuje nas ich wspólna cecha: możliwość zaprogramowania. To słowo klucz. Programowanie to pisanie programów lub zapisywanie gotowych w pamięci stałej (może jest więcej znaczeń tego słowa, ale nie wnoszą nic do naszego tematu, więc zakładamy, że są tylko dwa). Rdzeniem naszego klucza jest PROGRAM - odpowiedź na pytanie o najważniejszy element. Jednak żeby program działał, potrzebujemy dla niego odpowiednie środowisko. Musimy zapewnić mu wszystkie niezbędne do życia składniki, jak woda, tlen itd. Program został już dawno napisany przez twórcę CA80 pana Stanisława Gardynika, więc na początek nie musimy uczyć się rozkazów, czy ich kodów maszynowych, które w formie bajtów zostały zapisane w pliku - po prostu przenieśmy je do fizycznego układu. Jak? To temat na inną opowieść...
Użyłem słowa PROGRAM zamiast popularnego "wsadu". Dokonałem uproszczenia, ponieważ pliki, które możemy znaleźć w sieci, zawierają wiele programów napisanych przez różnych autorów w różnym czasie. Całość możemy nazwać OPROGRAMOWANIEM, którego najważniejsza część jest MONITOREM. Monitor to system operacyjny czyli program ułatwiający pracę użytkownikowi komputera. Każdy komputer zawiera programy nazywane BIOSEM czy czymś podobnym. BIOS łączy właściwy system operacyjny np. Windows czy Linuks z żelastwem, które może być zróżnicowane. W CA80 mamy procedury (możemy nazwać je funkcjami) obsługujące urządzenia wejścia - wyjścia (wyświetlacz, klawiaturę, magnetofon), które możemy traktować jak BIOS (basic input / output system). Mamy też system operacyjny: monitor CA80, który wykorzystuje wyżej wymienione funkcje.
Oprogramowanie ładnie brzmi i oddaje sens określanego bytu (przecież nie jest to przedmiot), jak okablowanie czy orurowanie...
O ile procesor możemy nazwać mózgiem, to oprogramowanie jest duszą komputera. Jednak to nie wszystko! Żeby ożywić całość musimy sprawić, żeby do mózgu dopłynęła krew dostarczająca tlen i energię. Potrzebujemy serca, którym jest generator CLK. Dzięki niemu w żyłach popłynie strumień danych.
Jeżeli do tej pory wszystko zrobiliśmy poprawnie, procesor wykonuje kolejne rozkazy, jednak nie widzimy tego na wyświetlaczu. Dlaczego? Monitor zapisuje efekty swojej pracy w pamięci o dostępie swobodnym czyli RAM. Żeby coś zobaczyć, trzeba wysłać to do wyświetlacza. Tutaj potrzebna jest informacja, jak on działa. Składa się on z ośmiu cyfr, a każda z nich z ośmiu segmentów (wyświetlacz siedmiosegmentowy ma osiem segmentów - przecież to jest oczywiste!). Żeby zapalić wszystkie, potrzebujemy sześćdziesięciu czterech sygnałów! To dużo. Na szczęście wymyślono multipleksowanie, więc jest łatwiej. Albo trudniej... Zależy z której strony spojrzymy. Do multipleksowania (przełączania kolejnych wartości) potrzebujemy dodatkowy układ lub funkcję programu. Dzisiaj jest wiele gotowych układów (np. TM1637), do których wystarczy wpisać wyświetlaną treść i nie przejmować się nią dalej, jednak w latach osiemdziesiątych ubiegłego wieku trzeba było radzić sobie inaczej. Jak? Należy procesorowi dołożyć dodatkowe zadanie - czyli cykliczne zmienianie wyświetlanej treści. Skąd procesor ma wiedzieć, kiedy to robić? Musimy mu powiedzieć. W tym celu dostarczymy sygnał NMI (non maskable interrupt - przerwanie niemaskowalne). W programie monitora przewidziano procedurę obsługi tego przerwania, która zajmuje się nie tylko wyświetlaczem, ale również odmierza czas i sprawdza klawiaturę. Ponieważ odmierza czas - musi być wywoływana bardzo precyzyjnie, dlatego generator CLK zawiera trymer. Jeżeli dokładnie wyregulujemy generator, podzielony sygnał również będzie dokładny. Dzielnik składa się z liczników połączonych tak, żeby otrzymać NMI = 500 Hz. Co dwie milisekundy do portu 8255 zapisywany jest obraz kolejnej cyfry i jej numer.
Tyle teorii wystarczy żeby zacząć lutowanie (oczywiście po zbadaniu płytki, czy nie jest uszkodzona itd.). Proponuję taką kolejność:
1. Montaż i uruchomienie generatora CLK i dzielnika NMI. Luksusem jest użycie oscyloskopu, jednak w amatorskich warunkach wystarczy miernik uniwersalny z częstościomierzem (można taki kupić już za kilka dolarów).
2. Montaż podstawek procesora, pamięci (U9, U12), portu systemowego (U7) oraz dekoderów adresów (U4, U16)
3. Na początek nie potrzeba nic więcej (oczywiście kondensatory blokujące lepiej wlutować). Im mniej elementów tym większe szanse na sukces.
4. Klawiaturę też zostawić na potem.
5. Najpierw włączyć zasilanie bez kości, żeby wykryć ewentualne zwarcia.
6. Umieścić scalaki na właściwych pozycjach.
7. Podłączyć jakiś sprawdzony wyświetlacz, może być cztero- lub sześciocyfrowy ale koniecznie multipleksowany.
8. Ponownie podać +5V. Jeżeli coś nam się wyświetli - trzeba to koniecznie opić!
9. Robimy kawę lub herbatę zależnie od upodobań bez względu na sukces czy jego brak.
10. Jeżeli wyświetlił się "CA80" - możemy zająć się montażem kolejnych elementów, jeżeli znaki są na niewłaściwych pozycjach - sprawdźmy połączenia wyświetlacza. Jeżeli intensywnie świeci jedna cyfra - multipleksowanie nie działa. Powodem może być brak NMI, ale również wiele innych przyczyn... Musimy zacząć od początku. Najlepiej od poszukiwania zwarć i ewentualnych braków połączeń - zdarza się coś źle zlutować lub przeoczyć. Jeżeli niczego nie znajdziemy, sprawdźmy EPROM lub użyjmy inny. Gdyby nadal nie było oznak życia, musimy sprawdzić pozostałe kości, lub wymienić je na inne.
Mam nadzieję, że ósmy punkt przyniesie pozytywne wrażenia.
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."
A. Einstein

Awatar użytkownika
Zegar
User
User
Posty: 316
Rejestracja: wtorek 02 lip 2019, 14:42

Re: [CA80]Jak uruchomić CA80 - poradnik dla początkujących.

Postautor: Zegar » środa 15 lip 2020, 14:00

Jak najprościej upewnić się, że serce naszego CA80 bije? Zakładamy, że nie mamy (prawie) żadnych narzędzi. W końcu to jest poradnik dla początkujących. Możemy zbudować prosty częstościomierz. Wystarczy dowolne Arduino, które na pewno każdy znajdzie w szufladzie. Jeżeli jednak nie znajdziemy, zakup nie spowoduje katastrofy finansowej.
Wystarczy kilka linijek kodu:

Kod: Zaznacz cały

const int NMI_Pin = 8;
int NMI_High;
int NMI_Low;
float T_NMI;
float f_NMI;

void setup()
{
  pinMode(NMI_Pin, INPUT);
  Serial.begin(115200);
  delay(5000);
}

void loop()
{
  NMI_High = pulseIn(NMI_Pin , HIGH);
  NMI_Low = pulseIn(NMI_Pin , LOW);
  T_NMI = NMI_High + NMI_Low ; // w mikrosekundach
  f_NMI = 1000000 / T_NMI ; //  (Hz)
  Serial.print("f_NMI = ");
  Serial.print(f_NMI);
  Serial.println(" Hz ");
  delay(1000);
}

Teraz wystarczy podłączyć Pin8 Arduino z pinem siedemnastym Z80 (nie zapominamy o masie) i w monitorze portu szeregowego wyświetli się zmierzona częstotliwość lub "inf" zamiast liczby.
IMG_20200715_112423.jpg

Jeżeli liczba jest zbliżona do pięciuset (metoda pomiaru jest niedokładna), wszystko jest w porządku. Niestety tym sposobem nie zmierzymy CLK, bo jego częstotliwość jest zbyt duża. Jeżeli użyliśmy kwarc 8 MHz, CLK będzie bez znaczenia (w zależności od ustawienia J1 uzyskamy 2 lub 4 MHz). Jeżeli mamy kwarc 16 MHz, CLK 8 MHz może być za duże dla naszych elementów, więc sprawdźmy J1, czy jest w odpowiedniej pozycji.
f_NMI.png

Gdyby niefortunnie wyświetlił się napis "inf", musimy sprawdzić połączenia J2 i J3. Brak którejś z tych zworek może być powodem braku sygnału NMI. Jeżeli J2 lub J3 są w niewłaściwej pozycji, częstotliwość NMI będzie różna od "500". Jeżeli mamy 250 Hz (kwarc 8 MHz) lub 1000 Hz (kwarc 16 MHz), zmieńmy położenie J2. Jeżeli wartość jest "od czapy", przestawmy J3. Zakładam, że używamy CD4518, ale w przeciwnym wypadku będzie zupełnie podobnie (kwarce 8,192 lub 16,384)
Dokładną regulację częstotliwości zrobimy, gdy uruchomimy cały komputer.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."
A. Einstein

Awatar użytkownika
Zegar
User
User
Posty: 316
Rejestracja: wtorek 02 lip 2019, 14:42

Re: [CA80]Jak uruchomić CA80 - poradnik dla początkujących.

Postautor: Zegar » niedziela 27 wrz 2020, 11:36

Czas na dokończenie uruchamiania...

Wspominałem o pomiarze częstotliwości multimetrem... Prawdopodobnie mierzony sygnał musi zmieniać polaryzację (przechodzić przez zero) - nie wiem na pewno, bo nie mam schematu miernika. Żeby spełnić ten warunek, wystarczy szeregowo połączyć kondensator - odfiltrować składową stałą.
NMI_pomiar.JPG

Wyświetliło się 0,496 kHz czyli 496 Hz. Wynik jest wiarygodny, bo od 3:30 do 10:00 zegar spóźnił się o około 5 sekund. Jaki zegar? Oczywiście systemowy w CA80.
CA80_prawie_gotowy.JPG

Kiedy zacząłem pisać ten "poradnik", zamierzałem zbudować cały CA na płytce stykowej, którą kupiłem specjalnie w tym celu. Jednak po przemyśleniu zmieniłem plany. Nic bym nie osiągnął poza wątpliwą satysfakcją. Poszedłem więc w przeciwnym kierunku: zaprojektowałem nową płytkę. Oto efekt:
CA80mini.JPG

Jest to nowa wersja "starego" CA80. MIK290 jest dla mnie mniej wygodny - trudniej go modyfikować, za to ma lepszą klawiaturę, więc to wykorzystałem. Na płytce nie ma generatora CLK ani dzielnika NMI. CLK generuje "hybryda", która wpisuje do RAM oprogramowanie i ustawia czas oraz dba o prawidłowy reset Z80. NMI dostarczany jest na razie z płytki stykowej.

Jak widać wszystko da się uruchomić. Wystarczy trochę cierpliwości. Sczęście czy pech mają drugorzędne znaczenie - rzadko zdarza się wadliwy element. Najwięcej zależy od samokontroli, czyli sprawdzania poprawności kolejno wykonywanych czynności. Jeszcze brakuje kilku elementów, ale niedługo dotrą.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."
A. Einstein


Wróć do „Podstawy elektroniki - teoria i praktyka”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 5 gości