1

Hej. Mam pytanie o sprzetowa nature atarowej klawiatury - chodzi mi dokladnie o to co sie dzieje miedzy ukladami U24 i U25 (scalaki 4051) a Pokeyem.

Domyslam sie ze zagadnienie to zostalo poruszone przez autora AKI, lecz znaleziona przeze mnie dokumentacja tegoz miedzymordzia byla... po niemiecku. Innymi slowy chcialbym sie dowiedziec jak Pokey obsluguje klawiature? Ciekawi mnie sposob odczytywania stanu klawiatury, opis pinow K0-K5, KR1 i KR2 Pokeya itp.

A moze ktos z Was ma dokladny opis AKI, moze jakies zrodla? Bede dzwieczny. :)

2

mam taka dokumentacje po angielsku z rysunkami z oscyloskopu co sie dzieje po nacisnieciu klawiszy itp. ale masz problem - jestem w trakcie przeprowadzki. daj znac na maila za jakies 2 tygodnie.

ps. w serwisowce atari na 100% widzialem tez cos takiego.

http://atari.pl/hsc/ad.php?i=1.

3

Bewu: układy 4051 pełnią funkcję multiplexera/demultiplexera - jeden z nich obsluguje kolumny matrycy , drugi wiersze. Z tego co pamiętam k0-k5 działają jako zwykły licznik , natomiast wejscia kr1 , kr2 powodują zatrzaśnięcie się stanu licznika i wpisanie go do $d209 - kbcode (z tym że kr1 chyba obsługuje noramlne klawisze, kr2 - shift,control itp.

4

Czyli - zebym wiedzial, ze dobrze rozumuje - cale osiem wejsc (K0-K5, KR1 i KR2) tworza bajt, ktory wystarczy odczytywac z jakas okreslona (dowolna) predkoscia, tak?

5

Nie do końca - K0,k1,k2,k3,k4,k5 - są wyjściami licznika który cały czas przełącza można powiedzieć (dzięki właśnie 4051) kolejne klawisze - zczytując przez Kr1,Kr2 czy jest w danej chwili naciśnięty czy nie (w chwili sprawdzenia naciśnięcia któregoś z klawiszy stan licznika zostaje przepisany do $d209).

Chcąc podać stan naciśniętego klawisz pokeyowi należałoby odpowiednio szybko próbkować wyjścia k0 i k5 - w chwili zmiany k5 z 1 na 0 - następuje przekręcenie licznika(czyli jest on zerowany) , natomiast zmiana k0 z 0 na 1 , i z 1 na 0 musiałaby np zwiększać licznik klawisza , sprawdzać go z kodami klawiatury i w odpowiednim czasie wysyłać na Kr1 i Kr2 stan 0 badz 1.

6

I to oznacza (a jest oczywiscie tak jak pisal swiety), ze w XEGS klawiatura moglaby byc polaczona z Atari 6-cio zylowym przewodem, jesli przeniesionoby do niej 4051 i dodano prosty uklad zliczajacy.
Zreszta, AKI jest wlasnie podpiete do POKEYa tylko za pomoca 4 pinow (plus masa i zasilanie).

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

7

Pecus napisał/a:

.. przeniesionoby do niej 4051.

w klawiaturze XEGS są  już dwa 4051 więc wystarczy tylko zamocować licznik.  6 żył, ale gniazdo i wtyczka 7-mio pinowe. Siódmy pin wtyczki zwarty z masą na rozpoznanie, że klawiatura jest podpieta.

A tak na poważnie to AKI działa dokładnie tak jak opisał Święty. Sygnał K0 jest zegarem dla licznika programowego, przy czym zegar ten ma oba aktywne zbocza czyli DOUBLE RATE (częstotliwość na mierniku 10khz a całość działa tak jakby było 20 khz). Natomiast K5 służy do zerowania tegoż  licznika. Licznik jest porównywany z kodem klawisza i przy zgodności na odpowiednich pinach PIC'a pojawia się zero, a na ATARI..... raczej nic bo cały cykl trzeba powtórzyć ze 3 razy tzn. licznik musi przekręcić się 3 razy. Wtedy OS  zinterpretuje to jako wciśnięcie klawisza, a nie zakłócenia na linii (drgania styków). Procedura w PIC'u odpowiedzialna za liczenie jest zrobiona na przerwaniach, których  źródłem są zmiany z 0 na 1 i 1 na 0 na odpowiednich pinach (odpada próbkowanie).

P.S. 10 khz wziąłem z sufitu, nie pamiętam ile jest naprawdę.

Pozdrawiam
DarkDK

8

O! I dzieki wielkie - teraz jestem w domu. Gdybym w trakcie testow nie dochodzil do zadnych rezultatow bede jeszcze pytal :)

9 Ostatnio edytowany przez swiety (2005-09-03 18:03:50)

Z tego co doczytałem w Pdfie do pokeya to licznik działa co 1 linie rastra czyli liczy z częstotliwością 15625 Hz. Co do testowania klawiatury to w pokeyu jest cos takiego jak state-machine do obsługi klawiatury - najpierw licznik sprawdza który klawisz jest naciśnięty , potem jescze raz próbkuje i porównuje wyniki , następnie procedura debouncing jeszcze raz sprawdza licznik więc zgadzałoby się to że pokey musi mieć 3 razy pod rząd wystawiony kod klawisza zanim go zaakceptuje.Nie analizowałem dokładnie jak to się dzieje ale tak to jakoś jest.
A o próbkowaniu k0,k5 to było jedynie dla przykładu- w praktyce musiałoby się to odbywać na przerwaniach chcąc żeby procek mógł robić coś innego - np dekowodać transmisję z keyboardu do pc.

Co do kr2 to obsługuje klawisze SHIFT,CTRL,BRK - tu nie ma pollingu, oraz debouncingu więc kod klawisza wystarczy podać jedynie raz. (choć najbardziej sensownym rozwiazaniem jest podanie 3 razy)

10

Napisałem do xxl po dokumentację. Ufam że pośle
Zenon ten od SERIOUS'a