- c:\Microchip Solutions tartalma:
- [Microchip]
- [USB Device - Bootloaders]
- [USB Device - CDC - Basic Demo]
- [USB Device - CDC - Serial Emulator]
- [USB Device - Composite - HID + MSD]
- [USB Device - HID - Custom Demos] <------- Ez az!
- [USB Device - HID - Keyboard]
- [USB Device - HID - Mouse]
- [USB Device - LibUSB - Generic Driver Demo]
- [USB Device - Mass Storage - Internal Flash]
- [USB Device - Mass Storage - SD Card data logger]
- [USB Device - Mass Storage - SD Card reader]
- [USB Device - MCHPUSB - Generic Driver Demo]
- [USB Device - WinUSB - Generic Driver Demo]
- [USB PC - WM_DEVICECHANGE Demo]
- [USB Precompiled Demos]
- [USB Tools]
Fórum témák
» Több friss téma |
Fórum » PIC - USB - PC projekt
A probléma a Delay10KTCYx(1) függvények hívásával van. Egy ilyen 10000 utasításciklusra megállítja a kontrollert, ami 40MHz-es órajel mellett is 1ms, tehát egy ilyen ControlSPI() hívás legalább 5ms ideig tart. Ehelyett írj egy saját SPI kezelést, amiben nincsenek ilyen várakozások, és akkor menni fog.
Hali! Ezzel a projecttel itt még nem találkoztam, nézzetek szét itt is:
http://www.elektor-electronics.co.uk/magazines/2007/november/usb-da....lynkx Valamikor egy gyenge pillanatukban ingyen letölthető volt a teljes project néhány más kapcsolással együtt, de a kódok így is hozzáférhetők.
Köszi, kivettem így már működik (először Delay10KTCYx(50); volt ) viszont így felmerül egy kérdés: nem lesz túl gyors a 'túloldalon' lévő F690-hez akinek az órajele csak 1MHz?
Szerintem nem lesz az, mert az SPI órajelét a master adja, az adat feldolgázáshoz meg az 1MHz is elég lehet. Persze ez attól is függ, hogy mit csinál a másik kontroller.
Ennek a sok késleltetésnek így semmi értelme! Az SPI a PIC16F690-ben is hardver támogatott, tehát legfeljebb a küldött bájtok vagy adatcsomagok közt van értelme szünetet beiktatni. De egyszerűbb a bitrátát lejjebb venni (Fosc/4 helyett pl. Fosc/16 vagy Fosc/64), ha szükséges egyáltalán.
Az miért van, hogy a while() ciklusba rakott ControlSPI függvény minden sora lefut, míg a ProcessIO()-ban egy switch case-be rakva már nem.
Konkrétan az alant látható kód azt eredményezi, hogy miután elküldtem a gépről a 0x90 számot felkapcsol az összes led (tehát elvileg minden kód lefutott), de nem küldi át a slave-nek a 0x10 0x11 értéket. Ha viszont a while() ciklusba rakom akkor mindig lefut a ControlSPI szépen el is küldi a 0x10 0x11 számpárost.
Sziasztok!
Nekem olyan kérdésem lenne, hogy találkozott-e már valaki azzal az USB modullal, amit ide belinkeltem. Amit írnak róla az oldalon, az elegendő, én inkább olyan valaki válaszát várom, aki ilyennek vagy hasonlóval dolgozott már. És, hogy milyen tapasztalatai vannak, érdemes lenne-e befektetnem egy ilyenbe. A programozást valahogy megoldanám, a Delphit középszinten már ismerem, igaz még ilyen téren nem dolgoztam vele. A válaszokat előre is köszi, sziasztok! USB modul linkje
Senkinek semmi ötlete? Vagy nem ide kellene írnom? Nem lehet, hogy kiküld ugyan vmi adatot hisz a kód többi része lefut, de olyan 'összevisszaságot' amit a slave nem tud értelmezni? Kezdem feladni, már mindenhogyan próbálkoztam és nem akar működni.
/Jó egyféleképpen nem próbáltam, interruptokkal, de azt írtátok anélkül is kellene menie / Idézet: „Nem lehet, hogy kiküld ugyan vmi adatot hisz a kód többi része lefut, de olyan 'összevisszaságot' amit a slave nem tud értelmezni?” Ez csak akkor derül ki, ha megnézed a kimenetet valamivel. (Pl. PICkit2 logikai analizátor módban). Ajánlottam már azt is, hogy vedd lejjebb az SPI órajel sebességét, ha szükségesnk látod.
Üdv az Uraknak!
Összeraktam PIC18F4550 minimal config-al egy próbanyákot, próbaképpen beletöltöttem a CCS ex_usb_serial programját. Amint az USB-re akasztom, a windows új hardvert talál, és itt akadok meg.... hiába mutogatom neki az mchpusb.inf-eket, közli hogy nem tartalmaz információt a hjardverről . Ami még érdekes, hogy a könyvtár nevén ismeri fel. Ha valakinek van valami ötlete segítsen! Köszönöm! W
Tudomásom szerint a mchpusb.inf C18-ban íródott firmware-hoz valóó, nem a CCS-ben íródotthoz. Bár ettől még telepíthetné a drivert.
Nekem van egy Thosiba laptopom, amire a CDC driver nem megy fel. Máig nem sikerült kideríteni miért nem. Esetleg nem tudja valaki?
Próbáld meg a CCS-hez adott drivert használni. Az mchpusb.inf, mint a neve is mutatja, microchip gyártmányú.
KÖSZI!
Megtalálta! Valamelyik fórumon olvastam hogy az jó hozzá..... hát nem. Szégyen, de eszembe sem jutott hogy megnézzem adtak-e hozzá sajátot...
USB-nél egyszerűen muszáj a drivernek igazodnia a device-eben futó firmwarehez. Ha másért nem, akkor a PID és VID-nek passzolnia kell, de ezen kívül más különbségek is lehetnek. Ettől lesz univerzális az USB, hogy a hardveres kommunikáció ugyanaz, afölé viszont sokféle funkciójú eszközt lehet építeni, és a driver illetve a firmware oldja meg a funkciókat. Persze vannak standard driverek, mint a billentyűzet, egér, pendrive, ilyesmik, de akkor ezek meg kell, hogy feleljenek a stardard drivernek.
Erről jut eszembe, van valami könnyen olvasható irodalom a Protokol kódokról? pl. az egéré a 2-es...
Ha HID-el akarok egy kommunikációt felépíteni, milyen protokol lenne jó a CDC kiváltására? (Tényleg, megnézem a PK2-t milyet használ...) Azért kéne, mert a CDC nem megy fel arra a laptopra, amin a programomat használni akarom. A HID-el még PC oldalról is meg kell küzdenem...
Elvileg ebben van a HID protokollokról leírás, ettől érthetőbbel nem találkoztam eddig, de gondolom ezt te is ismered: Link
Igazából még HID-elni nem HID-altam, majd ettől biztos. Köszi!
Vannak a Microchip USB csomagjában HID demók, szerintem abból kellene kiindulni. Nekem is eljön majd egyszercsak az ideje, ha el akarom sütni az akkutöltőt diplomamunkaként az egyetemen...
A specifikáció elolvasásával mondjuk azért még nehéz használható kódot írni. Nem biztos hogy neked HID kell. A custom driver-es demó is használható szerintem. Az mpusbapi.dll vagy hasonló nevű dll-en keresztül lehet elérni. Nemtudom hogy az újabb USB stackekbe is belerakják.e de a régebbiekben benne volt.
Azt hiszem ebben a cikkben van leírás róla: Bővebben: Link
Köszi megnézem.
Nekem azért kéne HID, mert nem kell telepíteni hozzá drivert. Meglátom mennyire érthető.
Igen, a demo egeret már nézegetem, ki is próbáltam jópofa rajzokat rajzol paint-ben!
A HID is driverrel működik csak benne van a windowsban, nem kell feltelepíteni. Viszont a HID class-ba tartozó eszközk drivereit nemtudom mennyire egyszerű elérni vagy valahogy a programodba irányítani. Például hogy ha egy egeret csinálsz, felismeri a windows, betölti hozzá a drivert, akkor nemtudom hogy tudod az adatokat a programból felhasználni, úgy hogy nem mászkáljon közben meg a kurzor. (Vagy billentyű stb esetén például ne gépeljen miközben azok valójában a te adataid.)
Ha meg valahogy mégis egy vendor specific eszközt csinálsz, akkor nem tudom nem kell-e feltenni drivert annak ellenére hogy HID. Szerintem igen. (már ha ilyet lehet csinálni) Bár erre a problémára biztos találsz valamit a googlin. Idézet: „A HID is driverrel működik csak benne van a windowsban” Most kukacoskodsz? Természetesen nem az 1-es és a 2-es protokol kódot fogom használni. A PK2 pl. a 0-st használja. Találtam már definiciókat VB6 alá, ami a HID API hívásokat támogatja. Még nem próbáltam, még nagyon képlékeny a dolog, de vannak szálak, amik talán összeállnak. Mindenesetre addig nem adom fel, amíg van ötletem. Idézet: „Például hogy ha egy egeret csinálsz, felismeri a windows, betölti hozzá a drivert, akkor nem tudom, hogy tudod az adatokat a programból felhasználni, úgy hogy nem mászkáljon közben meg a kurzor.” Egeret, billentyűt éppen ezért nem érdemes emulálni. Szerintem a HID custom demóból kell kiindulni, az csak az őt meghívó alkalmazásnak küld adatokat. Idézet: „Ha meg valahogy mégis egy vendor specific eszközt csinálsz, akkor nem tudom nem kell-e feltenni drivert annak ellenére hogy HID.” Tudtommal nem kell, VID/PID alapján történik az azonosítás, s driver helyett az alkalmazásnak kell tudnia, hogy mit jelenteek az adatok. A kommunikáció meg bizonyára szabványos formában zajlik. Idézet: „Szerintem a HID custom demóból kell kiindulni” Ez jól hangzik, de én eddig csak az egeres demót találtam meg. Rákeresek, ha létezik megtalálom. Köszi! A PC oldali alkalmazásnál az érdemi dolgokat a Form1.h tartalmazza.
Nézegettem még tegnap, jónak tűnik, de ehhez is kell egy dll, és valami driver is, de ez utóbbi lehet, hogy nem. Jó lenne, ha csak bedugná az ember bármelyik gépbe és menne.
Megnézem jobban még. Köszi! ui. A telepített állományok között nem találtam Form1.h-t.
Nálam pl. itt vannak:
Hm! Nálam egyáltalán nem keletkezett Microchip Solutions könyvtár. Nekem MCHPFSUSB könyvtár keletkezik. Biztos nem ugyanazt az állományt telepítettük, ez tiszta, de én nem találok mást a microchip oldalán. Segítenél egy likkel?
Megvan! Megjegyzem elég gáz néha a microchip oldala! Én logikusan - itt - kerestem eddig, nem a demo kártya oldalán, mivel nincs demo kártyám. Itt viszont nincs belinkelve az ami kéne. Lényeg, hogy megtaláltam! Köszi a segítséget!
|
Bejelentkezés
Hirdetés |