Konference: SAPI-1 a československé mikropočítače
Od: | Martin Lukasek |
Datum: | 15.6.2013 10:09 |
Předmět: | RE: RE: klavesnice |
Ahoj,
scan kody z PS/2 jsou osmibitove, start+paritu+stop pouzij jen na zajisteni spravneho prijeti, pak Ti staci tech 8 bitu. Data jdou postupne od nejnizsiho bitu.
START – D0 – D1 – D2 – D3 – D4 – D5 – D6 – D7 – PARITY – STOP
Scan kodu je vice sad. Standardne se pouziva Set 2. Najdes ho napr. tady http://www.computer-engineering.org/ps2keyboard/scancodes2.html, pekny popis komunikace je tady http://www.computer-engineering.org/ps2protocol/ nebo tady http://proton.ucting.udg.mx/~mariocc/cap10.pdf a ja asi nejvic pouzival http://retired.beyondlogic.org/keyboard/keybrd.htm.
„A“ by melo posilatscan kod 1C. C7 a 438 mi zni jako bitove ozrcadlene a navic C7 zinvertovane, 438 je pak se start stop i paritou. Ale to dost zalezi, jak jsou udelane ty rutiny. Nevim na co jak pouzivam spozdovai smycky. Ja mam interrupt na hodinach a prectu, coje na datach a nekm to soupnu, smitec. Az je to cele, strci se to do bufferu a rict si o to pak musi program, co chce znak z klavesnice.
V priloze mas zdrojaci i schame, ale otazka zni, zda cizi zdrojaci nejsou vic matouci, nez si to napsat znovu. Ja vysel z nejakych existujicich knihoven, ale pak jsem tam musel udelal tolik zmen a uprav, ze bych si to ted urcite napsal znovu sam, ale uz se mi to nechce predelavat, kdyz to slape.
Krasny den
Martin
From: Jiri Biba (sapi tu byla ta zakroucena vec pandora.cz) [mailto:unive.nb tu byla ta zakroucena vec volny.cz]
Sent: Saturday, June 15, 2013 12:39 AM
To: Konference "SAPI-1 a československé mikropočítače"
Subject: Re: RE: klavesnice
Importance: Low
Tak jsem koukal na ten převodník PS2 na Sapi a narazil jsem na záhadu s kódovací tabulkou. Jak známo, scan kód PS2 klávesnice je jedno až vícebytovej a každej byte sestává z série 11 bitů, tedy 11 pulsů hodin, ke kterejm jsou přidaný bity kódu na datovým drátu. První bit je start, pak je 8 bitu dat, pak parita a stop. Scan kódy jsou popsaný v tabulkách formátem 0XXX hex a je do nich zahrnutý kromě dat i parita, start a stop bit. U toho převodníku se příjem scan kódu startuje start bitem, kterej se ale zahodí, pak se slízne 8 bitů, pak parita a stop bit, který se taky oboje zahodí. Takže výsledek je pouze 8 bitů kódu. Porovnával jsem PS2 tabulku popsanou 11 bitama a příjmovou tabulku převodníku popsanou 8 bitama. No a narazil jsem na to, že pro stejnej znak si tabulky neodpovídají.
Třeba scan kód pro A je 438hex. V převodníku je ale C7 hex. Rozkreslil jsem si to po bitech a na nic jsem dlouho nemohl přijít. I když jsem odmazal start, paritu a! stop, zbytek byl stále rozdílný. Pak jsem si nějak všiml, že se obojí liší směrem čtení, tedy PS2 má první , tedy start bit na časový ose vpravo, kdežto převodník ho má vlevo a ještě je rozdíl v inverzi dat. Odzkoušel jsem to pro několik znaků a je to vždy stejný. Budu se do toho muset víc ponořit, abych přišel na to, proč to tak je.
Taky jsem koukal do softu převodníku a řekl bych, že předěláním na výstup pro Sapi se soft ještě hodně zjednoduší vykucháním obsluhy LCD displeje a navíc několikanásobně zrychlí, v obsluze displeje je hromada zpožďovacích smyček, nejdelší skoro 0,4s.
Jirka
---------------------
sapi tu byla ta zakroucena vec pandora.cz
Konference o SAPI-1
---
POZOR! Provoz systému Pandora.cz bude k 30. listopadu 2013 ukončen.
Více informací: http://goo.gl/b99cI
Ostatní příspěvky vlákna:
[2013/1 (16)] [2013/2 (90)] [2013/3 (37)] [2013/4 (48)] [2013/5 (36)] [2013/6 (128)] [2013/7 (27)] [2013/9 (29)] [2013/10 (64)] [2013/11 (63)]