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:

https://gitlab.com/Zdenek6/pmd85_ps2_to_m602

2 comments

  • Libor L.A.

    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.

    • Zdeněk (maximalne.8u.cz)

      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é 😉

Přidat komentář

Vaše e-mailová adresa nebude zveřejněna.