OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 28.03.2024, 13:16

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 25 ]  Přejít na stránku 1, 2  Další
Autor Zpráva
 Předmět příspěvku: Myš pro SAM COUPE
PříspěvekNapsal: 30.07.2014, 00:01 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1611
Has thanked: 31 times
Been thanked: 357 times
Jak že to má samík s myškou ? Původně autor SAM COUPE zamýšlel připojení jednoduchého myšího interface (nebo snad samotné myši), který by při každé změně pohybu či stisku tlačítka aktivoval přerušení CPU a na portu FFFE by se načítaly potřebné stavy. Každopádně se taková myš do výroby nikdy nedostala, ale tehdejší český HW guru Richard Haramule se pokoušel o realizaci myšoidního interface fungujícího na tomto principu. Prototyp nebyl složitý a připojovala se k tomu Amiga myš. Čili podle změny clonek myši se generoval směr jako u joysticku.
http://velesoft.speccy.cz/samcoupe/sammouse/sammouse-original/sammouse_new_prototype_top.jpg
Projekt ale nebyl dost dotažený do konce a hlavně nemělo pak vůbec cenu se s tím zabývat, protože se objevila jiná lepší myš....

Od původního plánu se nakonec ustoupilo (myš co generuje přerušení by totiž mohla pěkně rozhodit časování jiných programů) a objevila se úplně jinak vyřešená myška. Šlo o složitější (možná až moc) interface složený z hromady čítačů. Připojovala se k němu opět Amiga myš a žádné přerušení nebylo třeba generovat. CPU si mohl kdykoli vyčíst souřadnice pro osu X a Y i stavy tlačítek. Každá osa má vlastní 12ti bitový čítač, který udává relativní souřadnice, čili velikost odchylky od posledního načtení souřadnic. Funkčně to je podobné jako K-MOUSE na ZX, akorát s tím rozdílem, ze K-MOUSE má absolutní souřadnice a SAM MOUSE relativní (což je lepší). SAM MOUSE interface nebyl žádnej drobeček, ale pořádná krabice :-)
http://velesoft.speccy.cz/samcoupe/sammouse/sammouse-original/sammouse-top-hires.jpg
http://velesoft.speccy.cz/samcoupe/sammouse/sammouse-original/sammouse-original_interface1.jpg

Až po mnoha letech se objevila náhrada od Colina Piggota:
Obrázek
http://samcoupe.com/hardmouse.htm

A někdy v době nástupu spektrácké K-MOUSE jsem si také postavil SAM MOUSE, tentokrát ale s trochu menším počtem součástek:
Obrázek
Obrázek
Deska byla nakreslená hodně narychlo... no ale fungovalo to :-)

A tedˇtu mám verzi SAM MOUSE TURBO 2014, která je funkčně úplně stejná, akorát má plošný spoj vytvarovaný speciálně do plastové krabičky z TME. Joystick konektor je nyní součástí desky, celé je to učesané a menší. Neplánuju žádnou výrobu desek, ale kdokoli se toho může ujmout.. :-) 3D náhledy v příloze.
Takto vypadá krabička: http://www.tme.eu/cz/katalog/#search=z-76&s_field=accuracy&s_order=DESC (je více barev)
Obrázek
Nejde o žádnou novinku, jen o slušně předelanou desku.


Přílohy:
sammouse9d2_bottom.jpg
sammouse9d2_bottom.jpg [ 134.28 KiB | Zobrazeno 15219 krát ]
sammouse9d2_top.jpg
sammouse9d2_top.jpg [ 126.83 KiB | Zobrazeno 15219 krát ]

_________________
http://velesoft.speccy.cz/
Nahoru
 Profil  
 
 Předmět příspěvku: Myš pro SAM Coupé
PříspěvekNapsal: 30.07.2014, 11:18 
Offline
Pan Generální

Registrován: 19.07.2013, 15:54
Příspěvky: 2723
Has thanked: 144 times
Been thanked: 422 times
Planuji pro sebe a kamarady udelat 10 kusu desek. Kdo ma zajem tak mi napiste SZ. Zatim to vypada ze se to udela na zelene desce a bude to pocinovane. Jedna bude stat cca 50 Kc a postovne bude take nekde okolo 50 Kc.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Myš pro SAM COUPE
PříspěvekNapsal: 30.07.2014, 11:56 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1611
Has thanked: 31 times
Been thanked: 357 times
Vzhledem k tomu, ze deska byla upravena ze starsi funkcni verze, da se predpokladat, ze by fungovat mela. Jsou tam sice jen designove upravy, ale nemohu rucit za to, ze tam nebude bug. Vse je kontrolovane nekolikrat a zda se to v poradku, akorat bez zaruky...
Ja mam zajem jen o jeden plosnak ale osazovat si to nebudu. Pokud bys mi dodal jednu kompletni sadu soucastek s deskou, prvni kus ti mohu ozivit, nafotit, nastavit CPLD a poslat zpet.(na desce jsou dva nevyuzite switche, takze by se ve zdrojaku CPLD dalo neco pridat... A pic 16F84 by sel nahradit PICem 16F627 nebo 628,ktere jsou dostupnejsi). Lze pouzit ale i puvodni firmware beze zmen a nechat to jak to je.

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Myš pro SAM COUPE
PříspěvekNapsal: 30.07.2014, 17:43 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1611
Has thanked: 31 times
Been thanked: 357 times
SCjoe píše:
Citace:
by se ve zdrojaku CPLD dalo neco pridat

http://sam.speccy.cz/mouse/mouse_wheel_support.txt


Udelal jsi dobre, zes to info schoval. Clovek nikdy nevi, kdy se to muze hodit ;-) V textu mas chybku, 12bit citace maji maximum nikoli 2048 ale 4096. Tato 12hodnota se deli na pulku a uplne horni bit by mel urcovat smer pohybu. V pripade osy X je to 2048 bodu vlevo a nebo 2048 vpravo.

Takze nejspis vznikne druhy mirne upraveny firmware SAM COUPE s podporou koleckove mysi. Kdo bude chtit original, pouzije stary firmware. S novym firmware by mel take behat vsechen stavajici mysi software (pokud nejakej sikula nepouzil nestandartni a blbe napsanej driver...). A mam takove tuseni, ze by to slo udelat i prepinatelne, resp. podpora konecka by sla tlacitkem vypnout a tvarilo by se to jako original mys (akorat by pouzivala vzdy jen 8bitove citace). V CPLD uz tehdy nebylo moc mista na pridani dalsich citacu. 8bitu na relativni souradnici je podle me dost, ale pro jistotu bych mozna udelal verzi rekneme s 9-10 bitovym citacem pro osy X a Y.

Kdyz to vezmu logicky:
- sam mouse pri cteni portu FFFE vraci cislo udavajici o kolik "kroku" se mys vychylila od posledniho cteni portu mysi. Po vycteni vsech deviti mysich portu se hodnoty odchylek vynuluji a zacina se pocitat zase od nuly. Vraci to podobne hodnoty jako PC mys.
- je tedy jasne, ze s kazdym spustenim softwaroveho driveru mysi dostaneme jen info o tom, jakym smerem a o kolik se mys posunula.
- driver pro mys se vola bezne pod prerusenim = 50x za vterinu, ale nektere hry (tusim LEGEND OF ESHAN) ho volaji i casteji.
- a jsme u toho : o kolik bodu se takova mys asi posune za padesatinu vteriny ? Samozrejme zalezi na DPI pouzite PC mysi ale rekl bych, zde jen o desitky bodu a sam mouse ma na to pripraveny 12ti bitovy citac, kde muze byt odchylka az 4096 bodu, to je prece uplne zbytecne prehnane. Ano, v pripade, ze by se mouse driver volal mene casto, rekneme 5x za vterinu, furt se pri posunu mysi muzeme dostavat na radove max.par set bodu. Prave proto si myslim, ze by v pohode vsechen existujici mysi software behal i s mensim citacem, rekneme s odchylkou jen do 256,512 nebo 1024 bodu. A mozna by se dala maximalni hranice umele omezit na dany rozsah, pak by nemohl nastat problem s pretecenim citace z maxima na nulu.. Je to podobne jako u K-MOUSE.

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Myš pro SAM COUPE
PříspěvekNapsal: 30.07.2014, 18:28 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1611
Has thanked: 31 times
Been thanked: 357 times
SCjoe píše:
Oproti prvnim verzim TurboIF je zde jeste jedno zasadni vylepseni: cursorovy joystick.


Ano. Ma to plnohodnotny kurzor joystick ale fire funguje jen jako klavesa CNTRL. Mys je u SAMa na stejnem portu, ze ktereho se cte stav ruzzorovych klaves. Akorat vyuziva jisteho zpozdeni, nez se aktivuje. To znamena, kdyz prectu rychle za sebou stejny port FFFE, prvni dve cteni se mi vraci normalni stav kurorovych klaves, pokud ale tento port cteme opravdu rychle za sebou, tak od tretiho precteni portu bude mys vracet vlastni data. Celkem 9x za sebou je nutne rychle nacitat port FFFE, aby se vycetly vsechny potrebne informace ze sam mouse.

To byl jen uvod jak to funguje. SAM mouse ma zabudovany i joystick port a ten se tvari jako kurzorove klavesy. Delam to tak, ze posilam stav smeru a tlacitka joysticku primo na datovku v dobe kdy CPU cte port FFFE a zrovna neni aktivovana mys. Takze jen prvni dve precteni portu jsou viditelne smery joysticku jako kurzorove klavesy. Pro dalsi cteni se zapne mys a joystick se vypne.

Bohuzel pri pohledu na schema sama je videt, ze mysi konektor u sama je spojeny s vystupem z klavesnicove membrany. Nevim, koho to napadlo, ale je to trochu pitomost. Vystup z membrany ma jen odporovy pull-up a stiskem klavesy projde diodou tvrda log.0. Sam mouse take musi vracet jen log.0, takze jak mys tak klavesnice maji stejnou priporitu a data se michaji. To znamena, ze kdyz pridrzim stisknutou kurzorovou klavesu, bude spatne fungovat mouse driver, protoze dany bit uvidi stale v log.0 a nepozna spolehlive jestli ta nula pochazi z klavesnice nebo z mysi. Na to plati jedine - pokud pouzivate software pro mys, nepouzivejte k ovladani take kurzorove klavesy.

Pokud by vznikl novy firmware pro mouse interface, tak bych se snazil pridat i moznost autodetekce.

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Myš pro SAM COUPE
PříspěvekNapsal: 31.07.2014, 13:32 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1611
Has thanked: 31 times
Been thanked: 357 times
Busy píše:
VELESOFT píše:
pri cteni portu FFFE vraci cislo udavajici o kolik "kroku" se mys vychylila od posledniho cteni portu mysi. Po vycteni vsech deviti mysich portu se hodnoty odchylek vynuluji a zacina se pocitat zase od nuly. Vraci to podobne hodnoty jako PC mys.
Ako je riesena atomickost citania odchyliek ?
1. Stav citaca odchylky je 255 (lo=255,hi=0). Precitam z portu nizsi bajt (255), nasledne sa citac inkremetne (lo=0,hi=1) a sw v dalsom citani precita vyssi bajt (1). A mysli si, ze od posledneho citania preslo 511 krokov.
2. Sw si precita odchylky z osmych portov. Nasledne sa uz precitane citace inkrementuju (uzivatel zrovna v tejto mikrosekunde pohol mysou), sw precita posledny deviaty port, citace sa vynuluju a informacia o pohybe uzivatela bude tym padom stratena.


V momente kdy prestes vsechny mysi porty, dojde ke zresetovani citacu. Ale ano, kazda osa se cte na 3x, nez dostaneme kompletni hodnotu. Pokud v prubehu cteni dojde k posunu mysi a zaroven k preteceni citacu, pak nacteme uplne spatnou hodnotu. Napada me jen jedine dobre reseni a tim je zastavit funkci citacu v dobe, kdy se mouse interface aktivuje a je pripravena na vraceni dat. Jinak je to uz jen o software...

A ta nejlepsi metoda by byla - v momente, kdy zacneme cist mysi porty, mouse interface aktualni stavy osy X a Y ulozi do zaloznich registru a CPU bude cist souradnice jen z nich. Vzdy by byla jistota, ze nacteme platne souradnice. Citace by pritom mohly nerusene fungovat dal. Jenze tahle metoda by vyzadovala asi uz trochu vetsi CPLD. Ikdyz zase pokud v nove verzi pouziju jen 8bitove citace, tak pri prvnim cteni bych vratil 4bity aktualnich dat a zaroven bych do 4bitoveho zalozniho registru ulozil nizsi 4 bity, ktere mohu vratit pozdeji. A tim by se to vyresilo take.

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Myš pro SAM COUPE
PříspěvekNapsal: 31.07.2014, 16:35 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1611
Has thanked: 31 times
Been thanked: 357 times
Nevite nekdo, kde by se dal sehnat plne zapojeny kabel s velkym konektorem DIN 8 ? Nasel jsem jen hodne drahe kabely v cene od 400 do 800 Kc. Pritom neni slozite si koupit za par kodun kus kabelu a za desetikorunu konektor DIN8 v GME a zapajet si to sam. Jen sjem si rikal, ze by bylo lepsi pouzit uz nejaký hotovy lisovany kabel vcelku.

Dale jsem zjistil, ze v TME prodavaji konektory DIN8, ale ve trech variantach, kde se lisi uhel, pod kterym jsou piny na konektoru rozmisteny. Maji tam udane verze 240,262 nebo 270 stupnu a ted vim uplny prd, kterej z nich bude do sam coupe pasovat. Leda koupit a pak vyzkouset...

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Myš pro SAM COUPE
PříspěvekNapsal: 31.07.2014, 17:15 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 12.05.2013, 19:23
Příspěvky: 1910
Bydliště: Vsetín
Has thanked: 517 times
Been thanked: 812 times
Podle mě to bude 262 stupňů. C64 pro video používá těch 270 stupňů a piny jsou ve tvaru podkovy (ten 2. konektor na obrázku).


Přílohy:
din-plug-types.png
din-plug-types.png [ 22.61 KiB | Zobrazeno 15075 krát ]

_________________
cs.speccy.cz, ondraspo186.8u.cz, zx-spectrum.cz
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Myš pro SAM Coupé
PříspěvekNapsal: 23.08.2014, 00:10 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1611
Has thanked: 31 times
Been thanked: 357 times
První kousek myšího interface je osazený. Zatím neodzkoušeno, musí se naprogramovat CPLD a PIC, ale k tomu se dostanu asi až v pondělí. Na první pohled tato deska nevypadá zrovna nějak elegantně, ale ty vystrčené konektory a vystouplá tlačítka jsou tam kvůli rozměrům plastové krabičky (tu zatím nemám).

Narazil jsem na pár problémů s místem při osazování. Jednak se nevejde precizní patice IC4 (ta co je přilepená k patici CPLD). Je nutné ji z boku trosku ubrousit smirkovym papirem, nebo ji vubec neosazovat. Dále kondíky jsou dost na těsno, doporučuju při osazování je nepájet nadoraz k desce, aby se s nima dalo hnout nepatrne do stany. A nebo je nahradit tantalama, to je nejlepší.


Přílohy:
IMGP9814.JPG
IMGP9814.JPG [ 161.18 KiB | Zobrazeno 14979 krát ]
IMGP9812.JPG
IMGP9812.JPG [ 155.83 KiB | Zobrazeno 14979 krát ]
IMGP9807.JPG
IMGP9807.JPG [ 166.33 KiB | Zobrazeno 14979 krát ]

_________________
http://velesoft.speccy.cz/
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Myš pro SAM Coupé
PříspěvekNapsal: 28.08.2014, 20:58 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1611
Has thanked: 31 times
Been thanked: 357 times
Po trošce trápení s převodem zdrojáku jsem nakonec úspěšně ořezal čítače z 12bitů na 8bitů. Ušetřilo se tím místo v CPLD a možná bude šance pro implementaci kolečka a dalších kravin... uvidíme.

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Myš pro SAM Coupé
PříspěvekNapsal: 29.08.2014, 11:02 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1611
Has thanked: 31 times
Been thanked: 357 times
Přidal jsem stabilizaci (záložní registry), která funguje takto:

- U originál sam mouse se čte každá osa (X a Y) celkem na 3x za sebou jako tři čtyřbitové čítače a teprve software je musí poskládat do kompletní 12bit hodnoty.
- Může ovšem nastat okamžik, kdy mezi prvním a třetím čtením zrovna pohnete myší a hodnoty v čítačích se změní. Pak už nebude načtena korektní hodnota, a kurzor myši může odskočit o dost velký kus. Šance, že se toto stane je hodně malá, ale je tu. Čím rychleji za sebou se mouse driver bude volat, tím větší šance je, že se chyba projeví.
- u tohoto nového firmware (ten co teď upravuju) se při čtení první 4bit hodnoty dané osy uloží stav všech čítačů do záložního registru a hodnoty se čtou už z jen z něj. Myš se může dál nerušeně pohybovat i v okamžiku čtení portů, ale mouse driver vždy načte jen hodnoty z okamžiku, kdy se začal číst první port osy.

Originální sam mouse i můj původní firmware fungují shodně a chyba se při čtení může projevit. Jestli se takhle chová i Colinova myš nevím.

Každopádně máme to už ošetřené, ale za cenu omezení velikosti odchylek v obou osách. Teď už jen musíme ověřit, jestli s tím nějaký software nebude mít problém. Softwarově tento rozdíl není detekovatelný ale jestli někdo volá mouse driver s dost velkým časovým odstupem (třeba jednou za 10 přerušení), mohl by kurzor při rychlejším pohybu myši odskočit (přeteče 8bit čítač).

Kolečko se budu pokoušet přidat, uvidíme.

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Myš pro SAM Coupé
PříspěvekNapsal: 29.08.2014, 18:53 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1611
Has thanked: 31 times
Been thanked: 357 times
Zkoušel jsem přidat podporu kolečka tak, aby se jeho stav dal číst jako 4bitový čítač udávající počet kroků od předchozího čtení myši. Jenže už se to do CPLD nevlezlo :-( Navíc když je přidá další (jedenáctý) port myši, software pro myš mi začal blbnout. Buď už bylo časování CPLD nestabilní, nebo s tím software prostě nepočítá. To jestě nohu ověřit.

Právě se mi podařilo rozchodit kolečko. Při otáčení kolečkem se emuluje stisk kurzorových kláves nahoru/dolů, ale jen na nepatrný okamžik a směr je čitelný pouze při prvním čtení portu myši (myš se čte celkem na 9x, z toho dvě první čtení je stav kurzorů). Při pootočení kolečka o jeden krok se vygeneruje 1x klik na kurzorovou klávesu. Editor SAM BASIC na takto krátký stisk normálně nereaguje, ale v basic programu je detekovatelný. Kdy by chtěl, měla by jít v basicu změnit proměnná pro citlivosti klávesnice, takže by teoreticky mohl i editor basicu na kolečko reagovat. Směr kolečka lze detekovat nejdříve po 100us, což je stejná doba, po které se resetují čítače sam mouse. Prakticky má ale smysl číst kompletní stav myši pod přeručením 50Hz. Podpora kolečka se dá do původního mouse driveru dopsat velice jednoduše. S každým voláním driveru lze přečíst jen směr otočení kolečka ale už ne poček kroků, o kolik se kolečko otočilo. Za vteřinu nikdo normální neotočí kolečko o víc jak 50 kroků. 50Hz volání driveru musí logicky stačit i na rychlé otáčení kolečka. V praxi to je ale složitější. SAM COUPE nemá žádný HW scroll ani textový režim, takže posun textu sladit s otáčením kolečka bude pro CPU trochu náročnější a s kolečkem nakonec budete muset otáčet pomaleji. Zdá se, že nový firmware pro sam mouse bych měl hotový. Jediné co jsem neimplementoval je podpora 4. a 5. tlačítka myši.

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Myš pro SAM Coupé
PříspěvekNapsal: 30.08.2014, 01:10 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1611
Has thanked: 31 times
Been thanked: 357 times
První betaverze firmware CPLD pro SAM MOUSE je v příloze. Zdá se to funkční.

- přidána plná podpora až pěti tlačítek myši. Jsou čitelné pěkně na jednom portu(bajtu), jako 5 bitů vedle sebe.
- podpora kolečka (emuluje kurzory). Bude potřeba pro kolečko napsat malý driver, ale jako bonus bude kolečko použitelné bez úprav i v některých hrách bez jakýchkoli úprav.
- po zapnutí je aktivován rozšířený režim zvaný extended ( 5 tlačítek + kolečko )
- tlačítko "EXTRA" na desce mouse interface slouží k nastavení vlastností: EXTRA+LEFT BUT.= přepíná mezi extended a originál režimem, EXTRA+RIGHT BUT.=prohození funkce levého a pravého tlačítka, EXTRA+MIDDLE BUT.=přepínání citlivosti/rychlosti myši (default turbo / 4x pomalejší)
- možnost osazení další ledky místo jumperu na desce - signalizuje rezim ORIGINAL/EXTENDED
- integrovaný stabilizátor čtených hodnot os X a Y (nemělo by se už stávat, že se načte nekorektní hodnota)
- 100% kompatibilita s originálem, software nemůže poznat rozdíl (tedy alespoň dokud v extended režimu nezačnete mačkat přidaná tlačítka).
- podpora joysticku fungujícího jako kurzorové klávesy+CNTRL (lze používat současně s myší)


Přílohy:
SAMMOUSE2014_CPLD_JED.zip [7.43 KiB]
556 krát

_________________
http://velesoft.speccy.cz/
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Myš pro SAM COUPE
PříspěvekNapsal: 31.08.2014, 17:55 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1611
Has thanked: 31 times
Been thanked: 357 times
SCjoe píše:
Citace:
by se ve zdrojaku CPLD dalo neco pridat

http://sam.speccy.cz/mouse/mouse_wheel_support.txt


Tak to vypadá, že bude i verze, co vrací směr kolečka na novém desátém portu. Ukázalo se, ze přidávání dalších portů nakonec ničemu nevadí. Kolečko se teď nehlásí jako kurzor, ale zcela odděleně na vlatním portu...

Zároveň jsem přisel na nějaké chybky vzniklé při návrhu desky, ale nejedná se o nic, co by ovlivňovalo funkci myši:
- ledka D2 "power" nefunguje, nemá totiž zapojenou zem. SMD odpor R6 (1k5) by se tedy neměl osazovat a místo něj na desku přidat klasický odpor zhruba 1k5 (klidně i 2k2), který krásně sedne do prokovů v desce :-)

- ledka D3 "rdmouse" je omylem otočená. Na potisku desky ale správná pozice ledky stejně není vidět. Měla by být otočena kulatou stěnou k joystick konektoru.

- dva spojené switche "SW1" jsou nepoužité a bude lepší je neosazovat. Do prokovu místo switche stejně přijde ten odpor od ledky power.

- intenzita ledky "rdmouse" (detekce software pro myš) je hrozně malá. Pokusím se to pořešit ve firmware CPLD...

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Myš pro SAM Coupé
PříspěvekNapsal: 31.08.2014, 21:16 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1611
Has thanked: 31 times
Been thanked: 357 times
Problém s nízkou intenzitou ledky RDMOUSE se pomocí CPLD nijak rozumně vyřešit nedá. Některý software prostě ledku rozsvítí hodně, jiný málo, nebo téměř vůbec. Buď se to řešit nebude, nebo vznikne řešení ve formě patche, který ledce prodlouží svit.

Co se samotného firmware CPLD týče, mám už hotovou novou verzi, která má opět možnost přepnutí mezi originál a novým režimem. V novém režimu je jeden port myši navic (místo 9x se čte myš 10x).

Originál režim:
- myš se čte na 9x, podpora tří tlačitek myši

Nový režim:
- myš se čte na 10x (ale softwarově je zpětně kompatibilní s existujícím software), podpora pěti tlačítek, podpora kolečka myši, možnost detekce kolečka.

Pokud by se někdy dělala druhá várka desek sam mouse, může se na desku přidat TL7705 k zajištění nerušeného svitu ledky a zároveň by se opravilo zapojení ledky "power". Ledky jsem tam dával jen pro případ potřeby, ale ve skutečnosti jsou všechny zbytečné. Power je hloupost detekovat, kdyz je to napajene z pocitace. Takze kdyz je zapnuty sam, jede i mouse interface. Led "extra" je umístěná u tlačítka extra s svítí jen při jeho stisku. Mohla by sice být ovládaná z CPLD, ale není tomu tak. Led "rdmouse" signalizuje kdy software čte porty myši. Tahle jediná ledka má rozumnou funkci, ale nutná není. Bez ledky "power" nemusíme osazovat ani ten přidavný odpor jak jsem psal.

V příloze posílám druhou verzi firmware s kolečkem na přidaném samostatném portu. Firmware je použitelný jak do mé staré verze SAM MOUSE, tak do této nové verze (bílá deska).

Dokumentace s infem o kolečku:

Kód:
SAM MOUSE 2014 - wheel support by Velesoft

The original SAM MOUSE interface can't support a wheel mouse (there are no free pins at the mouse
connector). But the SAM MOUSE TURBO supports a mouse with the PS/2 protocol, 5 buttons
and a wheel. All signals are linked and can be used. However a firmware in the
CPLD of the SAM MOUSE TURBO is based on the standard SAM MOUSE communication.

Original SAM MOUSE communication protocol (or SAM MOUSE 2014 in original mode)
------------------------------------------------------------------------------
reading 9 times the port #FFFE means CPU will read:
1) keyboard state
2) keyboard state
3) mouse buttons (three buttons + 1 bit unused/reserved)
4) X-AXIS counter (high 4 bits)
5) X-AXIS counter (middle 4 bits)
6) X-AXIS counter (low 4 bits)
7) Y-AXIS counter (high 4 bits)
8) Y-AXIS counter (middle 4 bits)
9) Y-AXIS counter (low 4 bits)

All 9 ports must be read during time 100ys.


New SAM MOUSE 2014 communication protocol
-----------------------------------------

reading 10 times the port #FFFE means CPU will read:
1) keyboard state
2) keyboard state
3) mouse buttons (5 buttons)
4) X-AXIS counter (high 4 bits)
5) X-AXIS counter (middle 4 bits)
6) X-AXIS counter (low 4 bits)
7) Y-AXIS counter (high 4 bits)
8) Y-AXIS counter (middle 4 bits)
9) Y-AXIS counter (low 4 bits)
10) mouse wheel counter (5 bit value)

MOUSE WHEEL DATA:
-----------------
D0 = log.0 - default / log.1 - move wheel UP or DOWN
D1 = log.1 - default / log.0 if detected wheel movement UP
D2 = log.1 - default / log.0 if detected wheel movement UP (duplicity)
D3 = log.1 - default / log.0 if detected wheel movement DOWN
D4 = log.1 - default / log.0 if detected wheel movement DOWN (duplicity)

This protocol returns 8bit counter for wheel (-128 to 127 but 12bit counters are emulated only)
and internal stabilisation of counter values.

The original SAM MOUSE uses counters for X and Y axis which are too big. Each counter has a
12bit value (2048 steps). I reduce counters to 8bit as in the KEMPSTON MOUSE for the Sinclair
ZX Spectrum (256 steps). High 4 bits of X and Y axis are unused and only (hardware)
emulated for a backward compatibility.


Detekce kolečka:
detekce by se měla provést tak, že provedete 2x za sebou HALT(pro jistotu kvůli korektní detekci), pak načteme 10x port #FFFE a sledujeme jen stav bitů D0-D4. Na desátém portu musí být vždy D0=0 (pokud se kolečko neotáčí) nebo je D0=1 (při otáčení kolečka) ale současně musí být vynulovaná jedna z dvojic D1+D2 nebo D3+D4. Pokud je tam něco jiného, nejde o kolečko myši, nebo uživatel drží nějakou kurzorovou klávesu,případně CNTRL. Detekce by se měla provést ve smyčce, kde se opakuje 1x HALT + 10x čteni FFFE + test desátého bajtu. Pokud projde 10x ok, pak je kolečko detekováno.

Práce s kolečkem:
Bity z desátého bajtu určují směr kolečka, podle kterého si můžeme softwarově čídit vlastní čítač(polohu/pozici).
LD A,byte10 ;A=desátý bajt načtený z myši
AND 31 ;ponecháme jen platná data
CP 30
RET Z ;pokud kolečko není otočeno, vrátíme se
CP 25
JR Z,WHEELUP ;pohyb kolečkem nahoru(od sebe)
CP 7
JR Z,WHEELDOWN ;pohyb kolečkem dolů(k sobě)
JR ERROR ;nalezena nekorektní hodnota = nejde o kolečko, nebo je držena kurzorová klávesa či CNTRL.

Rutiny WHEELUP a WHEELDOWN mohou jednoduše nastavovat pozici vlastního čítače...

WHEELDOWN:
LD A,(counter)
CP MAXIMUM
RET Z
INC A
LD (counter),A
RET

WHEELUP:
LD A,(counter)
CP MINIMUM
RET Z
DEC A
LD (counter),A
RET

Krokování kolečka je dost pomalé ve srovnání s rozlišením DPI optické myši. Pokud budete volat mouse driver a testovat kolečko každé přerušení, bohatě to stačí k detekci počtu kroků kolečka. SAM MOUSE si pamatuje poslední směr pootočení kolečka tak dlouho, dokud nezavoláte další mouse driver. A klidně mezi tím může být pauza 2 roky.


Přílohy:
SAMMOUSE2014_v2.zip [7.49 KiB]
596 krát

_________________
http://velesoft.speccy.cz/
Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 25 ]  Přejít na stránku 1, 2  Další

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 2 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz