USB/PS2 billentyűzet

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
gerry
Chipgyilok
Hozzászólások: 252
Csatlakozott: 2005. október 11. kedd, 6:00

Hozzászólás Szerző: gerry »

kapu48 írta:Döntsed már el, hogy mit akarsz????????

Először ezt írtad: Billentyű >PC – Terminál > M8 > PC egér!
(Ezt kezeli a programod!)

Most meg ezt rajzolod: Billentyű > M8 > 2db PC!
Egér > M8 > 2db PC!
Ezt építeted meg?

Mit is akarsz akkor?
:roll:

Mondjuk nekem már kiakad itt: Line: 20 Library fyle not found!
:evil:
Kedves Kapu48!
Ne légy mérges! A fenti rajz jó azt szeretném.
Az egér (ps2emu) mint látod csak példaprogram, csak tesztelném, hogy egyáltalán működik-e és a működése megfelelő-e, de nem megy érted.
Ha menne akkor lenne a rajz szerinti továbbfejlesztése, de elöbb szerettem volna bascomban kipróbálni azt amit a bascom alapból felajánl, de már itt megbukott a dolog, mert az alap példaprogram nekem nem fut. Azért nem tudod lefordítani, mert hiányoznak az LBX fájlok amiket pézért árulnak, de ha rákeresel egy orosz weblapról le lehet tölteni, majd bemásolva a lib könyvtárba már forditja is a bascom.
A rajzból a billentyűzet teljesen működőképes. Az egérrel nem bpldogulok, ha a példaprogram nem működik.
Először ezt írtad: Billentyű >PC – Terminál > M8 > PC egér!
Ez a bascom mintaprogram szerinti kapcsolás, ez az ami nem akar működni.
Most meg ezt rajzolod: Billentyű > M8 > 2db PC!
Ezt építeted meg?
Igen ezt kipróbáltam, ez jó!

Bocsánat ha nem voltam világos!


URL >>>ITT<<<
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Bocsi már ezért megérte kötözködni kicsit! (Csak gyarapszik a tapasztalatunk!)
És köszí!
Majd még jövök ilyen kérdésekkel!
:wink:

És hogy állsz a hibakereséssel?
Kiszúrásos alapon, próbáld ki először csak az egérvezérlését.

Kód: Egész kijelölése

'-----------------------------------------------------------------------------------------
'name                     : ps2_emul.bas
'copyright                : (c) 1995-2005, MCS Electronics
'purpose                  : PS2 Mouse emulator
'micro                    : 90S2313
'suited for demo          : NO, commercial addon needed
'commercial addon needed  : yes
'-----------------------------------------------------------------------------------------

'$regfile = "2313def.dat"                                    ' specify the used micro
'$crystal = 4000000                                          ' used crystal frequency
'$regfile = "m16def.dat"
$regfile = "m644def.dat"

$crystal = 14745600
$baud = 19200                                               ' use baud rate
$hwstack = 32                                               ' default use 32 for the hardware stack
$swstack = 10                                               ' default use 10 for the SW stack
$framesize = 40                                             ' default use 40 for the frame space


Print " START! "
Waitms 500

'Note that the DATA must be connected to the used interrupt pin
'configure PS2 Mouse pins
Config Ps2emu = Int1 , Data = Pind.3 , Clock = Pind.2       'Pinb.0
'                 ^------------------------ used interrupt
'                              ^----------- pin connected to DATA
'                                       ^-- pin connected to clock
'Note that the DATA must be connected to the used interrupt pin

Print " PS2 START! "
Waitms 500                                                  ' optional delay

Enable Interrupts                                           ' you need to turn on interrupts yourself since an INT is used


Dim Key As Byte
Dim I As Byte

Print "Start Mouse move"
Waitms 500

Do
Print " Do - "
Waitms 500
'
 For I = 1 To 20
    Ps2mousexy 0 , 10 , 0                                   ' up
    Waitms 200
 Next I
 Waitms 500
 For I = 1 To 20
   Ps2mousexy 0 , -10 , 0                                   ' down
   Waitms 200
 Next I
 Waitms 500
 For I = 1 To 20
   Ps2mousexy -10 , 0 , 0                                   ' left
   Waitms 200
 Next I
 Waitms 500
 For I = 1 To 20
   Ps2mousexy 10 , 0 , 0                                    ' right
   Waitms 200
 Next I
 Waitms 500
'
Print " - Loop "
Waitms 500
'
Loop
8)
A hozzászólást 1 alkalommal szerkesztették, utoljára kapu48 2010. november 28. vasárnap, 10:07-kor.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Sajnos azt tapasztaltam a fent kóddal, hogy az „Enable Interrupts” után elakad!
Addig van Print, utána nincsen!?
:cry:
Avatar
gerry
Chipgyilok
Hozzászólások: 252
Csatlakozott: 2005. október 11. kedd, 6:00

Hozzászólás Szerző: gerry »

A programod jó! Szépen látni a terminal-ban a DO-LOOP ciklus lefutása után a kijelzését. A trükkje a dolognap annyi hogy ha érzékeli a DATA lábon jövő információt vagy órajelet akkor futtatja a programot a mikrovezérlőben, de sajna így sem mozog az egér kurzor :cry:
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Akkor elképzelhető, hogy indításnál nem tud össze szinkronizálódni a (PC <-> Mega)
Fontos lehet az 1*re indítás! Lehet pont az elején levő Waitek miatt késünk le !

Helpben ír valamit róla:
Vedd észre, hogy az egéremulátort csak felismerik, miután bootoltad a PC-det. Egéreszközöket nem dughatnak be a PC-dbe egyszer ez bootolt. Beillesztő egy egér vagy az egéreszköz mikor a PC-t már bootolják, megrongálhatja a PC-det.

Ha bootolás után dugom be az egeret az sem mükszik!
:roll:
Avatar
gerry
Chipgyilok
Hozzászólások: 252
Csatlakozott: 2005. október 11. kedd, 6:00

Hozzászólás Szerző: gerry »

Én meg ezt fordítottam ki, Ellenben az ATemu futtatásánál, az egér(ps2emu) emulátornál nem feltétel a pc reboot. Akkor most mi az igazság? Megprobáltam csak a sima scan kódot kikuldeni billentyűzetről, de azzal sem megy, úgyhogy marad a ps2 mouse protocol tanulmányozása. Köszönöm hogy ránéztél!
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Akkor, ha beteszed a programod elejére ezeket :
$lib "ps2mouse_emulator.lib"
Dim Eror As Byte
Eror = 0

És a "ps2mouse_emulator.lib"-be pakolsz hibajelző utasításokat Pl. igy:
*BASIC: Eror = 1
És Tols > Lib Manager > compile. Újrafordítod.

Akkor keresheted a hibát Pl.: Print ha Eror > 0.
:wink:
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

:?
A hozzászólást 2 alkalommal szerkesztették, utoljára kapu48 2010. november 28. vasárnap, 19:50-kor.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Jó lenne, ha valaki ért az ASM-hoz véleményt mondana!
Így helyes a Hexa értéket betölteni a regiszterbe?:
Ldi r24,$AA ; init command
Szerintem így kellene:
Ldi r24,&HAA ; init command

A fordító mind a kettőt elfogadja.
:?: :?
Avatar
nobody_hun
Bitfaragó
Hozzászólások: 425
Csatlakozott: 2005. november 14. hétfő, 7:00

Hozzászólás Szerző: nobody_hun »

LDI R24,170
vagy
LDI R24,&HAA
vagy
LDI R24,&B10101010
vagy
LDI R24,0xAA
"Az IC-k füsttel működnek. Ha kijön belőlük a füst, nem működnek tovább." - ismeretlen szerző
"Az ID:FFFFFF egyenlő az Atmel még nem kiadott processzorával."
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Köszönöm!
Nekem is ismeretlen volt eddig ez a formátum: Ldi r24,$AA
De szimulátorban futtatva belekerült a regiszterbe az érték.

Van 1 fentebb linkelt állítólag gyári lib, ami nem akar működni!
És próbálok rájönni a hiba okára.
:?
Avatar
gerry
Chipgyilok
Hozzászólások: 252
Csatlakozott: 2005. október 11. kedd, 6:00

Hozzászólás Szerző: gerry »

kapu48 írta:Köszönöm!
Nekem is ismeretlen volt eddig ez a formátum: Ldi r24,$AA
De szimulátorban futtatva belekerült a regiszterbe az érték.

Van 1 fentebb linkelt állítólag gyári lib, ami nem akar működni!
És próbálok rájönni a hiba okára.
:?
Megpróbálok még szerezni, "gyári" libet, csak most melózok és este is későn érek haza, de feltúrom valahonnan.
Avatar
gerry
Chipgyilok
Hozzászólások: 252
Csatlakozott: 2005. október 11. kedd, 6:00

Hozzászólás Szerző: gerry »

Na annyi a fejlemény, hogy két helyről is sikerült megszerezni a lib-ket, de egyikkel sem megy. Az egyik fájl csomagban, amit letöltöttem azt írják, hogy az 1.11.7.3- al megy. Kipróbálom!
Avatar
DOGMAN
Chipgyilok
Hozzászólások: 293
Csatlakozott: 2006. augusztus 27. vasárnap, 6:00

Hozzászólás Szerző: DOGMAN »

Helló!

Ezt a gyári mintaprogramot szeretném én is kipróbálni, négy kérdésem lenne:

- kell-e szintillesztés az AVR lábai és a PS/2 vonala közé?

- a bekötésénél Config Atemu = Int1 , Data = Pind.3 , Clock = Pinb.0 sorban a PS/2 Data és a Clock-ot értem hogy hova kötni de az Int1-et is be kell kötni? Ha igen akkor hova? vagy azt csak a libnek kell paraméterként megadni? Gyakorlatilag elég a két drótot bekötni és kész?

- működik úgy is, hogy az eredeti PS/2 bill.-t "megcsapolom" és oda csatlakozom rá? Olyasmit képzelek el, hogy megmarad az eredeti bill. ami az én AVR-es adapteremmel párhuzamosan van bekötve a PC-be, és mindkettő működik? (a doksiban írják hogy bootoláskor csinál valamit ezügyben a PC, szóval nem tudom hogy mi a helyzet ha kettő eszköz van egy vonalon)

- vajon működik ez a dolog PS/2 to USB adapterrel is? (mostanában erősen szeretik elhagyni az alaplapokról a PS/2 csatlakozót, laptopokról nem is beszélve) Nem szeretnék USB-s bill. emut építeni, ez sokkal egyszerűbb bascomból, az adapter pedig csak kb. 250 Ft-ba kerül...

Kód: Egész kijelölése

'-----------------------------------------------------------------------------------------
'name                     : ps2_kbdemul.bas
'copyright                : (c) 1995-2005, MCS Electronics
'purpose                  : PS2 AT Keyboard emulator
'micro                    : 90S2313
'suited for demo          : no, ADD ONE NEEDED
'commercial addon needed  : yes
'-----------------------------------------------------------------------------------------
 
$regfile = "2313def.dat"                                    ' specify the used micro
$crystal = 4000000                                          ' used crystal frequency
$baud = 19200                                               ' use baud rate
$hwstack = 32                                               ' default use 32 for the hardware stack
$swstack = 10                                               ' default use 10 for the SW stack
$framesize = 40                                             ' default use 40 for the frame space

$lib "mcsbyteint.lbx"                                       ' use optional lib since we use only bytes


'configure PS2 AT pins
Enable Interrupts                                           ' you need to turn on interrupts yourself since an INT is used

Config Atemu = Int1 , Data = Pind.3 , Clock = Pinb.0
'                 ^------------------------ used interrupt
'                              ^----------- pin connected to DATA
'                                       ^-- pin connected to clock
'Note that the DATA must be connected to the used interrupt pin

Waitms 500                                                  ' optional delay

'rcall _AT_KBD_INIT
Print "Press t for test, and set focus to the editor window"
Dim Key2 As Byte , Key As Byte

Do
   Key2 = Waitkey()                                        ' get key from terminal
   Select Case Key2
     Case "t" :
     Waitms 1500
     Sendscankbd Mark                                      ' send a scan code
     Case Else
   End Select
Loop

Print Hex(key)

Mark:                                                       ' send mark
Data 12 , &H3A , &HF0 , &H3A , &H1C , &HF0 , &H1C , &H2D , &HF0 , &H2D , &H42 , &HF0 , &H42
'    ^ send 12 bytes
'           m                    a                   r                    k
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Szintillesztés nem kell, PS/2 5V-os.

Az INT1 lábra megy rá a Clock (emlékeim szerint). És ezt mondod meg a paramterezéssel (INT0-ra is átrakható)

A PS/2 nem Y-osoítható. A PC initkor oda-vissza beszélget, ellenőrzi, hogy van-e billentyűzet.


PS/2 USB átalakítóval is megy...


De keresztkérdés: Nem egyszerűbb egy USB-s AVR és az USBLIB?
C-ben a LUFA projekt ezt vesézi ki - AT90USB162 ~ 700 Ft ....
ez kb. ATMega168 (AD nélkül) + USB 2.0 illesztő.
Vagy ATMega32U4 - Mega32+USB2.0 ~ 1000 Ft.
És ez USB-s egyből...
Válasz küldése