Autonomiczna klawiatura do systemów prockowych
: niedziela 02 cze 2024, 22:39
Autonomiczna klawiatura do
systemów prockowych
Tworzę pewne urządzenie bazujące na „starożytnych” prockach, które będzie wymagało sporej liczby klawiszy. Dzisiaj to bierze się procka i w przerwaniach od czasu realizuje się obsługę takiej klawiatury. Jednak jak procek nie wyciąga 1 miliona instrukcji na sekundę, to takie podejście nosi znamiona nieliczenia się z jego możliwościami. Jak „nie kijem, to pałką” – można zrealizować obsługę sprzętową takowej klawiatury, gdzie układ jest w pełni autonomiczny i jedynie zgłasza przerwanie we właściwym momencie. Schemat to:
Generator na 555 stymuluje wszystko do pracy. Jego częstotliwość to około 5 kHz, która wstępnie jest podzielona przez 16 (U408 – 74LS161). Uzyskany sygnał taktujący (KCLK jako 5kHz / 16 = 312Hz) jest zliczany w dwóch licznikach synchronicznych (U402 i U403 – 72LS161) i służy do adresowania wierszy i kolumn w matrycowej klawiaturze (U404 – 74LS151 i U405 – 74LS138 i P401 jako przyłącze do matrycy przycisków). Adresowanie wierszy i kolumn „zużywa” kolejnych 64 impulsów, czyli 312Hz/64=4.8Hz – cała matryca jest obleciana około 5 razy na sekundę. W najgorszym przypadku może minąć 0.2 sek od naciśnięcia by ten fakt został wykryty.
Stan klawiszy jest skanowany przez 74LS151 (U404) i wchodzi on do rejestru przesuwającego o wejściu szeregowym i wyjściu równoległym 74LS164 (U406). Służy to do usuwania dzwonienia styków: jeżeli jest wciśnięty klawisz i zostanie on „namierzony” przez 74LS151 w parze z 74LS138, to na wyjściu 74LS151 będzie zero logiczne. Jeżeli stan naciśnięcia jest stabilny (przez 8 taktów zegarowych o F=5kHz), to na wyjściu 74LS164 będą same zera i ten stan jest wykrywany przez 8-bitowy komparator 74HCT521 (U407). Jeżeli stan jest zgodny (jest osiem zer), to na wyjściu komparatora jest zero i blokuje ono zliczanie dla licznika synchronicznego (U402 – 74LS161). Jak licznik U402 stoi, to U403 również nie liczy. Jednocześnie wyjście komparatora uruchamia wygenerowanie impulsu strobu (U410 – 74LS132 i okolice) dla rejestru wyjściowego 8212 (U401). Wpis do 8212 generuje sygnał przerwania ze stanem aktywnym jako zero logiczne. Jeżeli zachodzi potrzeba zastosowania w prockach intelowych, to niezbędny jest negator, gdyż intelki mają przerwanie stanem jedynki. Odczyt przez procka gasi przerwanie a sam układ czeka na zwolnienie przycisku. Zwolnienie przycisku to jedynki na wyjściu 74LS151, które wchodząc do rejestru przesuwającego 74LS164 poprzez komparator 74HCT521 „odpuszczą” licznikowi 74LS161 i ten będzie poszukiwał kolejnych naciśniętych klawiszy.
Całość „obejrzałem” 8-bitowym analizatorem logicznym,
gdzie pierwsze 4 sygnały to stan liczników obiegu (nie koniecznie w rosnącej kolejności bitów licznika). Kolejne to określone punkty układu kształtowania strobu.
Po rozciągnięciu czasowym:
i dokładniej, mamy impuls strobu do 8212 o długości 280µs.
W stanie poszukiwania naciśniętego klawisza, na wyświetlaczu „Data bus” jest lekka mgiełka.
Wciśnięcie przycisku, zatrzymuje zliczanie i wynik jest wyraźny:
i zgodny z operacją odczytu rejestru 8212.