
PS/2 myš k PMD85
Rodina programů, které podporují myš 602, se pomalu rozrůstá. Protože sám takovou myšku nevlastním (a manipulace s ní asi nebude žádný med), udělal jsem si převodník pro připojení klasické PS/2 myši k aplikačnímu konektoru.
Od začátku jsem chtěl dodržet tyto cíle:
- převodník musí být kompatibilní s doposud vytvořenými programy (Funny Fruits a Miny fungují bezvadně)
- co nejjednodušší konstrukce (takže jen jeden čip)
- převodník generuje impulsy, jejichž počet i doba trvání odpovídá pohybu myši (narozdíl od jiných převodníků, které impulsy nenatahuje)
Schéma zapojení
Převodník je celý napsán v assembleru čipu ATTiny2313, taktovaným interním oscilátorem na 8MHz. Využívá se hardwarový UART pro příjem dat – proto musí být PS/2 konektor připojen na porty PD0 (RXD) a PD2 (XCK), odesílání příkazů do myši se děje softwarovou rutinkou.
K datové sběrnici péemdéčka se připojuje přes rezistory 1k, neboť detekovat, kdy se z portu čte a kdy ne, a podle toho přepínat PORTB do výstupního režimu, by bylo asi časově náročné, ne-li nemožné (navíc je čtení z portu přerušeno VIDEO signálem). Datový port je tak pořád ve výstupním režimu a rezistory brání tvrdé kolizi při výstupu na aplikační port.
K převodníku mám připojen jumper „Mode“, zatím nemá význam, ale ještě zvažuji, že by se dala k PMD připojit (přes redukci) myš POLY16, jejíž výstupní paket je podobný myšce na PS/2. Typ myši by se tak volil tímto jumperem.
Každému embedded programátoru je jasné, že bez blikátka to není ono, proto zde je LEDka.
Napájení převodníku i myši se bere s aplikačního konektoru PMD.

Práce s převodníkem
K převodníku se musí myš připojit ještě před zapnutím. Pokud dojde za provozu k odpojení myši a jejímu připojení, myš už nebude fungovat (možná by pomohlo tlačítko pro reset procesoru). Po zapnutí se totiž musí provést sekvence příkazů pro inicializaci myšky. Během této inicializace rychle bliká LED a úspěšná inicializace je indikovaná 0,5 sekundovým rozsvícením.
Myš při každém pohybu/stisku tlačítka odešle bajtový paket. Jeho příjem je indikován opět krátkým rozsvícením LED. Pokud někdo nemá rád diskotéku, tato funkce se dá vypnout/zapnout následovně:
- stiskne se prostřední tlačítko myši
- během stisknutého prostředního tlačítka se krátce stiskne levé tlačítko
- LED indikuje krátkým (vypnuto) nebo dlouhým (zapnuto) rozsvícením aktuální nastavení
Nastavení se ukládá do EEPROM, proto se zapamatuje i po vypnutí počítače.
Převodník jsem zkoušel na dvou myškách – starší Logitech M-SBF a úplně novou Genius DX-110. Po resetu a defaultním nastavení jezdí každá různě rychle, proto je možné v převodníku nastavit rychlost myši ve 3 stupních:
- stiskne se prostřední tlačítko myši
- během stisknutého prostředního tlačítka se krátce stiskne pravé tlačítko
- LED blikne 1 – 3 krát, podle nastaveného stupně
Nastavení rychlosti se opět ukládá do EEPROM.
Realizace
Pro tak primitivní zapojení jsem provedl návrh v KiCADu – snažil jsem se o to, aby bylo možné převodník sestavit na jednostranné desce (abych si to vzápětí doma vyleptal). Nakonec jsou na desce propojky, ale pouze k připojení ISP programátoru. Místo konektoru jsem použil lištu s dlouhými piny, takže deska je nacvaknutá přímo do konektoru. Asi to pro samotný konektor není blahodárné, lepší by bylo kabelové propojení na původní konektor. Konektor PS/2 s LEDkou tak nenápadně vykukuje za počítačem (viz vyfocený prototyp v galerii).
Zdrojové soubory projektu
Zdrojový soubor pro ATTiny2313, přeložený hex poslední verze, schéma zapojení i DPS jsou volně ke stažení na Gitlabu:
Ty ses nějak rozjel! Beru to jako hozenou rukavici pro třetí myšoidní hru. Jinak klobouk dolů. Tohle určitě potěší ty, kteří chtějí připojit myš k PMD-85 a zase až tak neřeší historickou formu.
Já jsem paralelní myši ATARI ST1 a 3WN16605 připojil taky natvrdo přes odpory. Tu ATARI myš jsem připojoval přes 2k2 a 3WN16605 dokonce přes 3k3 a jede to bez problémů. Něco jsem počítal ohledně vstupních proudů MHB8286 a matně si vzpomínám, že 3k3 bylo takové rozumné maximum.
Asi by to jelo i při vyšší hodnotě rezistoru, když je to nacvaknuté hned na konektoru a MH8286 číhá za rohem. Paralelně k tomu by mohlo být i MIF (vlastně mě svrbí za stodvacátým mozkovým závitem to zkombinovat, byť bych opět narušil onu historickou formu).
A ty myšoidní hry ještě budou zajímavé 😉