ATTinyből USB billentyűzet

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
webgeneral
Újonc
Újonc
Hozzászólások: 6
Csatlakozott: 2008. június 3. kedd, 6:00

ATTinyből USB billentyűzet

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

Mint a neve is mutatja egy sima kis ATTinyből szeretnék USB billenytűzetet kreálni úgy, hogy a PC úgy lássa, mint egy szabvány billentyűzetet.
A hardverre több megoldást is találtam egy ATTiny45 kristály nélkül is elmegy pár ellenállás meg diódával, de a szoftverrel gondban vagyok.
Csak C változatot találtam és az nekem így kicsit sok egyszerre.
Bascom alatt van erre valami megoldás?

Amúgy táncszőnyeghez kellene vezérlőnek vagyis van 8 gombom és azt kéne elküldeni a PC-re, de mindenképpen USB-n.

Amúgy ezt találtam ami a legszimpatikusabb.
http://blog.flipwork.nl/?x=entry:entry081009-142605
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

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

A Bascom alatt nem megy.
A SW-es USB emuláció erőforrásigényes, és így felejtős.

Ha belső órajlről járó eszközök hőmérsékletérzékenyek és az USB kommunikáció gyorsan széthullik.

Kbdemu:
http://www.krezac.net/avr/yake-en
http://www.obdev.at/products/vusb/hidkeys.html
http://www.obdev.at/products/vusb/prjhid.html

A szőnyeg nem PS2-ből van véletlenül? Egy USB-PS2 átalakító a maga ~1000 ftjával olcsóbb és kompatibilisebb :)
Avatar
szovhoz
Bitfaragó
Hozzászólások: 608
Csatlakozott: 2007. április 7. szombat, 6:00

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

én is támogatom Robi ötletét a Bascom is támogtaja a ps2 emulációt. egy kis kiegészítő kell a bascomhoz ami emulálja ..... példa progit tudok adni neked!


itt egy minta program.

mcsbyteint.lbx ez kell hozzá hogy tudd használni ha kell szólj csak nyugodtam mailben.

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


$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

Rem Nyomógombok
Felgomb Alias Pinb.1
Legomb Alias Pinb.2
Balgomb Alias Pinb.3
Jobbgomb Alias Pinb.4
Entergomb Alias Pinb.5
Cgomb Alias Pinb.6
Dim A As Integer
Dim B As Integer
A = 0
Waitus 500                                                  ' optional delay

'rcall _AT_KBD_INIT



Do
If Cgomb = 0 Then Sendscankbd Cgomb
If Pinb.6 = 1 Then A = A + 1
'$eeprom
'Label1:
'Data 1
'$data
'Writeeeprom B , Label1
'B = A


Waitus 50
If Felgomb = 0 Then Sendscankbd Uparrow
Waitus 50
If Legomb = 0 Then Sendscankbd Leftarrow
Waitus 50
If Balgomb = 0 Then Sendscankbd Downarrow
Waitus 50
If Jobbgomb = 0 Then Sendscankbd Rightarrow
Waitus 50
If Entergomb = 0 Then Sendscankbd Enter
Waitus 50
Loop



Rem billentyűzet kódok
Uparrow:
Data 5 , &HE0 , &H75 , &HE0 , &HF0 , &H75

Leftarrow:
Data 5 , &HE0 , &H6B , &HE0 , &HF0 , &H6B

Downarrow:
Data 5 , &HE0 , &H72 , &HE0 , &HF0 , &H72

Rightarrow:
Data 5 , &HE0 , &H74 , &HE0 , &HF0 , &H74

Enter:
Data 3 , &H5A , &HF0 , &H5A

Cgomb:
Data 3 , &H21 , &HF0 , &H21

Szerk: admin (pls. fizetős részek nem terjeszthetők)
Avatar
Allspark
Bitmanipulátor
Hozzászólások: 106
Csatlakozott: 2009. július 9. csütörtök, 6:00

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

Ezeknek a rem billentyűzet kódoknak van valamiféle táblázata?
Vagy miféle logika alapján működik?
Köszönöm.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

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

Igen. Keyboard Scan Code néven keress rá.

Van lenyomási és elengedési kód is!
Illetve a 2 karakteres Externded kódok (nyíl, Win gomb stb)


De a cím alapján: Az obdev.at révén V-USB néven fut a SW emulációs projekt. Bascomra is portolták a SW-USB függvénykönyvtárat, SW-USB néven. A mcselec fórumban fejlesztgetik. Egész használható. lassan a standard Bascom-AVRnek is része lesz.

Illetve HW USB-t tartalmazó AVR chipekre az USB függvénykönyvtárral (+20 EUR) az AVR billentyűzet is tud lenni. Ilyen IC ~1000-1800 Ft/db...
AT90USB162, ATMega32U4.
Én AT90USB162-vel próbálkoztam eddig, most az ATMNega8U2 illetve ATMega32U2 kódjai jönnek illetve a ATMega32U4 (ennek a lábosztása 0,4 mm!)
Avatar
Allspark
Bitmanipulátor
Hozzászólások: 106
Csatlakozott: 2009. július 9. csütörtök, 6:00

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

Hú ez nagyon jól hangzik.
Köszönöm a választ, nagyon hasznos volt.
Avatar
szovhoz
Bitfaragó
Hozzászólások: 608
Csatlakozott: 2007. április 7. szombat, 6:00

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

Milyen billt akarsz halytani sp/2 vagy usb?
-= STK500 =-
Avatar
Allspark
Bitmanipulátor
Hozzászólások: 106
Csatlakozott: 2009. július 9. csütörtök, 6:00

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

Ha már belekezdek jó lenne mind a kettőt megtanulni.
Először sima sp/2-eset szeretnék és ha az megy rendesen akkor jöhet az USB.
Válasz küldése