Welcome, Guest. Please login or register.


Author Topic: HID kezelés Arduino -val (Read 74762 times)

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: HW készítés Arduino-val
« Reply #285 on: 2014.October.15. 20:38:54 »
Majd ha lgb még meg is mondja a hiányzó dolgokat a boxsoft<->EP kommunikációról,

Mi hianyzik meg? Angol topic-ban leirtam, tobbet en se tudok rola :) Azzal a tudassal irtam az JSep mouse emulaciot, ami lathatoan muxik, tehat tul nagy hiba nem lehet az elmeletemben :) Amugy en Zozo altal nagylelkuen hozzam vagott disasm reszletbol hamoztam ki, hogy hogyan mukodik, nem volt nagy dolog, 10 perc nezegetes kellett, mert az elejen nagyon el voltam tajolodva ...

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14735
  • Country: hu
    • http://enterprise.iko.hu/
Re: HW készítés Arduino-val
« Reply #286 on: 2014.October.15. 21:00:16 »
Valami olyanra gondolok, hogy 1-re állítja a B7 x. bitjét, aztán vár x milliszekundumot, beolvassa a 4 bitet B6-ró, stb...

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #287 on: 2014.October.15. 21:18:09 »
Quote
Mi hianyzik meg?

Hát az hiányzik egyrészt, hogy melyik joystick irányon van melyik bit a 4 közül,
vagyis melyik b5 -os biten van melyik bit az aktuális 4 bites infóból,

másrészt (ami még előzőnél is fontosabb lehet) hogy van -e valami szinkron vagy jelzőbit,
amit az EP küld kifele, hogy jelezze, hogy egy 2 bájtos (16 bites) egér üzenet MELYIK 4 bitjét kéri éppen a joystik irányokon ?

Zozo szerint ez úgy működik, hogy már a mouse.xr indulásakor rá kell legyen dugva az illesztő az EP -re,
így az illesztő mindjárt az első 4 bites csomag igényt el tudja kapni, tudja hogy az az első csomag,
és szépen körbe körbe iterálja a 4 csomagot, mindíg a soron következőre váltva egy strobe jelkor,

de ebből az következik, ha a mouse.xr elindulása után dugjuk rá az EP -re az illesztőt, akkor lehet hogy az EP (mouse.xr) épp a 3. négy bites csomagot kéri a 16 bitből,
de az illesztőnek ez még csak az első strobe, erre ő az első 4 bitet fogja odaadni az aktuális 16 bitből ...

Szóval van -e ilyen szinkron, vagy nincse ?
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #288 on: 2014.October.15. 21:20:08 »
Quote
Valami olyanra gondolok, hogy 1-re állítja a B7 x. bitjét, aztán vár x milliszekundumot, beolvassa a 4 bitet B6-ró, stb...

Ja, full ezt beszéltük angolul is, meg is értettem, csak nem akarom elhinni,
hogy olyan az EP<->boxsoft kommunikáció, hogy egyszer valahogy elcsúsznak (pld. később dug rá, mint indul mouse.xr),
oszt annyi, indíthatod újra, rádugott illesztővel ...

Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #289 on: 2014.October.15. 21:26:10 »
Quote
közben párhuzamosan gondolkodok a "billentyűzet egérről" is,

Azon az IC lábon, melynek valami futó éle mutatja majd az illesztőnek, hogy kiírtak valamit a b5 portra,
az a jel olyankor is jelez, amikor ugyanazt az értéket írták ki a b5 portra (megint) mint ami már rajta volt,
vagy csak akkor, ha megváltozik az érték a b5 porton ?

(Mert ha mindíg jelez akkor strobe jelnek is lehet használni, ha meg csak változáskor, akkor 2 billentyűzet soros egér beolvasás kell a "billentyű egérhez".)
« Last Edit: 2014.October.15. 21:37:36 by Z80System »
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #290 on: 2014.October.16. 00:30:05 »
Na ezek meglettek:

Quote
- kitalálni melyik portokat használom majd az AVR -ből, milyen funkciókkal az egyes biteken ...
- kitalálni a portok kivezetései melyik lábon vannak az AVR -en és melyiken az arduino micro kártyán ...
- utánanézni, hogy tud -e az ATmega32u4 akkor sok megszakítást is, vagy csak 4 -et ...

Sikerült úgy összeállítsam a biteket a portokon, hogy egy porton belül (8 bites a port) csak ugyanolyan típusú adat legyen,
tehát csak bemenet, csak kimenet, csak megszakítás, vagy ilyenek ... ráadásul a kimenet kitölti a 8 bitet ...

Szóval csak egész bájtos írásokkal olvasásokkal kell törődjek, és egy írással olvasással csak egy asm utasítás kell törődjön,
nem kell egy érték bitjeit 26 helyen kezeljem majd, 26 írással vagy olvasással.


Szóval eddig lehetett kb. húzni ... következő alkalommal már heggesztenem kell a drótokat, írni rá a kódot ... :)

A lehetőségek elméleti lattolgatásán és a tervezgetésen túl vagyunk ...


(Ha péntekig nem jön meg a billentyűzetem, akkor elmegyek és veszek egy 700 forintos PS/2 -es bill. -t az A4Team -nél, aztán ha megjött a rendes, akkor eldobom ... :) Lényeg hogy a PS/2 billentyűzettel fogom kezdeni. Remélem mire kész lesz, addigra a custom mouse.xr témában valaki dob egy megoldást, és mehet azzal majd a PS/2 egér folytatás ...)
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #291 on: 2014.October.17. 11:34:34 »
Juhú. Utolsó nap, utolsó órájában megjött a billentyű is ... Ma lesz billenytű, spanyol scart meg pár competition pro is ...
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #292 on: 2014.October.17. 15:09:27 »
És ittvan megjött kunkori ...

hát ... khm ... khm ... ez sem az a billentyűzet lesz amit sokáig fogok emlegetni,
nincs az az élmény, mint annál a billentyűnél, amit még a szuperturbó EP -mhez kaptam,
de mindenesetre legalább a vezérlőt csinálhatom vele és nem kellett vegyek plusszban egy még ennél is vacakabbat ...
Z80 System

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14735
  • Country: hu
    • http://enterprise.iko.hu/
Re: HW készítés Arduino-val
« Reply #293 on: 2014.October.17. 15:15:36 »
nincs az az élmény, mint annál a billentyűnél, amit még a szuperturbó EP -mhez kaptam,
A mikrókapcsolókra vágysz? Az manapság a 30-40000 forintos extra gamer billentyűzetekben kapható. Minden más fólia, rajta a gumbigyó, ahogy EP-ben is.

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #294 on: 2014.October.17. 15:26:00 »
Quote
A mikrókapcsolókra vágysz? Az manapság a 30-40000 forintos extra gamer billentyűzetekben kapható. Minden más fólia, rajta a gumbigyó, ahogy EP-ben is.

Ja, végsősoron persze hogy arra vágyok, de egyenlőre az 50K -s billtyűket nem engedtem meg még magamnak,
reméljük eljön még azoknak is az ideje ...

De most ennél egyenlőre beértem volna egy síma fólia billentyűvel, amin kényelmes a gépelés, mint a RÉGI logitech 350 -en vagy ilyesmin ...
Na ez nem olyan ... ez ilyen "szűk" gombos, atombénaság ...

És persze legyen EU angol, fekete, szép állapotban és PS/2 -t is tudjon értelem szerűen ... ezekkel nincs is baj.

Csak gépelni nem jó rajta ... :)
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #295 on: 2014.October.18. 14:01:48 »
Egy valami ilyen kényelmességű billentyűt akartam volna, mint ez:

http://www.edigital.hu/Vezetekes_billentyuzet/Logitech_DeLuxe_250_OEM_fekete_billentyuzet-p28069.html
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #296 on: 2014.October.18. 14:04:57 »
Durva, hogy régen ilyenekkel mit kellet szenvedni,
ma meg csak kiválasztom milyen kell, oszt klikk:

http://www.argep.hu/trend/MAGY/Magyar-billentyuezet-matrica.html
« Last Edit: 2014.October.18. 15:17:24 by Z80System »
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #297 on: 2014.October.18. 14:07:03 »
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #298 on: 2014.October.18. 14:28:46 »
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #299 on: 2014.October.19. 03:02:17 »
Ó bakkerkám ... :)


Na, gondoltam ma este megírom a progit, holnap reggel ráforrasztom azt a pár szál drótot, aztán délután már csak a billentyű mappolásokat lövögetem befele ... :)

Ehhez képest annyit sikerült elérnem, hogy sikerült végre egy megszakítást kiváltanom ... :oops:


Először gyorsan felszórtam a cuccra 3 ledet (azért pont annyit, mert teljesen különálló regisztereken, bitezgetések nélkül 3 láb van jelenleg szabadon),
három színben, mégpedig debug célokra, mert okos fejemmel rájöttem, hogy oké hogy kidobtam az arduino framework -öt, és raw avr-libc -re tértem át,
hogy az arduino ne kezelgessen ott nekem megszakításokat a fícsőreihez, de ezzel kidobtam pld. a serial logging fícsőrt is, úgyhogy max akkor lehet logolni,
ha beletervezem a kütyübe, és persze meg is valósítom ... mert ugye az arduino az az eszközön kezel egy slave usb virtual serial portot ...

Na szóval ledekkel fogok debuggolni, most egyenlőre hárommal. (Ha nagyon muszáj, szöszöléssel felmehetek akár 8 -ig is.)
Ezzel nem is lett volna galiba.


Na akkor élesszünk be egy assembly megszakot ... hát ehhez ugye el kellett olvasni mindenfélét, assembly -ről, megszakról (mind avr-libc, mind hardveres oldalról), meg miegyébről ...

Aztán bepötyögtem és nem szakított ...

Ugye maga a megszakítási láb az egy bemenet (mer én arra állítottam), felhúzóellenállással (mert az kell szinte mindenhova, de a PS/2 -nek biztosan, és ráadásul a teszthez különösen jó volt ha nem lebegdez összevissza), és erre van még rákapcsolva egy lefutó élfigyelő megszakítás, az is azért mert az kell a PS/2 -nek.

A felhúzó ellenállás miatt azt gondolom nyugottan tapperolhatom a drótot, meg érintgethetem a földhoz, ha szakítani akarok. Hát megszakadtam, de ez nem szakadt meg ...

Magát a magasat (amíg nem kötöm le dróttal a földhöz) mérem a lábon 4V formájában, tehát a felhúzás végzi a dolgát.

De mikor letüskézem a földhöz, akkor se szakad meg.

Persze gondoltam mindenféle fordítási, linkelési, akármilyen hibákra, nem teljesen agyondokumentált az avr-libc megszak vektor kezelése ...

De a gond nem magában a megszak vektorban lesz, inkább a megszak engedélyezések, maszk beállítások, request flag törlések körül ...

Végülis összevissza próbálkozással sikerült eredményt elérnem, de mintha nem működne teljesen atombiztosan, az meg ugye semmire nem jó ... :(


Szóval az van, hogy van egy global megszak flag, egy megszakítás vektoronkénti(típusonkénti, forrásonkénti) megszak flag, és van a legtöbbhöz még egy ilyen megszak igény cache flag is, és akkor még a forrás típusától függő paraméterezhetőség ...

És én azt kísérletezgettem ki, hogy ha a megszak igény cache portot (indián nevén: EIFR) törlöm egy írással (doksi szerint írással törlöm a megfelelő bitet), akkor hiába tunkolom a kábelt a föld sínbe, nem lesz megszak.

Ha nullát írok ki rá (vagyis írom, de nullával, nem 1 -gyel, ahogy a doksi mondja), akkor azonnal lesz megszak. Tehát anélkül, hogy a lebegő (ne felejtsük a felhúzó ellenállást) drótot beletolnám a föld sínbe. Egyedül akkor nem lesz rögtön megszak, ha a drótot még indulás előtt csatlakoztatom a földhöz. Ebben az esetben csak akkor lesz a megszak, mikor kihúzom a drótot. Ezt mondjuk betudhatom valami pergési dolognak, mert ugye a megszaknak a lefutó élen kéne sípolnia ...

Ez a nulla írós módszer egyébként megegyezik azzal, mintha egyáltalán nem írnék erre az EIFR portra semmit.

Na és van még egy harmadik eset is, mikor először 1 -et írok rá, de közvetlen utána 0 -át. Na ez az eset működik a leginkább úgy ahogy elképzeltem,
amig nem dugom rá, addig nem fütyül, ha meg hozzáérintem, akkor fütyül a megszak ... Csak itt meg az van, hogy ha úgy indítom, hogy le van dugva induláskor,
akkor mikor kihúzom nem kezd el megszakítani (ilyenkor hol van a pergés?), és van néha hogy még akkor sem ha visszaérintem először, hanem csak a második hozzáérintésre lesz a megszak ... :)

Szóval nem igazán tudom mi ez ...
Z80 System