USB HID Demo @watt. 1. Bevezetés. 2. A Hardver



Hasonló dokumentumok
Welcome3 Bele pteto rendszer

MICROCHIP PIC DEMO PANEL

GQ-3x és GQ-4x USB univerzális programozó Kézikönyv

USBTiny-MKII programozó

1. oldal, összesen: 29 oldal

Programozó adapter MICROCHIP PIC mikrokontrollerekhez MICROCHIP ICD2 programozó/debuggerhez PICKIT2 programozóhoz Willem égetıhöz

Kezelési leírás a FEC01/06 típusú programozható és távműködtethető lángeffekt vezérlő készülékhez

A DDS áramkörök használata.

OKI B430 telepítési útmutató

kezelési útmutató PC1-s88 interfész digitools.hu

GoLabel használati útmutató

Digitális vezetéknélküli telefonkészülékek

ISE makró (saját alkatrész) készítése

ProCOM GPRS ADAPTER TELEPÍTÉSI ÉS ALKALMAZÁSI ÚTMUTATÓ. v1.0 és újabb modul verziókhoz Rev

ProCOM GPRS ADAPTER TELEPÍTÉSI ÉS ALKALMAZÁSI ÚTMUTATÓ. v és újabb modul verziókhoz Dokumentumverzió:

Alkalmazási segédlet a MiniCheck-RA-H festékrétegmérő készülékhez és az ezt támogató MiniCheckForKiv szoftverhez.

UC100 USB CNC mozgásvezérlő MACH3 programhoz Plugin verzió: V2.105

Visual Basic 2005 Express Edition A VISUAL STUDIO HASZNÁLATA NEM LEKTORÁLT VÁLTOZAT

Animációk, effektusok

Adatstruktúrák, algoritmusok, objektumok

Tartalomjegyzék. Bevezetés Megfelelõ gondozás 1 SmartMedia kártya 1 Elemek 1 A csomag tartalma 1. A fénképezõgép megismerése Elöl 1 Hátul 2

Mérési útmutató a Mobil Kommunikáció és Kvantumtechnológiák Laboratórium méréseihez

Bevezetés. Novell Netware 4.XX hálózati nyomtatók kezelése

MUNKAANYAG. Angyal Krisztián. Szövegszerkesztés. A követelménymodul megnevezése: Korszerű munkaszervezés

Enigma IP2. Távfelügyeleti Vevő

Quantometer 2.0 Fogyasztásmérő program és illesztőkészülék

Az Ön kézikönyve SHARP AR-M160/M205

DUALCOM SIA IP TELEPÍTÉSI ÉS ALKALMAZÁSI ÚTMUTATÓ. V és újabb modulverziókhoz. Dokumentum verzió:

1. BEVEZETÉS A RENDSZER ELEMEI, ARCHITEKTÚRÁJA... 5

Divatos termék-e a kondenzációs kazán?

AIX 6.1. IBM Systems Director Console for AIX

Gate Control okostelefon-alkalmazás

ecoline SIA IP Adapter

SATEL. CA-64 RIASZTÓKÖZPONT ( es szoftver verzió) Telepítési útmutató

VISUAL BASIC ALAPISMERETEK

Látványos oktatás egyszerő multimédiás elemek programozásával Delphiben

Alkalmazásportfólió. Szoftvermenedzsment. menedzsment. Racionalizálás. Konszolidáció. Nyilvántartás. Elemzés

TELLMon vevőegység FELHASZNÁLÓI ÚTMUTATÓ. V és újabb verziókhoz Rev

Mérési útmutató. A/D konverteres mérés. // Első lépésként tanulmányozzuk a digitális jelfeldolgozás előnyeit és határait.

GM-900 GSM/GPRS modem. Alkalmazási útmutató

FELHASZNÁLÓI ÚTMUTATÓ

DistoX2 Felhasználói Kézikönyv

Elektronikus Kérelemkitöltés OTTHONI HASZNÁLATI SEGÉDLET

Az Ön kézikönyve HP LASERJET M3035 MFP

7. Előadás. Makrók alkalmazása. Salamon Júlia. Előadás I. éves mérnök hallgatók számára

A rendszer általános áttekintése (Ver: )

Operációs rendszerek Windows Xp

Csoport neve: Kisiskolások Feladat sorszáma: 2. Feladat címe: Oktatási intézmény honlapja, oktatási naplóval. E-Project.

Gate Control okostelefon-alkalmazás

Rovás segéd 1.8. Segédalkalmazás szövegek (át)rovásához

Szervlet-JSP együttműködés

Használati utasítás V1.4

1. fejezet: Bevezetés

Bosch Recording Station. Telepítési kézikönyv

EM4586 Kétsávos vezeték nélküli USB adapter

Az anyagdefiníciók szerepe és használata az Architectural Desktop programban

Point of View Mobii 945 IPS Android 4.1 Tablet PC. Tartalomjegyzék Általános tudnivalók használathoz Jogi nyilatkozat...

Minden jog fenntartva, beleértve bárminemű sokszorosítás, másolás és közlés jogát is.


IP sorozat NVR FELHASZNÁLÓI KÉZIKÖNYV

Tipp A Word makrók kimerítõ tárgyalását megtalálhatjuk az O Reilly gondozásában megjelent Writing Word Macros címû könyvben.

CellCom. Szoftver leírás

UC300-5LPT. USB CNC mozgásvezérlő MACH3 programhoz. Használati utasítás. Plugin verzió: V1.024

Aronic Főkönyv kettős könyvviteli programrendszer

Budapesti Műszaki- és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar MIT. Nagyteljesítményű mikrovezérlők tantárgy [vimim342]

Series használati útmutató

ipod nano Felhasználói útmutató

Using_CW_Net.doc Felhasználói útmutató

Szakdolgozat. A Microsoft Access módszertana. Témavezetı: Radványi Tibor Készítette: Erényi Péter, 2006 IV. évfolyam, számítástechnika szak

Bemutatás. Elrendezés. Leírás. Műszaki adatok. Funkciók

FELHASZNÁLÓI ÚTMUTATÓ. A Nokia Connectivity Cable Drivers telepítése

TI TMDSEVM6472 rövid bemutatása

A PC Suite telepítési útmutatója

MÁOK Sm. Szervezete 7400 Kaposvár, Cseri major Utolsó frissítés: TÁVOKTATÁS. MS Excel táblába oszlop beszúrása

FELHASZNÁLÓI LEÍRÁS a DIMSQL Integrált Számviteli Rendszer Mérleg moduljának használatához

Tartalomjegyzék. istorage datashur. felhasználói útmutató

A Blender használata (8. rész) Az animációkészítés alapjai

Az elektronikus napló

Makk Tamás T-Amp Szakdolgozat

Tartalomjegyzék Általános ismeretek a programról A táblázatok használata Az objektumtípusok áttekintése Részletes leírás Statisztikai jelentés 129

9. Entitás modulok. Nagy Gusztáv: Drupal 7 alapismeretek Fejlesztői verzió: október 6.

EVO 5/1 TM50 EVO MENÜTÉRKÉP. Alapképernyő. Területek Terület választás Címke Mester kód Címke módosítás Mentés Szám Élesítési szint

Tájékoztató. Használható segédeszköz: -

TELL AMR-08. Távfelügyeleti Vevő

HOLDPEAK 856A SZÉLSEBESSÉG MÉRŐ

Jogosultságkezelés felhasználói leírás

A DimSQL programrendszer évi nyitási teendői

ENIGMA II. Távfelügyeleti Vevő

Adataink biztonságos tárolása és mentése

GSM Gate Control Pro 20 GSM Gate Control Pro 1000

SupOrt. talpfelvétel készítő program felhasználói leírás v3.1

A rendszer általános áttekintése

A. Kórház gazdasági igazgatói állására

Szövegszerkesztés Verzió: 0.051

WINDOWS XP - A GRAFIKUS FELÜLET KEZELÉSE

ÓRAREND SZERKESZTÉS. Felhasználói dokumentáció verzió 2.5. Budapest, 2011.

KimDaBa. Dobbantó. Rendet a képek között. Kiskapu Kft. Minden jog fenntartva

Magyar. 1. lépés: Kicsomagolás

Átírás:

USB HID Demo @watt 1. Bevezetés Ebben a cikkben egy egyszerő kommunikációs kapcsolatot próbálok bemutatni, elsısorban gyakorlati oldalról egy egyszerő hardveren, valamint a PIC(C18) és a PC(VB6) oldali programon keresztül. Nem célom mélyebben belemenni az USB HID szabvány rejtelmeibe, inkább a lényegre, a használatára próbálok koncentrálni. Miért jó a HID? A HID meghajtó programjai települnek a PC-re a rendszer (XP) telepítésékor, ezért nincs szükség külön driver telepítésére. Ez akkor jöhet jól, ha nincs lehetıségünk rendszergazdai jogokkal telepíteni egy gépre. Akkor is jó, ha elfelejtettük magunkkal cipelni azt az adathordozót, amin a driver van (Persze a felhasználói programra azért szükség van! ). Itt tényleg teljesülhet a nagy reklám szöveg, hogy csatlakoztatni és használni. A CDC firmware kezelése PIC oldalon egyforma nehézséget jelent a gyári megoldásoknak köszönhetıen. A PC oldal egyszerőbb, mivel csak egy szabványos soros port megnyitását követeli meg, amit minden visual fejlesztı környezet támogat. A HID ezzel szemben PC oldalon nagyobb gondot jelent, viszont van megoldás. Visual C++ 2005 Express környezetre a gyári (Microchip) Demo ajánlás tartalmaz szabad kódot, ami közvetlen API beállításokkal operál, ebbıl ki lehet indulni. VisualBasic 6-hoz pedig a neten lehet dll fájlokat találni, amikhez van kódgenerátor, vagy egyéb kódrészletek, melyekkel fel lehet építeni a programot. Én az Easy HID szabadon használható kódkörnyezetét választottam, amely az mchid.dll állományt használja. Ez tartalmazza azokat az API leírásokat, amelyek a HID szabványt kiszolgálják. A VB6 programnak csak deklarálnia kell a függvényeket egy modulban, majd meghívni azokat. Az olvasó rutin eseményvezérelt, azaz akkor hívódik meg, ha USB csomag érkezik, ami a HID esetében 64Bájt mérető. A csomagok száma másodpercenként 1000, ami így maximálisan 64 KBájt/sec adatforgalmat enged meg. A PIC demo programmal 100 csomagot küldök el, ami 6,4 KBájt/sec sebességet jelent, de majd látható, hogy a csomag nagy része nem is lesz értelmezve, mert csak néhány bájt hordoz infót a PC program mőködéséhez. Természetesen ebbıl kiindulva tovább lehet lépni, és olyan sebességet és annyi bájtot használni, amennyi szükséges az egyéni feladathoz. Végeredményben ez a fı célom ezzel a leírással. 2. A Hardver

Az áramkört fel lehet építeni egy próbanyákra, vagy egy meglévı áramkör "átalakításával" is meg lehet oldani, hiszen csupán egy láb van felhasználva egy LED meghajtására. A LED-et másik lábra is át lehet kötni, ha szükséges, csak a programban kell módosítani egy sort. A C6 lehet 330nF-is. A programozási port (ICSP) kiosztása saját választás (nem egyezik pl. a PICKit2-ével (csak a sorrend!)), mindenki ügyeljen, hogy a programozójának megfelelı kiosztást alakítsa ki. Programozáskor válasszuk le az USB csatlakozót, annak ellenére, hogy túl sok bajt nem okozna, de jobb a békesség. A programozást követıen, ha a fenti áramkörtıl nem térünk el, a programozót nem szükséges leválasztani. 3. A PIC program A program C18 nyelven íródott, mivel a gyári firmware ezt favorizálja (sajnos Assembler kódra nem fejlesztenek). A felépítése moduláris, ezért én is igyekeztem ezt követni. Kiválasztottam azokat a forrásokat, amik szükségesek a kód futtatásához, de még ezekbıl is töröltem azokat a sorokat, amikre itt nincs szükség. Így talán jobban áttekinthetı, és ha tovább akarjuk fejleszteni a forrást, akkor jobban látható, mi az, amiben a gyári eltér. Megjegyzem, hogy a demo mőködıképes, de nem használ hibakezelést, suspend módot, tápfeszültségfigyelést és egyéb más, jelenleg számomra is ismeretlen funkciót. A PIC C18 program MPLAB project ablaka: Úgy gondoltam, hogy jobban áttekinthetı a program, ha a fı beállításokat külön fájlokba teszem. Így külön meg lehet nyitni, és jobban lehet olvasni ıket (jelenleg kevés beállítást tartalmaznak, de egy teljes kész program esetén szépen megtelnek, és hasznosak lesznek). Ezek a következık: Interrupt_cfg.c Periph_cfg.c Port_cfg.c Global_Constans.h HardwerProfile.h A megszakítások beállításai Belsı perifériák beállításai Portok beállításai Saját konstansok felsorolása Az áramkörrel kapcsolatos azonosítók

Interrupt_cfg.h PIC18F2550_Config.h SKType.h Interrupt nevek rögzítése Konfigurációs bitek beállításai Saját típusok deklarálása 18f2550sk.lkr Átalakított Linker fájl. A linker fájl bootloader nélküli megoldásra lett állítva. A többi fájl a gyári forrás része, ahol csak a main.c-ben történt lényegi változtatás. A többi állományban csak olyan változtatás történt, ami leegyszerősítette a 18F2550-re a forrást (egy csomó #if eltávolítása), így talán jobban megérthetı. 4. A PC program A program a következı feladatokat mutatja be: - VendorID (VID) és ProductID (PID) adatok bevitelét támogatja. Ezt a programban be lehet állítani alapértelmezettként is, de menet közben is lehet változtatni, ügyelve a szintaktikára, mert hibakezelés nincs beépítve. Ezek az értékek azonosítják az USB eszközt. - Csatlakozás. Meg lehet oldani, hogy a csatlakozás a program indulásakor történjen meg, ehhez csak a Form_Load() szubrutinba kell írni a megfelelı sorokat. Itt fontosabbnak tartottam a csatlakoztatás és a leválasztás bemutatását menet közben. - Leválasztás. - Eszköz adatok. A képen (számozás nélküli sorokban) látható információkat olvassa ki a PIC-bıl. Ezeket az értékeket és szövegeket meg lehet változtatni a PIC programban, erre még kitérek. - LED Toggle. Egy parancsot küld el a PIC-nek. Ennek hatására a PIC átváltja a LED-et és visszaküldi a LED állapotát jelzı kódot, aminek hatására a gomb melletti visszajelzı a LED állapotát jelzi. - Listázás CheckBox. Bepipálva folyamatosan listázza a PIC által 100Hz ütemben elküldött, a LED állapotára vonatkozó kódokat. - Csatlakozás / Leválasztás gombok melletti visszajelzı. Jelzi a PIC által elküldött LED állapotára vonatkozó kódok ütemét. - Listázó ablak. Megjeleníti a fent említett adatokat, és a csatlakozással / leválasztással kapcsolatos eszköz állapotokat. A 100Hz-es adatáram 999 sor után törli a kijelzést. 5. Letöltések PIC program: http://www.hobbielektronika.hu/kapcsolasok/files/308/usb_hid_custom_proba_pic.zip PC program: http://www.hobbielektronika.hu/kapcsolasok/files/308/usb_hid_custom_proba_pc.zip 6. PIC program megnyitása, részletezése Töltsük le a PIC program állományt, és csomagoljuk ki a C:/ meghajtóra. Indítsuk el az USB_HID_Wdemo.mcw állományt. Ekkor be kell töltıdjön az MPLAB megnyitásával a project. Fordítsuk le. Ha hibaüzenet jön, amiben az "c018i.o" fájlt keresi, akkor a Build Options ikonnal (sárga fogaskerekes) állítsuk be a C18 telepítési könyvtár lib könyvtárát (? MCC18lib) a Library Search Path kiválasztása után, ahol jelenleg az E:MPLAB_systemMCC18lib van beállítva. Ehhez természetesen fel kell

telepíteni a C18 fejlesztıi környezetet, ha még nem lenne. Ha megnyílt a project, akkor a fenti project ablak képe kell megjelenjen. Megnézhetjük a már említett állományokat. Bízom benne, hogy a megjegyzések sokat segítenek! USB azonosítók: Nézzük meg az usb_descriptors.c-t. Ebben a fájlban vannak rögzítve az eszköz azonosítói, és a szöveges információs adatok. Ha összehasonlítjuk a gyári fájlokkal, látható, hogy hol és hogyan lehet változtatni. A gyári állományban nincs benne a sorozatszámra vonatkozó bejegyzés (254. sortól), ezt már én főztem hozzá, és a PC program ezt le is kérdezi. A 177 és 178. sorokban található a két ID, ami az eszközt azonosítja. Ezt lehet beállítani a PC program szövegmezıiben. Ezeket szabadon meg lehet választani, figyelembe véve, hogy ne ütközzünk más eszközök azonosítószámaival. main.c: Itt egy példát láthatunk a megszakítások deklarálására, használatára, és egy módszert az USB megszakításban való független kezelésére, valamint egy egyszerő példát, a kétirányú USB kommunikációra, amit tovább lehet fejleszteni a saját feladatunkhoz A kezdeti linkelések és egyéb szokásos beállítások után a 74. sortól következnek a külön állományban létrehozott beállító szubrutinok meghívásai. Ezek sorrendje fontos, ha a beállítások logikai lépéseit be szeretnénk tartani. A fordító ugyanabban a sorrendben fogja befordítani ill. végrehajtani, mint ha a main.c-ben lennének létrehozva, de így talán jobban követhetıek a dolgok. Ha valakinek ez nem szimpatikus, átalakítja. A fı ciklus a 85. sortól indul. A 95. sortól azonosítjuk a LED átváltására vonatkozó parancskódot, majd beállítjuk a jelzıt, ha megérkezett a kód. A 106. sorban vizsgáljuk ezt a jelet, és megvizsgáljuk a LED állapotát, és annak megfelelı kódot helyezünk el a pufferben. A 118. sorban elküldjük a PC felé a jelet, aminek hatására a képernyın a visszajelzı kocka színt vált. A 123. sortól vizsgáljuk a Timer0 megszakításban beállított 100Hz-es ütemjelzıt és elküldjük a LED állapotát a PC felé, ha él a jelzı. A 309. sortól kezeljük le a Timer0 megszakítását. 6000 megszakítás történik másodpercenként, ahol minden esetben meghívásra kerül az USBDeviceTasks() rutin. Ezzel a megoldással tehermentesítjük a programot a pollingozás (gyári megoldás) terhei alól. Gyakorlatilag bármit végrehajthatunk a fı programszálban, ami megszakítható, miközben az USB kérések kiszolgálása folyamatos marad. Próbáltam valós USB megszakítás figyelésekkel megoldani a lekezelést, de ez egyelıre nem sikerült. Ez viszont biztosan mőködik, használom, bevált. Az ütem beállításához néhány asm utasítást (NOP), és a 324. sorban a Timer0 kezdeti értékkel való feltöltését használom. Jó szolgálatot tesz ilyenkor a StopWatch ablak és a szimulátor. A 330. sortól a PC felé elküldött csomagok ütemét állítom be (kb. 100Hz). Itt csak egy jelzıbit kerül beállításra, a végrehajtás a fı ciklusban történik. 7. PC program megnyitása, részletezése Töltsük le a PC program állományt, és csomagoljuk ki. Az USBProject.vbp indításával a VB6 fejlesztıi környezet elindul (természetesen, ha fel van telepítve). A csomagban van egy lefordított exe állomány is, ami a kipróbálásra jó, de ha magunk hasznára akarjuk fordítani, akkor szükség van a fordítóra. Az mchidinterface.bas modul tartalmazza azokat a deklarációkat, amelyek az mchid.dll szolgáltatásait hívhatják meg. A MainForm a programunkat tartalmazza. A minket érintı szubrutin a gyáriak közül a Public Sub OnRead(ByVal phandle As Long). Ez hívódik meg automatikusan (eseménykezelt), ha USB csomag érkezett. Az itt látható kódokat lehet szerkeszteni a feladatunknak megfelelıen. Itt a pufferekbe került adatokat válogatjuk, és azoktól függıen listázunk, színeket változtatunk stb. A Form grafikus ablakot a Project lista MainForm linkjére duplán kattintással lehet felhozni. Az objektumokra (pl. a gombok) duplán kattintva, azok lekezelı rutinjába ugrik a szerkesztı. Így jól követhetık a hozzá tartozó folyamatok. Ha egy kattintással kiválasztjuk az objektumot, akkor a tulajdonság ablakban láthatjuk a beállításaikat. Belátható, hogy a fejlesztıi környezet bıvebb ismertetése itt nem oldható meg, de véleményem szerint ez egyszerő, és szinte magától értetıdı, bátran lehet ismerkedni vele. Rengeteg segédanyag található a neten is, pl. az MSDN, a gyártó (Microsoft) teljes adatbázisa, ahol részletesen, példákkal segítenek. Ha ez löketet ad, én is hasonlóan kezdtem...

8. Kapcsolat Kapcsolat: Ha kérdésetek vagy véleményetek van, kérem a wattmep@tvn.hu címre írjatok. A hobbielektronika fórumon is feltehetitek a kérdéseket: PIC - USB - PC projekt: http://www.hobbielektronika.hu/forum/topic_1896_0_asc.html Kérem, privátot ne írjatok szakmai kérdéssel! Jó programozást! 2009.07.28. watt www.wattmep.tvn.hu PDF-et összeállította: 2010.08.29. zenetom