Welcome, Guest. Please login or register.


Author Topic: HID kezelés ReLoaded (Enter the RPi) (Read 24426 times)

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #105 on: 2018.November.02. 22:06:59 »

Valamint szerintem azon érdemes volna elgondolkodni, hogy kell -e egyáltalán az a letiltogatás oda ...

Lehet hogy a gyakorlatban letiltogatás nélkül is (csak a frissítéssel) elég jó eredmény lenne,
nem blokkolva az EP oldali megszakítást ...

Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #106 on: 2018.November.02. 22:12:23 »
Hmmm ... most megrendült a hitem az ENTER -es tesztem tökéletességében ...

Ugye most az ENTER -es tesztet nem köpi ki,

de ahogy a BASIC képernyőn gépelgetek, ill. mászkálok,

ilyen szemét karaktereket hagyogat / ír néha ...


Francba ...


Mondjuk ezt eddig nem csinálta, a főprogramtól lesz, csak akkor ezek szerint az ENTER teszt nem fed le minden szitut ...

Z80 System

Offline balagesz

  • EP user
  • *
  • Posts: 277
  • Country: hu
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #107 on: 2018.November.02. 22:14:36 »
Kell az a tiltás, mert ha a 4 bit felolvasása után esik be egy megszakítás, akkor miután visszatér belőle, még az előző állapot alapján fogja a főprogram frissíteni a kimeneti 8 bitet. De lehet hogy ez így már ismét lassú lesz, akkor valami egyéb megoldást kell nézni a frissítésre. Még gondolkozok.

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #108 on: 2018.November.02. 22:49:58 »
Quote
Kell az a tiltás,

Igazad van ...

Az előbbi kalamajka úgy tűnik csak azért volt, mert

- kiszedtem a tiltást ...
- és ráadásul továbbra is a főprogramban is az Y regisztert használtam (de átjavítva X -re is volt hibázás, csak kevesebb) ...


Szóval mégiscsak biztos teszt az ENTER -es teszt,
és az eddigi egyetlen stabil módszer ha van megszakítás letiltás a főprogramban lévő frissítéskor.


És akkor lehet, hogy a flag -ezős módszerrel is rossz lenne egyébként ...


Úgy értem a mostani kódban is csak 1 utasitás van a beolvasás és a kiírás között,
ott 2 helyen jöhet EP oldali megszakítás,

a tesztelős verzióban ez csak 1 hely lenne (mert nem lenne közte utasítás), de az az 1 hely az pont fele a 2 -nek ... :)

Szal az sem volna jó ...


Úgy tűnik teljesen biztos módszer kell,
hogy a főprogram soha ne ronthassa el semmilyen körülmények között
az EP oldali megszakítás által már elvégzetteket ...
« Last Edit: 2018.November.02. 22:56:05 by Z80System »
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #109 on: 2018.November.02. 22:57:58 »
De a letiltással együtt teljesen stabilnak tűnik ...

Gépelés is, ENTER teszt is ...


Csak sajnálom rá az időt ... elméletben ... :)

Z80 System

Offline balagesz

  • EP user
  • *
  • Posts: 277
  • Country: hu
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #110 on: 2018.November.02. 23:08:45 »
Csak sajnálom rá az időt ... elméletben ... :)

:-D A tesztedet átírtad az IN A,(0b5h)-s verzióra? (Az OUT utasítás nem számít.)

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #111 on: 2018.November.02. 23:22:26 »
Quote
:-D A tesztedet átírtad az IN A,(0b5h)-s verzióra? (Az OUT utasítás nem számít.)

Nem még ... :oops:

De csak nem abba halunk már bele ...

(Most billentyűzeteket tesztelek, de aztán csinálok olyan verziót is az ENTER tesztből ...)
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #112 on: 2018.November.02. 23:36:37 »

Na, Zozónak további megerősítés a sebességgel kapcsolatban.


Végigpróbáltam 4 teljesen különböző PS/2 billentyűzetet, 10 MHz Z80 frekivel, BAM megademóval.
A színuszos résszel, ahol a gyors menű van.

Azon múlik, hogy lehet -e egyet lépni a menüben vagy sem, hogy melyik billentyűzettel csinálom.

Ha elég nagy PS/2 clock frekin nyomja a billentyű az anyagot (egy ilyen PS/2 billentyűzetem van most csak),
akkor "simán" lépkedsz egyesével a menüben.
(Azért van az idézőjel, mert olyan rövid ideig nyomni a gombot, az már nem természetes. Az már pöckölgetés.)
De ha te a megfelelően gyors billentyűzeten pöckölgetsz, az pöckölgetés lesz (tud lenni) az EP oldalon is.

A másik három billentyűvel viszont (egyiken sem mértem ki a PS/2 clock frekit) ha megfeszülsz sem tudsz csak 1 -et lépni.
Akármennyire is pöckölöd, azokkal kettőt lép. (Ezek régi fajta PS/2 billentyűzetek, a gyors fajta, az egy újabb típus.)


Én most vettem pár ilyen modern mechanikus billentyűzetet, ezeknek "atomnagy" frekijüknek kell lenniük,
de ezek USB -sek, szóval majd csak akkor tudom kipróbálni őket, ha meglesz az RPi -s PS/2 kimenet,
ahol majd 100 KHz -el tolom a szószt ... Ott azt várom, hogy majd mindegyik pöccre megy ...
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #113 on: 2018.November.02. 23:42:38 »
Maga a PS/2 dekódolás meg úgy néz ki körülbelül "jó" lett.

A 4 kipróbált billentyűzet teljesen különböző nyelv és layout, van közte ISO es ANSI is.

Jól működött mindegyikkel (ami persze nem jelenti hogy 100 -ból nem lesz 20 amivel nem okés),
annyi a megfigyelés, hogy az ANSI layout -oknál ahol ugye nincs a "Z" mellett bal oldalon a "\" gomb,
ott nem tudsz gépelni "\" -t.

Ezt úgy lehet kiküszöbölni, hogy mivel EP -n az "1" gomb mellett balrol az "ESC" van,
de az "ESC" szerepét PC billentyűzeten átveszi a funkció sorban lévő "ESC",
ezért az "1" gomb mellett balról lévő gombot be kell állítsam az EP "\" gombjára
a normális "\" gombbal együtt.

Vagyis ha ANSI PC layout van, akkor a "\" gomb az "1" -es mellett lesz, nem a helyén (mert fizikailag ott nincs olyan gomb),
és normál ISO layout -oknál meg mindkét helyen lesz "\".

Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #114 on: 2018.November.02. 23:55:38 »
Akkor most a 10 MHz -es EP -men a PS/2 -es billentyűzetemmel átírom a tesztkódot direkt címekre ... :ds_icon_cheesygrin: :ds_icon_cheesygrin: :ds_icon_cheesygrin:
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #115 on: 2018.November.03. 00:20:54 »
Quote
:-D A tesztedet átírtad az IN A,(0b5h)-s verzióra? (Az OUT utasítás nem számít.)

Megírtam mind a 4 kombinációt, és végigteszteltem mind a (maradék) 3 kombinációt ...

Mindegyikben jó. :smt045 :smt045 :smt045
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #116 on: 2018.November.03. 01:12:55 »
Na, belehekkeltem azt a hianyzó billentyű mappingot is,

és azt hiszem, hogy most, hogy már minden klappol,

itt volna az ideje, ha egy kicsit beleolvasnék a PS/2 specifikációba ... :)


Ki tudja, hátha írnak abban is valami érdekeset a PS/2 szabványról ... :)

Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #117 on: 2018.November.03. 01:54:20 »
Na átolvastam a PS/2 specifikációt.

És megértettem, valójában miért is működik a kontrollerem "jól",
anélkül hogy valójában implementáltam volna az egész PS/2 protokolt ...

Először is én nem kezdeményezek kommunikációt az eszközzel,
csak elveszem tőle, amit ő ad, én nem osztogatok neki semmilyen parancsot.

Ezek a PS/2 eszközök (amelyik a szabvány szerint megy) alapvetően 3 fajta scan kód készlettel működnek,
és az alapértelmezett a 2. számú, én pedig arra írtam meg az értelmezőt.
Ha valamelyik billentyű ettől eltér, én nem állok neki veszekedni vele, átállítgatni, könyörögni neki,
akkor nem fog működni és kész. :)

Repeat rate -et nem állítok be, nekem igazából nem is kéne az ismétlés,
az oprendszerek különben is függetlenedtek már a billentyűkbe épített repeat rate paraméterektől,
ahogy az EXOS -nak is saját van.
Az alapértelmezett repeat rate hálistennek csak olyan 10X küld másodpercenként
(persze ha folyamatosan nyomnak 50 billentyűt, az ezért elég sok, ezt majd tesztelnem kell, hogy mit csinálok rá,
van -e sebességem kezelni ... :shock: ),
nem volna rossz végülis kikapcsolni, de egyenlőre hadd küldje, én csak eldobom és kész.

A PS/2 clock frekit még érdemes lenne állítgatni,
de korábbi hitemmel ellentétben azt nem lehet (szabvány szerint),
arról az eszköz maga dönthet, a host csak használja.

Egyszóval engem nem érdekel, ha ő elromlik (ne romoljon el),
nem érdekel semmi, csak a 2. kódtábla szerinti billentyű kódok.

Én meg nem küldök neki semmi extrát, nem kérek tőle semmi extrát.


Hát ezért működök ...

Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #118 on: 2018.November.03. 02:19:05 »
Jól van, úgy tűnik, hogy ennél a billentyűzetnél nem allergiás a sok billentyű egyszerre lenyomva tartására sem.

Elindítottam az EP -n egy olyan programot, ami olyan mint az ENTER -es teszt program,
csak bármit is olvas vissza a billentyűzet portról, nem lép ki a loop -ból, csak olvassa a következő sort.
(Mivel Z80 megszakítáasok le vannak tiltva, EP meleg reset -tel állítom le a PS/2 billentyűzetről.)

Ez tehát beterheli a vezérlőt az EP oldali megszakítással,
én pedig párhuzamosan rátenyerelek az összes billentyűre, amit csak elérek,
és nyomva tartom őket. (Reset billentyűket kivéve persze ...)

Ekkor a PS/2 billentyű is küldi az összes billentyűjét a vezérlőnek repeat rate -tel ismételve.

Nem tellett be a puffere, nem akadt ki, nem esett ki a szinkronból,
mikor megnyomom a reset billentyűt, korrektül melegreszeteli az EP -t ... :)


Még egy dolog azért lehet ... elképzelhető hogy ez nem egy N key rollover keyboard ...

PC billentyűzeteknél gyakori, hogy egyszerre csak néhány billentyűlenyomást tart nyilván párhuzamosan.
Ha ez is ilyen, akkor hiába tenyerelgetek, csak 3-6 max. 10 billentyűnek küldi az ismétléseit.

Na majd ha lesz az RPi -s PS/2 kimenet ... annyi billentyűt küldök át akkora frekvenciával,
amit csak akarok ... :)
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #119 on: 2018.November.03. 03:25:38 »
Na, ha valaki neadjisten úgy ébredne fel egy reggel,
hogy teljesen elment az esze,
és ő pedig PS/2 billentyűzetekkel akar EP -n gépelni,
az a következőket teheti:


1,

Valahonnan leakaszt egy Arduino Micro nevű AVR mikrovezérlő kártyát:

https://store.arduino.cc/arduino-micro

vagy annak kínai klónját nagyon olcsón (már rendeltem párat, de még nem teszteltem őket) :

https://www.ebay.com/itm/Arduino-Micro-ATmega32u4-5V-16MHZ-for-Arduino-Replace-Pro-Mini-Leonardo-R3-Nano/263218903608?hash=item3d4911ba38:g:ia8AAOSwzpFa4AMP:rk:13:pf:0


Bármelyiket is veszi az ember, fontos, hogy az 5V -os verzió legyen, ne pedig a 3.3V -os.

2,

Valahonnan rittyent az ember magának egy Linux rendszert, akár virtuális gépen, akár valami kütyün,
de én komoly mondom hallottam már olyan elvetemültekről, akik a Linux -ot natívban is rakják desktop vasakra,
de én ettől elhatárolódom kérem ... :)

Ha valaki végképp nem akar magának egy szütyöri kis Linux -ot se rittyenteni,
az írjon magának bárhol máshol build script -eket, mert én csak a Linux -osakat írogatom.

3,

Pakolja fel a Linuxra az AVR Libc nevű dolgot:

https://www.nongnu.org/avr-libc/

A vonatkozó csomag menedzselőkkel fel lehet rakni, nem kell a weboldalrol semmit szöszölni.
Ennek majd biztos lesznek dependenciái, már nem emlékszem miket húz be, AVR fordítót, ilyesmit.

4,

Futtassa le a csatolmányban felrakot build script -et, az készít neki egy .hex állományt,
amit a szintén mellékelt flash script -el fel tud tölteni USB -n az Arduino -jára.

4.1,
Ha valaki 10 MHz -es EP -n is használni akarja a PS/2 vezérlőt,
akkor a build után, de még a flash előtt a .hex állományt meg kell hekkelni úgy,
hogy az EP oldali megszakítás kódja legyen bemásolva az interrupt vektor táblába.
(Ez a .hex állomány első sorában lesz ... :))

4.2,
(De akinek egyébként derogál ez az egész fordítgatási bohózat,
az használhatja a csomagban található .hex állományt,
ami már meg van patch -elve 10 MHz -re is. :))

5,

Kötögesse össze az Arduino megfelelő lábait az EP alaplap
és a PS/2 anya csatlakozó megfelelő pontjaival.
(Aki nem szereti a forráskódot, annak van egy wiring.txt is,
de ahhoz is kelleni fog némi türelem ... :))

Itt van hozzá egy rajz is:

[ Guests cannot view attachments ]

6,

Csatlakoztatni egy PS/2 -es billentyűt a PS/2 anyához,
és bekapcsolni az EP -t.


És a progi:
« Last Edit: 2018.November.03. 12:24:33 by Z80System »
Z80 System