Welcome, Guest. Please login or register.


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

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #330 on: 2014.October.21. 14:57:36 »
Quote
mely ráadásul nem is lesz 10MHz z80 kompatibilis 16 MHz -es AVR -en

Bár végülis ebben nem vagyok olyan biztos, mert a megszak elkezdődéséig csak 5 avr órajel telik el, akkor ott az ember gyorsan lerendezi a z80 -at (mondjuk további 5 avr orajel alatt)

és akkor még csak 10 avr orajelnel jarunk, es egy 1 mikroszekundum alatt 16 van belole, tehát tulajdonképp megválaszolni meg lehet a 10 MHz z80 -at is topprioritású megszakkal,

és akkor igaz hogy utána kiesik még 5 avr órajel a megszak visszatérésekor, de mivel a z80 -nak 11 órajel (10MHz z80 -nál az 1 mikroszekundum) alatt csak felelni kell tudni,

de valószínűleg nem tudja 11 órajel alatt a következő változását is megejteni a b5 porton, szóval mielőtt jön a következő EP megszak, a 11 z80 órajelen FELÜL lesz még több z80 órajelnyi idő, amíg nem tud jönni a következő EP megszak ... na ezen ciklusok alatt futhatna a másik két megszak és a főprogram ...

Szóval még az is lehet, hogy menni fog 10 MHz -es z80 -nal is ... :)
Z80 System

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: HW készítés Arduino-val
« Reply #331 on: 2014.October.21. 15:02:14 »
Na ezeket a "röhögve elbírjákat" inkább hagyjuk ...

Miert? A PS/2 max 30KHz clock-jat interrupt kezeles nelkul is kibirod azert egy pl 8MHz-en futo AVR-rel (ha meg kulso kvarc/orajel, akkor 16MHz-ig is lehet menni, vagy hat feljebb is, ha bator vagy, vagy olyan AVR-ed van). Ami kritikus az ugye a B5 portra megy a scan row select es hamar valaszolni kell (ez volt talan a 11 Z80 orajel ciklus adta ido? ez 8Mhz-en futo AVR szamara ugy 22, 16Mhz-es szamara meg 44, es ahogy mar kifejtettem, kb 4 utasitas hosszu interrupt handlerig le lehetne menni, amibe az azert belefer), kb az az a projectben ami a trukkos, ez magyaran ugye a RW0 leeso elere triggerelt AVR megszakitast jelenti.

Quote
Úgy látom te sem követed a dolgokat "túl szorosan", de igen pont ez az első allomás, ahova el akarunk jelenleg érkezni. Ezért nyúzom zozót a custom mouse.xr -miatt, de végülis nem eszik olyan forrón a kályhát, lesz még neki ideje reagálni a kérdéskörre egyenlőre úgy tűnik ... :)

Kovetem, csak olyan vagy mint en, tul sokat irsz :) Ez onkritika is volt, nem kell megsertodni :)

Quote
Annyi a különbség, hogy én nem főprogramból tervezem (jelenleg) a PS/2 kezelést sem, hanem 3 megszak lesz, melyek egymást is megszakíthatják, és a legmagasabb prioritású az EP megszak lesz természetesen (így azt már nem szakítja meg a másik kettő reményeim szerint).

Aha. Akkor a forprogram semmit nem csinal (na jo, ez koltoi tulzas volt azert, hogy "semmit"), mert minden megszakitasban lesz :) Bar mondjuk akkor nem kell vele foglalkozni, hogy varj az adott esemenyekre, hanem "adodik", az is igaz.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14747
  • Country: hu
    • http://enterprise.iko.hu/
Re: HW készítés Arduino-val
« Reply #332 on: 2014.October.21. 15:02:40 »
Csak, hogy idegesítselek: Z180-nál már csak 9 órajel :-D

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #333 on: 2014.October.21. 15:13:49 »
Quote
Miert?

Azért mert én is így nyitottam hogy "lazán, meg röhögve" meg C -ben, meg babám ... azt most ott tartok, hogy azt tervezgetem, hogy még a főprogramot is kénytelen leszek lehet assembly -ben megírni, és a 10MHz z80 még mindíg egy kérdés ...

Szóval mindez nem "röhögve" hanem pedig hekkelve ...

Quote
csak olyan vagy mint en, tul sokat irsz :)

Tévedés. Sokat kell írni. Olvasni is.

Quote
Akkor a forprogram semmit nem csinal

Szerintem meg az csinál majd "mindent". Épphogy a megszakok azok amik semmit nem csinálnak.

A két PS/2 megszak a felszólításra beolvas és lerak egy tömbbe +1 bitet, és semmi mást nem csinál.

Az EP megszak meg a felszólításra beolvas egy 4 bites inputot és egy tömbből válaszol rá egy 8 bites outputot, és semmi mást nem csinál.


És aztán lesz a főprogram, aki akár C -ben lesz írva, nem fog gyorsan sem időzítve futni, és loop -ban feldolgozza a 2 PS/2 megszak által tömbökbe tolt biteket és azok hatására állítja azt a tömböt, amiből az EP megszak felelget az EP -nek.

Ráadásul a loop -jában még ő is frissíti az output értéket az EP irányába, azzal a komótos sebességgel, amire képes lesz a loop -ja.

Harmadrészt ő fog felelni azért a magasszintű logikáért is, ami a testreszabást fogja végezni, meg ilyeneket.

Szóval sztm pont hogy a megszakok azok, akik "nem csinálnak semmit" ... :)
« Last Edit: 2014.October.21. 15:18:02 by Z80System »
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #334 on: 2014.October.21. 15:14:27 »
Quote
Csak, hogy idegesítselek: Z180-nál már csak 9 órajel :-D

Na, mostmár aztán télleg kezded kihúzni a gyufát ! :)
Z80 System

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: HW készítés Arduino-val
« Reply #335 on: 2014.October.21. 15:14:39 »
Bár végülis ebben nem vagyok olyan biztos, mert a megszak elkezdődéséig csak 5 avr órajel telik el, akkor ott az ember gyorsan lerendezi a z80 -at (mondjuk további 5 avr orajel alatt)

Hmm, nem tudom amugy (utana kene nezni vegre) hany orajelciklus AVR-en az interrupt kezeles pontosan. Emlekeim szerint 4, de ehhez hozzajon az, hogy az eppen futo utasitast elobb meg kell csinalnia, ami legjobb esetben 1, legrosszabb esetben talan 3 (?) orajel ciklus.

Quote
és akkor igaz hogy utána kiesik még 5 avr órajel a megszak visszatérésekor, de mivel a z80 -nak 11 órajel (10MHz z80 -nál az 1 mikroszekundum) alatt csak felelni kell tudni,

Hat az jo kerdes, hogy kiesik-e. Marmint Z80 szempontjabol. Ugyanis,  ugye "legrosszabb" esetet elkepzelve (bar ez nem realisztikus annyira szerintem, mert Z80 csak leteszi vhova az eredmenyt stb kozben, tehat mas opcode is van!), pl       OUT (0xB5),A  / IN A, (0xB5). Azaz OUT utan azonnal IN. Utana viszont kisse nehezkes lenne Z80 szamara azonnal (nincs masik opcode) kezdeni elolrol, mert csak le kell tarolni az eredmenyt, vagy eleve loop-ban kerdezi, miegymas. Amit el tudok kepzelni mint legrosszabb eset, amikor a fenti szekvencia folytatodik, az pl ez:

Code: ZiLOG Z80 Assembler
  1. LD C, 0xB5    ; port num
  2. LD  A, 0   ; scan row #0
  3. LD B , 1  ; scan row #1
  4. ... stb ...
  5. OUT (C),A
  6. IN A, (C)
  7. OUT (C), B
  8. IN B, (C)
  9. ... stb ...
  10. ; result A/B...stb..
  11.  

Ugye itt kerdeses, hogy ilyen valaha komolyan kell is, hogy ennyire "surrun" jon egymas utan. Azonban meg ha van is ilyen, azt se felejtsuk, hogy egy IN vagy OUT vegrehajtasa a Z80-nak messze nem egy orajelciklus, es azt is vizsgalni kell, hogy egy adott Z80 utasitason _belul_ mikor tortenik az aktualis I/O muvelet valojaban. Azaz AVR interrupt szintrol nezve, a valaszt mar pl beallitottuk (az ugy is marad) mielott meg eljutott volna a Z80 az IN -ig vagy legalabbis az IN azon "reszehez" amikor a valodi I/O zajlik. Igy lehet, hogy maga pl az IRET az AVR-n meg az IN "vege fele" lefut, igy mire a kovetkezo OUT azon reszehez erunk ahol Z80 kozli hogy I/O request van, az AVR mar vissza is tert a megszakitasbol.

Quote
de valószínűleg nem tudja 11 órajel alatt a következő változását is megejteni a b5 porton, szóval mielőtt jön a következő EP megszak, a 11 z80 órajelen FELÜL lesz még több z80 órajelnyi idő, amíg nem tud jönni a következő EP megszak ... na ezen ciklusok alatt futhatna a másik két megszak és a főprogram ...
Szóval még az is lehet, hogy menni fog 10 MHz -es z80 -nal is ... :)

Nem kizart :) Tigrian kodjat lehet optimakolni azert, bar egyes ilyen muveletek (lasd ejszakai leveleimet) kisse hajmeresztoek es mashol okozhatnak problemat (pl tobbi megszakitas hasznalatanak ellehetetlenedese, cserebe viszont 2 AVR orajelciklus megsporolasa).

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: HW készítés Arduino-val
« Reply #336 on: 2014.October.21. 15:42:30 »
Masik hulye otletem: EP-re tenni vmi custom csatlakozot. A gepen belul vmi primitiv AVR eleg lenne, egyeduli feladata fogadni a WR0 altal okozott interrupt-ot, es allat gyorsan valaszolni a B5 porton a kiirt ertek alapjan _ES_ pl a foprogramban csupan kommunikalni akar TTL szintu soros porton az EP csatijara kotott cuccal. Ez utobbira (amire azert pl +5V is ki lenne hozva tapnak) csatlakozhat barmi, pl egy masik kulso komolyabb USB-s MCU is, stb, az o feladata lenne konkretan a periferiakkal beszelni (legyen az PS/2 vagy USB stb), kbd layout-ot igazitani (a belso cuccra mar csak EP matrix poziciok alapjan menne uzenet hogy keyup keydown, stb). Ez latszolag tulbonyolitas, de ha meggondolod: a belso cucc programja egyszeru, remelhetoleg tobbe nem kell hozzanyulni stb, a gepen kivul meg lehet ganyolni, kesobb fejlettebb megoldast raakasztani (mondjuk eloszor csak PS/2 aztan USB), es ehhez nem kell mindig a gepre forrasztott cuccal szorakozni, lehet cserelni egyszeruen regi/uj megoldast pl teszt alatt, miegymas. A ket eszkoz kozotti kommunikacio nem visz hibat a rendszerbe (a kritikus B5 valtozas, ra regalas csak a belso MCU dolga szigoruan!), max ha 9600 baudon csinalja az ember a kulso kommunikaciot akkor erezheto delay lesz a taszt lenyomasa es annak realizalodasa kozott, de nyilvan azert nem 9600 baud-dal kene nyomni feltetlen. Csak hirtelen eszembe jutott, lehet, hulyeseg ...

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #337 on: 2014.October.21. 16:04:30 »
Hát ez már a plussz alkatrészes módszer, ami már majdnem mindegy akkor hogy egy másik mcu, vagy pedig egy dual port ram, vagy egyéb típusú dolog, amiket linkeltetek korábban ...

Ami miatt viszont mégis elgondolkodtató, az a kivezetett zsinórok száma ... ezeken az AVR -eken minimum 4 fajta busz/port van, amin keresztul hardveresen támogatva tudnak adatot cserélni, a soros porton kívül is ... szóval lenne hardveres, gyors, 2-4 érintkezős átviteli lehetősség épp elég.

És legrosszabb esetben 4(valami busz)+2(táp) = 6 kivezetett vezetékkel meg lehetne oldani.
Az azért sokkal kevesebb, mint a 8(key line)+4(key addr)+3(joy line)+1(key "megszak")+1(reset)+2(táp) = 19 drót.

A 6 vezetéket egy síma PS/2 csatin lehetne csatlakoztathatóvá tenni egy külső eszközzel ... és nem kéne valami 19 pólusú csatlakozó, meg széles szalagkábel ...

És nem kéne új ismeretlen elektronikákat sem beszerezni, csak venni +1 készre szerelt AVR lapot ... és akkor sebességkérdés is mindjárt megoldva ...

Ha meg már úgyis be kell forrasztani a drótokat, mindegy hogy beforrasztunk egy mini kis lapkát is, vagy sem ...

Nagyon szimpatikus ! :)
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #338 on: 2014.October.21. 16:15:54 »
Quote
a belso cuccra mar csak EP matrix poziciok alapjan menne uzenet hogy keyup keydown, stb)

Egész pontosan a belső cuccba nem kéne semilyen up/down uzenet,
az egy sima 16 bájtos tároló lenne, amiből végezné az EP frissítését,
és kívulről írni és olvasni engedné ezt a 16 bájtot.

persze 1-2 bájttal még lehetne több is, és akkor oda lehetne tenni speciális biteket, mint a reszet, joyok, vagy ilyesmi ...
Z80 System

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: HW készítés Arduino-val
« Reply #339 on: 2014.October.21. 16:23:24 »
Egész pontosan a belső cuccba nem kéne semilyen up/down uzenet,
az egy sima 16 bájtos tároló lenne, amiből végezné az EP frissítését,
és kívulről írni és olvasni engedné ezt a 16 bájtot.

persze 1-2 bájttal még lehetne több is, és akkor oda lehetne tenni speciális biteket, mint a reszet, joyok, vagy ilyesmi ...

Azt is lehet, csak ide tobb vezetek kell, meg specko alkatresz (pl DP RAM).

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #340 on: 2014.October.21. 16:29:51 »
Quote
Azt is lehet, csak ide tobb vezetek kell, meg specko alkatresz (pl DP RAM).

Nem, én a belső avr mcu -s dologról beszéltem.

Azt pontosítottam, hogy a 2 MCU közé nem kellenek magas szintű üzenetek, úgy mint up/down, mouse pos, ilyenek,
hanem a kommunikációjuk csak pár bájt írására olvasására kell szorítkozzon.

Az meg hogy belül azt a fix darab pár bájtot hogy értelmezi, az egyszer lefektethető, ahogy mondod, és nem kéne módosítani. Bill, egér, joy, reset, ilyesmi és kész.

Persze ha valaki akar egy újabb dolgot vele, akkor kell módosítani, de azt akkor is kéne, ha valami új drótot akarna kivezetni a belső MCU nélküli esetben ...

Szóval nekem továbbra is tetszik ...
Z80 System

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: HW készítés Arduino-val
« Reply #341 on: 2014.October.21. 16:38:59 »
Nem, én a belső avr mcu -s dologról beszéltem.

Azt pontosítottam, hogy a 2 MCU közé nem kellenek magas szintű üzenetek, úgy mint up/down, mouse pos, ilyenek,
hanem a kommunikációjuk csak pár bájt írására olvasására kell szorítkozzon.

Akkor nem ugyanarrol beszelunk, mert nekem kulso kis dobozkakent jobban tetszene az egyik "fele" akkor meg fontos lehet, hany drottal es milyen hosszu drottal van osszekotve. Amugy pl a soros kommunikacio elonye extrem hulyesegre: pl PC-t hozzakotsz soros porton (vagy USB-serial atalakito) es akkor teszt vagy mas jeleggel PC-rol sw-bol is lehet "vezerelni" az EP-t, kvazi. Mondjuk ertelme nem tudom van-e.

Amugy ha mar Dual Port RAM-ot akarsz beepiteni, lehet aztan uber szofisztikali, pl nem csak a B5 output-al indexelni, hanem mas porttal is ami pl kulso joy-hoz kell, vagy a mouse box strobe jelevel stb, es akkor aztan kvazi minden eger/joy/bill kombinacio lefedheto talan, eleg csak a DP ram-ot megfeleloen irogatni, ez kisse komplexebb megoldas, es talan dragabb is, de le lehet fedni vele sok mindent es idozitesi gond sincs mint sw-bol AVR-rel megprobalni.

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #342 on: 2014.October.21. 16:47:20 »
Quote
Akkor nem ugyanarrol beszelunk, mert nekem kulso kis dobozkakent jobban tetszene az egyik "fele" akkor meg fontos lehet, hany drottal es milyen hosszu drottal van osszekotve. Amugy pl a soros kommunikacio elonye extrem hulyesegre: pl PC-t hozzakotsz soros porton (vagy USB-serial atalakito) es akkor teszt vagy mas jeleggel PC-rol sw-bol is lehet "vezerelni" az EP-t, kvazi. Mondjuk ertelme nem tudom van-e.

Amugy ha mar Dual Port RAM-ot akarsz beepiteni, lehet aztan uber szofisztikali, pl nem csak a B5 output-al indexelni, hanem mas porttal is ami pl kulso joy-hoz kell, vagy a mouse box strobe jelevel stb, es akkor aztan kvazi minden eger/joy/bill kombinacio lefedheto talan, eleg csak a DP ram-ot megfeleloen irogatni, ez kisse komplexebb megoldas, es talan dragabb is, de le lehet fedni vele sok mindent es idozitesi gond sincs mint sw-bol AVR-rel megprobalni.

Na most megyek a falnak ... :)

Nem lgb, ugyanarról beszélünk.
Ugyanis most meg mikor azt mondtam "Nem, én a belső avr mcu -s dologról beszéltem." akkor nem egy egyedülálló belső mcu-ról beszéltem,
hanem arról, hogy 2 dolog van, egy kívül egy belül, de belül mcu van (ahogy mondtad legelőször) nem pedig egy dual port ram.

A dual ram -ot annyiban hoztam párhuzamba, hogy a +1 belső mcu -s dolog az már nem egy single IC -s dolog, éppúgy mint a dual port ram -os szitu.

A legelső, dupla mcu -s felállásodon csak annyit pontosítottam, hogy a 2 mcu közé nem kellenek key up/down szerű üzenetek, hanem csak egy pár bájtos memória tömb átvitele.
Te először a 2 MCU közé key up/down szerű üzeneteket sugalltál, ezzel vitáztam csak.

Az összes többit már te kavartad bele ... :)










Z80 System

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: HW készítés Arduino-val
« Reply #343 on: 2014.October.21. 16:55:43 »
Na most megyek a falnak ... :)
Az összes többit már te kavartad bele ... :)

Oke, feladom, inkabb nezem a SymbOS disasm-ot. :) Ugyanis akkor nem ertem mit akarsz, de ezen ne vitakozzunk :)

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #344 on: 2014.October.21. 17:01:46 »
Reszeteljünk az első hsz -edre.

Quote
a belso cuccra mar csak EP matrix poziciok alapjan menne uzenet hogy keyup keydown, stb)

Ez sztm azt jelenti, hogy menne a külső mcu -tól egy üzi a belső mcu -nak, hogy az "A" gombot lenyomták, vagy a mouse arrébb ment, vagy resetet nyomtak.

Én ezen annyit pontosítottam, hogy ne ilyen magasszintű üzenetek menjenek a 2 mcu között,
hanem sima bájt csere.
Összesen 2 üzenet mehessen a 2 mcu között, az egyik írja a belső mcu 16(32, akárhány) bájtját,
a másik meg olvassa.

Így se érthető ?
Z80 System