Welcome, Guest. Please login or register.


Author Topic: Billentyûfólia helyettesítés (Read 50078 times)

Offline csigabig

  • EP fan
  • *
  • Posts: 210
  • Country: hu
Re: Billentyûfólia helyettesítés
« Reply #60 on: 2012.April.06. 22:12:16 »


Köszi a képeket.Akkor így fogom megoldani.
Kép majd jön.
« Last Edit: 2012.April.07. 09:17:20 by csigabig »

Offline csigabig

  • EP fan
  • *
  • Posts: 210
  • Country: hu
Re: Billentyûfólia helyettesítés
« Reply #61 on: 2012.April.07. 23:10:18 »
Szia Zozo !!

Ezt a Tigrian féle billentyűzet illesztőt  meg lehet valahol találni?
Már megtaláltam.
« Last Edit: 2012.April.08. 20:40:36 by csigabig »

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: Billentyûfólia helyettesítés
« Reply #62 on: 2012.December.09. 18:30:14 »
A következő dolog jutott eszembe, és ez egyúttál a külső joy problémát is orvosolhatná.

A billentyűzet olvasása úgy működik, hogy a Z80 kiad egy IO utasítást egy multiplexernek, ami a billentyűzetfólia 10 vezetőszála közül egyet lehúzza GND-re. Ezután pedig kiolvassa egyenként a másik 8 vezetőszálat. Amennyiben egy billentyű le van nyomva ott 0V lesz a többin a felhúzó ellenállás miatt 5V. Ezért van az, hogy kiolvasás után ha nincs semmi lenyomva akkor 0xFF-et ad eredményül.

 Mivel minden ilyen billentyűzetművelet I/O utasításokon keresztül hajtódik végre, ezért simán lehet a busz-kiterjesztő egységen keresztül egy önálló billentyűzetvezérlőt üzemeltetni. Akár a belsővel is mehet együtt, és még szoftver sem kell hozzá.

 Mi történik ha a belső billentyűzetet nem használjuk, és a külsőt igen: I/O kérést érzékel a külső vezérlő, és tudja, hogy ott abban a sorban az 'A'-t lenyomták. Ezért most megvárja a visszaolvasó I/O kérést és amikor megérkezik, GND-re húzza az adott adatbemenetet.
 Nincs ütközés a külső és belső között, mert a DATA vonal gyenge felhúzó ellenállással 5V-on van, és logikai 1-nél egyszerűen semmit nem csinál, logikai nullánál 0-ra húz.

 Ezen eszmefutattásom azt mutatja számomra, hogy 3,3V-os hardverrel simán lehet használni az EP-t nem kell szintet illeszteni. Visszafelé kommunikációnál a külső HW 5V-os túlfeszültséget pedig elviseli.
 Lehet mindjárt neki is látok egy billentyűzetillesztőnek. A baj csak ott van, hogy az PS2-es bill. kódszavait át kell fordítani EP címzésre.

 Az elv az már megvan, és nagyon is jó!

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Billentyûfólia helyettesítés
« Reply #63 on: 2012.December.09. 18:46:37 »
Quote from: Tuby128
Nincs ütközés a külső és belső között, mert a DATA vonal gyenge felhúzó ellenállással 5V-on van, és logikai 1-nél egyszerűen semmit nem csinál, logikai nullánál 0-ra húz.
Itt a hiba, nincs felhúzó ellenállás, ellenben az U27-es 74LS373 mindenképpen megkapja az olvasási jelet, és a bemenetétől függően adja a 0-kat, 1-eseket az adatbuszra.
Kérdés, az, hogy egy erősebb külső áramkör felül tudja-e írni az 1-et, 0-ra. (De a belső 0-t nem felülírva.) És, hogy ebbe a felülírásba nem-e döglik-e meg az alaplapon a 373-as.

A Tigrian féle cucc mindenesetre a 373-as bemenetét manipulálta.

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: Billentyûfólia helyettesítés
« Reply #64 on: 2012.December.09. 19:00:53 »
Valamelyik IC-ben lennie kell az adatvonalon gyenge felhúzóellenállásnak, mert nem lebeghet az adatcsatorna. Szerintem a Z80-ban lesz, mert ő a "központ", ő vált olvasáskor magas impedanciás állapotba és ilyenkor gyengén felhúzza az adatvonalait.
 Így ha nem történik bill. lenyomás akkor az említett 373-as IC tulajdonképpen nem csinál semmit. Muszáj, hogy így legyen különben hibás működés esetén zárlat alakulna ki ami nem lehet.
 (Ti mondtátok, hogy az EP milyen strapabíró szerkezet, hogy ennyi év után is milyen jól teljesít. Akkor ez igazolja az állításomat.)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Billentyûfólia helyettesítés
« Reply #65 on: 2012.December.09. 19:06:18 »
A "nincs billentyű lenyomva" funkcióhoz a felhúzás a 373-as bemenetén van, az RP2 jelű csomagban.

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: Billentyûfólia helyettesítés
« Reply #66 on: 2012.December.09. 19:15:45 »
Azt írja, hogy a kimeneti maximum áram 130mA. Egyszerre csak egy kimenetet lehet rövidre zárni, és ez is csak max 1s-ig tartható fent. Először is reménykedem, hogy a Z80 hamar végez a 181-es port olvasásával, másrészt ha nagyon rossz lenne a helyzet egyszerűen el kell harapni az IC tápfeszültség lábát, és kész.
« Last Edit: 2012.December.09. 19:36:04 by tubybb »

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: Billentyûfólia helyettesítés
« Reply #67 on: 2012.December.09. 20:41:03 »
Meg tudná nekem valaki nézni (legyen szíves),hogy német gépeken az ö ü ä + # és aposztróf billentyűk lenyomására mit ad ki ez a program?  (STOP-pal állítható le)

90 set key click off
100 for a=0 to 9
110 out 181,a
120 let ke=in(181)
130 if ke<>255 THEN gosub 160
140 next a
150 goto 100
160 print "sor";a;"ertek:";ke
170 wait 1
180 return
« Last Edit: 2012.December.09. 20:45:46 by tubybb »

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: Billentyûfólia helyettesítés
« Reply #68 on: 2012.December.10. 15:52:00 »
Tegnap elgondolkodtam, amikor az EP és a PC billentyűzetet hasonlítottam össze.

Felosztanám a témát két részre: Angol és Német billentyűzetek (+ a végén megemlítem a magyart is)

1. Német billentyűzet
 Ezzel kezdem mert ez a legegyszerűbb. Én már évek óta német billentyűzetet használok a mindennapokban. Ez oda vezethető vissza, hogy anno hozzászoktam az EP-n, hogy az írásjelek hol találhatóak, és később amikor elkezdtem PC-t használni a magyar billentyűzeten minden olyan idegen volt (lásd: pontosvessző helye). (Ezt nem cicomázom tovább, aki tudja milyen fontos hogy valamit megszoktunk, az tudja miről beszélek)

 Az EP német billentyűzet kiosztása teljesen kompatibilis a német PC-billentyűzetével. Egyedül a Pause és STOP gombok hiányoznak, de erre majd később kitérek. A lényeg, hogy német PC billentyűzet + EP nyert ügy.

2. Angol billentyűzetkiosztás
 Na ezzel már meggyűlik a bajom, ugyanis nem kompatibilis. Egy-két billentyű máshogy van, emiatt nagyon kellemetlen lehet a bevitel. Ezzel nem tudom mi legyen. Arra gondoltam, hogy megcsinálom némethez, és az angol meg olyan lesz amilyen lesz.

3. Magyar PC billentyűzet
 Abszolút még csak nem is ott vannak a billentyűk ahol azt megszoktuk az EP-n. Én úgy lennék vele, hogy szereznék direkt erre egy olcsó billentyűzetet, és lecsiszolnám majd átragasztgatnám a betűket.

Még mielőtt valaki megkérdezné... olyat sajnos nem lehet, hogy felismerje a hardver, hogy a magyar billentyűzeten mit nyomtam le (shift-tel vagy caps-szel) és ezt lefordítja EP-re, mert ez olyan hosszú tervezési folyamat lenne, hogy sosem készülne el. Próbáljunk meg az egyszerűség szintjén maradni, kérlek!

 Még egy dolog: A STOP és PAUSE gombok egyikét sem lehet a SCROLL LOCK melletti jobb gombra tenni (nem tudom a magyar nevét) mert a PC billentyűzetek ezen gomb lenyomása pillanatában adnak jelet, az időtartamról nem adnak infót. Másrészt ezen gomb lenyomásakor kb. 8 byte adatot küld a billentyűzet (a szokásos 1-2 helyett), és ennek kiértékelése időigényes. Ezzel nem akarok foglalkozni.

(Tehát STOP és PAUSE gombokra marad a HOME és END, de ha valakinek más ötlete van szívesen meghallgatom.)

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: Billentyûfólia helyettesítés
« Reply #69 on: 2012.December.11. 02:57:49 »
Oké. Jelentem elkészült a VHDL kód fele a PC-EP billentyűzet konverterhez.
A csatolmányban található a projekt egyszerűsített tervrajza. (angolul)

A szürke DEVICE nevű objektum a CPLD-t jelenti. (CPLD = IC, Programozható Logikai Hálózat) A benne lévő modulok pedig a HDL kódokat mutatják (hardverleíró kód).

Három fő részre osztottam:
1. EP busz interfész - Ez kommunikál az EP buszával (érzékeli és kezeli a 181-es című IO műveletet)
2. PS/2 billentyűkód-ról - EP billentyűkód-ra fordító
3. PS/2 busz interfész - Ez fogadja az adatokat a PS/2-es billentyűzettől

Az 1 és 2-höz tartozó kód már készen van. Még ugyan nem teszteltem, de több mint valószínű, hogy működik.
Most a 3.-on dolgozom, de ehhez előbb át kell tanulmányoznom a PS/2 busz működési elvét, eközben készítenem kell egy NYÁK-ot, amin van PS/2 hüvely amit aztán összekapcsolok a DEVICE-szal. Így tesztelni tudom majd a 3-as kód működését.

 Amennyiben a 3-as elkészül és jó, készítenem kell még egy NYÁK-ot, ami a DEVICE-ot az EP buszával köti össze. A DEVICE egyébként 15 dollár az E-öbölben. (EPM1270)

 Legvégül ha minden kész és minden jól működik, el kell készíteni a "végső" nyákot. Ebben majd segítséget kell kérnem, mert nem tudom milyen csatolófelületet érdemes neki készíteni. (A busz kiterjesztőre gondolok)

Ennek a berendezésnek az előnye az lesz, hogy valószínűleg nem kell megbontani az EP-t ahhoz, hogy külső billentyűzetet lehessen használni. Továbbá csak csatlakoztatni kell és működik, nem kell hozzá semmilyen plusz program.

 Egyébként, ha elkészül és működik rendesen, tart valaki igényt egyre vagy csak magamnak csinálom?

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: Billentyûfólia helyettesítés
« Reply #70 on: 2012.December.11. 12:32:57 »
Délelőtt elkészítettem a PS/2 csatlakozós minipanelt. Jöhet a 3-as HDL kód megírása.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Billentyûfólia helyettesítés
« Reply #71 on: 2012.December.11. 12:57:14 »
Quote from: Tuby128
Meg tudná nekem valaki nézni (legyen szíves),hogy német gépeken az ö ü ä + # és aposztróf billentyűk lenyomására mit ad ki ez a program?  (STOP-pal állítható le)

Ez a program nem adna semmi eredményt, mert az EXOS megszakítás kezelő rutinjai felül írják a B5h port értékét.
De nincs is erre szükség, azok a billentyűk pont ugyanazt csinálják mint az angol gépen ott lévő gombok.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Billentyûfólia helyettesítés
« Reply #72 on: 2012.December.11. 13:01:02 »
Quote from: Tuby128
Azt írja, hogy a kimeneti maximum áram 130mA. Egyszerre csak egy kimenetet lehet rövidre zárni, és ez is csak max 1s-ig tartható fent. Először is reménykedem, hogy a Z80 hamar végez a 181-es port olvasásával, másrészt ha nagyon rossz lenne a helyzet egyszerűen el kell harapni az IC tápfeszültség lábát, és kész.
Akkor az a helyzet amit tippeltem, hogy elméletileg nem szabad, aztán lehet, hogy mégis működik...
Ha már vagdosni kéne, akkor elveszik az a előny, hogy nem kell hozzányúlni a géphez, és a kétféle billentyűzet párhuzamos használatának lehetősége. Ebben az esetben, hamár úgyis nyitva a gép, akkor lehetne belülre tenni, a 74LS373 bemenetére, ahogy a Tigrian féle megoldás is volt.

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: Billentyûfólia helyettesítés
« Reply #73 on: 2012.December.11. 13:04:03 »
Hidd el működik a program. Tippek-trükkök 121. oldalról lestem.  Azóta pesze már összeraktam a EP-t és magam próbáltam ki.

Ha azonban nem kell vagdosni, mert arra a rövid időre (néhány mikrosec) kibírja a rövid túlterhelést, akkor nem is kell kinyitni a gépet.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Billentyûfólia helyettesítés
« Reply #74 on: 2012.December.11. 13:22:39 »
Quote from: Tuby128
Hidd el működik a program. Tippek-trükkök 121. oldalról lestem. 
Nem ez az első hiba abban a könyvben :evil:
Valamit tényleg csinál, de megbízható működéshez tiltani kell az EXOS megszakításokat, pl egy POKE 56,201-el.
Pl:
10 OUT 181,0
20 PRINT IN(181)
30 GOTO 10
Ekkor elvileg csak a 0-ás sor billentyűire (Bal Shifttől-N-ig), kéne reagálnia, de másra is reagál, és nem stabil értékeket ad vissza, hanem váltakozva 255-t, amikor éppen egy másik sort választott ki az EXOS.
POKE-t betéve az elejére már jó.