Welcome, Guest. Please login or register.


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

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #90 on: 2018.November.02. 15:32:49 »
10 MHz ... a billentyű hang sem a megszokott
A billentyűhangot szerintem meg lehet csinálni mélyebbre.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline balagesz

  • EP user
  • *
  • Posts: 277
  • Country: hu
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #91 on: 2018.November.02. 15:56:09 »
Az 1 dolog, hogy ez EP oldalról jön egy akár 1 MHz -es nagyságú megszakítás, amit villámgyorsan ki kell szolgálni.
De hát jön a PS/2 oldalról is egy (jóval kisebb, általában 10 KHz - 30 KHz esetleg 100 KHz körüli megszak),
amit ha nem is olyan gyorsan, de azért észre kell venni, és kezelni kell ...

Ez még szerintem nem főprogram kategória ... hogy főprogramból pollozzam a PS/2 órajelet ...

Pedig... :) Ha a másik megszakítás előbb esik be, amire ha ritkán is, de lesz alkalom, akkor az megnyújtja az EP-s megszakítás reakcióidejét. Egyrészt a fent említett +5 órajelciklussal, amihez még hozzájön az, ameddig a SEI érvényre is jut. Az összesen akár lehet vagy 8 órajel... :oops: Még akkor is, ha a másik IT rutinnal is eljátszod azt, hogy a SEI-t (vagy a komplett rutint) ugyanúgy a belépési pontra rakod.

Így az INT0 meg fogja tudni szakítani az INT1(3) -et, míg fordítva nem igaz.

Ez még jó is lenne, ha azt a +8 órajelciklust elviselné az EP-re reagálás. Elviseli? ;) A programod amúgy most mit is csinál? Egyrészt reagál az EP-re, másrészt kezeli a PS/2 portot. Ezen kívül? A PS/2 kezelésén kívül a kapott adatokkal annyira kevés feladat van, hogy az simán belefér a bill. felől jövő bitek kezelése közé időben. Ha csak nem akarsz ott is valami nagyot trükközni.

A portot nem is láttam, asse tom létezik -e, nincs belőle kivezetés ...
B -port az egyetlen összefüggő 8 bit, az kell a billentyűzet sornak ...
C- portból 2 bit van, azon is 2 SMD led lóg a lapon gyárilag ...
D -port az teljes, de az alsó 4 bitjére tették a 4 hardver megszakítást, amiből nekem 2 kell, szal ott sem szabad az alsó 4 bit ...
E -portból 2 bitet hagytak csak meg szintén ...
F -porton is csak a felső 4 és az alsó 2 van kivezetve ...

"A" port ezen a tokon nincs. A "B" teljes, a "C"-ből csak 2 van kivezetve, a "D" teljes, az "E"-ből 2, az "F"-ből meg 6 van. Bár, ahogy a blokkvázlatot nézem, az "F"-nek van köze a "D"-hez meg a "B"-hez is, de hogy mi, azt most nincs türelmem kikeresni. :) Ezért is hátrány ezeknek a "kész" paneleknek a használata, ha valamire valamelyik láb el van használva, akkor így járás van.

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #92 on: 2018.November.02. 16:31:07 »
Quote
A programod amúgy most mit is csinál?

Feldolgozza a PS/2 bejövő bitjeit, és beállítja az EP billentyű mátrix -ot, hogy az EP megszakítás vihesse.

(Ha sebességileg egyben leszek, akkor még majd azt is meg kell oldania, hogy frissítse a kimeneti billentyűzet sort akkor is,
ha EP -megszak épp nem érkezett, de megváltozott az épp aktuális sor.)

Mindezt úgy kéne csinálja, hogy ne maradjon le soha egy PS/2 bitről sem ...
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #93 on: 2018.November.02. 16:33:10 »
És ami még nehezebb, valahogy meg kéne oldani, hogy egy beérkező EP megszak után a főprogram ne frissítse vissza a régebbi billentyű sort,
amit az EP megszak épp megváltoztatott ...

És ezt persze lehetőleg megszakítás letiltás nélkül ... nem triviális ...
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #94 on: 2018.November.02. 16:34:34 »
De egyenlőre sajnos még azzal is meg vagyok lőve,
hogy a megszak vektort módosítsam ...

Ugyanis azt nem lehet runtime, mert a program memóriában van ...

Csak compile time lehet, az AVR-GCC -ben meg mintha nem nagyon gondoltak volna erre ...
(Még nem találtam meg ...)

Z80 System

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1291
  • Country: hu
  • Stray cat from Commodore alley
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #95 on: 2018.November.02. 17:58:09 »
De egyenlőre sajnos még azzal is meg vagyok lőve,
hogy a megszak vektort módosítsam ...

Ugyanis azt nem lehet runtime, mert a program memóriában van ...

Csak compile time lehet, az AVR-GCC -ben meg mintha nem nagyon gondoltak volna erre ...
(Még nem találtam meg ...)
Azt nem azért nem lehet, mert Harvard architektúrájú az AVR?

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #96 on: 2018.November.02. 18:15:19 »
Quote
Azt nem azért nem lehet, mert Harvard architektúrájú az AVR?

Gőzöm nincs mi az ...

Lényeg hogy van ez a megszakítás vektor, ami compile time áll elő,
pontosabban linking time, és ott van az AVR -be feltöltendő "bináris" (HEX) állomány legelején ...

Az AVR flash -elése meg csak kívülről történhet, nem tudja át flash -elni magát, azt írták.

Magyarul nem fogod a kódterületet módosítgatni.


Vagyis nekem fordítási időben kell megoldanom, de úgy tűnik erre nem adtak kiskaput, hanem csak az std C library módosításával érhetném el,
hogy ne jmp -k legyenek a megszak vektorban, hanem tetszőleges kód.


Gondoltam kézzel ráhekkelem a HEX file -ra, de abban meg soronként checksum van ... :)

Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #97 on: 2018.November.02. 18:29:28 »
Na de sebaj, a neten van Intel hex checksum calculator, úgyhogy megoldottam azzal a kézzel hekkelést ... :)

Szóval most van a rendes kód, ami még ugrótáblával fordul le,
az is működik, csak kicsit lassabb ugye ...

És ha akarok egy gyors build -et, akkor feltöltés előtt a hex file első sorában felülmásolok 8 bájtot,
és a sor végén átírom a checksum -ot ... :)

Na és mit kapunk ebből ? :)


:smt041 :smt026 :ds_icon_cheesygrin:   Megy a cucc 10 MHz -en !   :smt041 :smt026 :ds_icon_cheesygrin:


(Legalábbis eddig még nem lépett ki az ENTER -es tesztem, akármeddig is nyomtam ...
éjszakára lehet rateszek valamit hogy nyomja reggelig ... :))


balagesz a kiraly !
« Last Edit: 2018.November.02. 18:43:54 by Z80System »
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #98 on: 2018.November.02. 19:43:05 »
Na, összeszereltem megint, imádkozva hogy még utána is működjön,
és ne szakítsak az összeszerelés végére szét mindent benne.

De működött hála istennek:



Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #99 on: 2018.November.02. 19:45:22 »
Úgyhogy most ha minden igaz jön végre az a fázis,
amiben végre nem lesz szerelés,
hanem csak az AVR kódját kalapálom össze hogy minden klappoljon rajta.

Eddig ugye a sebességen vergődtem, az úgy tűnik, mostanra jó lett,
még 10 MHz -es Z80 -nál is:

[ Guests cannot view attachments ]


Nem lép ki ... :)
« Last Edit: 2018.November.02. 20:11:17 by Z80System »
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #100 on: 2018.November.02. 20:58:32 »
Na jó,

Az elmúlt 1 órában rajta volt a forrasztó ón az ENTER -en, és nem lépett ki ... :)
(Csak mikor most levettem róla ... :))

Majd éjszakára még rajta hagyom, de még ha ki is lépne, az se nagyon számítana talán (legalábbis nekem) ...


Úgy értem, nagyságrendileg másodpercenként 1 milliószor kérte most el az EP a billentyűsorokat az AVR -től,
egy órán keresztül, és egyszer sem hibázott ... ezt szerintem nevezhetjük már egy jó hiba aránynak ... :)


Most még belehekkelem, hogy főprogramban is frissüljön a billentyűzet sor,
meg megpróbálok kitalálni valami jó alapértelmezett billentyűzet konfigurációt
(ugye itt beégetett billentyűzet összerendelés van, az nincs megoldva,
hogy EP oldalról, mondjuk file -ból lehessen konfigurálni a vezérlőt,
csak flash -eléssel, USB porton keresztül lehet módosítani),

és aztán kész is van ... :)


Mehetek Linux -ra mindenféle HID eszközöket olvasni,
azokat összemixelni valamiféle nagy globális virtuális HID eszközzé,
és PS/2 kimenetet valósítani meg neki GPIO -n keresztül.

Hardveresen még nem tudom összerakni,
mert a jelszint konverterek az RPi és a PS/2 bemenet közé még nem érkeztek meg,

de hát nem lesz az sem öt perc, míg a fenti program előáll ...
« Last Edit: 2018.November.02. 21:06:55 by Z80System »
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #101 on: 2018.November.02. 21:05:08 »
És most üt meg a guta ... :smt010 :smt011 :smt013


Rájöttem hogy megint szedhetem szét az egész cuccot ...

Ugyanis az előbb szó volt ugyan róla, hogy 12 bajtos helyet hagyok ki az EP megszakítás kódjanak az interrupt vektor táblában,
de aztán úgy gondoltam, mivel úgyis csak 8 bájt, elég lesz neki a 8 bájt hely is, és ezért az INT1 -ről csak INT2 -re költöztettem át a drótot ...

De most jövök rá, hogy a főprogram és EP megszakítás szinkronizálásához kéne az EP megszaknak egy flag -et állítania,
miután kiírta a módosított billentyűzet sort ... amire a főprogram tudna figyelni ...

De ehhez most nincs helyem ... :) Ehhez át kell költözni az INT2 -nek az INT3 -ra ... :evil:
Z80 System

Offline balagesz

  • EP user
  • *
  • Posts: 277
  • Country: hu
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #102 on: 2018.November.02. 21:15:40 »
No, jó hírek! :)

És most üt meg a guta ... :smt010 :smt011 :smt013

Még mielőtt szétbombázod... :) Megmaradt végül a PS/2 IT-d is? Mert ha azt a késleltetést elviseli, akkor talán ennyi lenne a főprogramos frissítés:

Code: [Select]
  CLI
  IN   YL,PINF
  LD   YL,Y
  OUT  DDRB,YL
  SEI

Ezt a rutint minden táblázatfrissítés után lefuttatod, akkor kb. jó is lesz. Ha nem, akkor van értelme tovább gondolkozni az algoritmuson.

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #103 on: 2018.November.02. 21:44:28 »
Quote
Ezt a rutint minden táblázatfrissítés után lefuttatod

Hát igen ... azt a ronda CLI/SEI párost akartam volna a flag -gel kiküszöbölni ...

Mondjuk az sem lett volna 100% -os, mert hiába vizsgáltam volna a főprogramban a flag -et
közvetlenül a főprogramban lévő kiírás előtti utasításban,
az ugrás és a kiírás között elvben lehettet volna EP megszakítás ...
De azért az szerintem elég ritka lett volna,
hogy emiatt a főprogram mégis visszaír korábbi, már érvénytelen sort ...

A letiltogatós módszerhez nem kell a flag, valóban,
de akkor meg be van blokkolva az EP megszakítás ...

Fene tudja melyik ujjamba harapjak ... :)


Na kipróbálom ...

Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HID kezelés ReLoaded (Enter the RPi)
« Reply #104 on: 2018.November.02. 22:04:31 »
Érdekes eredmény ...

Ha beteszem a letiltogatós verziójú főprogramos frissítést,
és nem teszem bele az interrupt vektor táblázat hekkelést,
hanem hagyom az ugrást benne,

akkor (gépelni ugyan lehet EXOS -sal),
de az ENTER -es teszt programom azonnal kivágja, hogy ez sz**.

Tehát ez sokkal rosszabb helyzet, mintha nem lenne benne a főprogramban a frissítés.


De ha berakom a főprogramos frissítés mellé az interrupt vektor hekkelést is
(ami ugye elvben csak 3 szaros órajel),

akkor viszont simán megy az ENTER -es teszt, nem tér vissza ...


Szóval interrupt vektor hekkeléssel meg mintha eszre sem venné ...


Ki érti ezt ...
Z80 System