Fórum témák

» Több friss téma
Fórum » PIC - USB - PC projekt
 
Témaindító: JohnyBravo, idő: Szept 26, 2006
Lapozás: OK   11 / 55
(#) potyo válasza qwer85 hozzászólására (») Jún 1, 2009 /
 
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.
(#) HomA hozzászólása Jún 1, 2009 /
 
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.
(#) qwer85 válasza potyo hozzászólására (») Jún 1, 2009 /
 
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?
(#) potyo válasza qwer85 hozzászólására (») Jún 1, 2009 /
 
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.
(#) icserny válasza qwer85 hozzászólására (») Jún 2, 2009 /
 
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.
(#) qwer85 válasza icserny hozzászólására (») Jún 3, 2009 /
 
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.


  1. void ControlSPI(void)
  2. {
  3. LATCbits.LATC0=1;       //ellenörző led
  4.                
  5.                 TRISCbits.TRISC4 = 0;
  6.                 TRISCbits.TRISC5 = 0;
  7.  
  8.                 OpenSPI(SPI_FOSC_4, MODE_00, SMPMID);
  9.                 SPI_SS_1 = 0;
  10.                 putcSPI(0x10);
  11.                 putcSPI(0x11);
  12.  
  13.                 putcSPI(100);
  14.                
  15.                 SPI_SS_1 = 1;
  16.  
  17.                 CloseSPI();
  18.  
  19. LATCbits.LATC1=1;       //ellenörző led
  20. }
  21.  
  22. void ProcessIO(void)
  23. {      
  24. int x;
  25.  
  26.     //Blink the LEDs according to the USB device status
  27.     if(blinkStatusValid)
  28.     {
  29.         BlinkUSBStatus();
  30.     }
  31.    
  32.     // User Application USB tasks
  33.     if((USBDeviceState < CONFIGURED_STATE)||(USBSuspendControl==1)) return;
  34.  
  35.     if(!HIDRxHandleBusy(USBOutHandle))
  36.     {  
  37.         switch(ReceivedDataBuffer[0])
  38.         {
  39.                         case 0x90:
  40.                                 blinkStatusValid = FALSE;
  41.                                 mLED_2_Off();
  42.                                 mLED_1_Off();
  43.                                 mLED_3_Off();
  44.                                 mLED_4_Off();                          
  45.  
  46.                                 LATCbits.LATC2=1;       //ellenörző led
  47.                                 ControlSPI();
  48.                                 LATCbits.LATC3=1;       //ellenörző led
  49.                
  50.                                 break;
  51.         }
  52.     }
  53.         .
  54.         .
  55.         .
(#) GODy hozzászólása Jún 3, 2009 /
 
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
(#) qwer85 válasza qwer85 hozzászólására (») Jún 3, 2009 /
 
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 /
(#) icserny válasza qwer85 hozzászólására (») Jún 4, 2009 /
 
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.
(#) whalaky hozzászólása Júl 14, 2009 /
 
Ü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
(#) watt válasza whalaky hozzászólására (») Júl 14, 2009 /
 
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?
(#) potyo válasza whalaky hozzászólására (») Júl 14, 2009 /
 
Próbáld meg a CCS-hez adott drivert használni. Az mchpusb.inf, mint a neve is mutatja, microchip gyártmányú.
(#) whalaky válasza potyo hozzászólására (») Júl 14, 2009 /
 
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...
(#) potyo válasza whalaky hozzászólására (») Júl 14, 2009 /
 
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.
(#) watt válasza potyo hozzászólására (») Júl 14, 2009 /
 
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...
(#) potyo válasza watt hozzászólására (») Júl 14, 2009 /
 
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
(#) watt válasza potyo hozzászólására (») Júl 14, 2009 /
 
Igazából még HID-elni nem HID-altam, majd ettől biztos. Köszi!
(#) potyo válasza watt hozzászólására (») Júl 14, 2009 /
 
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...
(#) Gory válasza watt hozzászólására (») Júl 14, 2009 /
 
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
(#) watt válasza Gory hozzászólására (») Júl 14, 2009 /
 
Köszi megnézem.
Nekem azért kéne HID, mert nem kell telepíteni hozzá drivert. Meglátom mennyire érthető.
(#) watt válasza potyo hozzászólására (») Júl 14, 2009 /
 
Igen, a demo egeret már nézegetem, ki is próbáltam jópofa rajzokat rajzol paint-ben!
(#) Gory válasza watt hozzászólására (») Júl 14, 2009 /
 
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.
(#) watt válasza Gory hozzászólására (») Júl 14, 2009 /
 
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.
(#) icserny válasza Gory hozzászólására (») Júl 14, 2009 /
 
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.
(#) watt válasza icserny hozzászólására (») Júl 14, 2009 /
 
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!
(#) icserny válasza watt hozzászólására (») Júl 15, 2009 /
 
  1. c:\Microchip Solutions tartalma:
  2.  
  3. [Microchip]
  4. [USB Device - Bootloaders]
  5. [USB Device - CDC - Basic Demo]
  6. [USB Device - CDC - Serial Emulator]
  7. [USB Device - Composite - HID + MSD]
  8. [USB Device - HID - Custom Demos]        <------- Ez az!
  9. [USB Device - HID - Keyboard]
  10. [USB Device - HID - Mouse]
  11. [USB Device - LibUSB - Generic Driver Demo]
  12. [USB Device - Mass Storage - Internal Flash]
  13. [USB Device - Mass Storage - SD Card data logger]
  14. [USB Device - Mass Storage - SD Card reader]
  15. [USB Device - MCHPUSB - Generic Driver Demo]
  16. [USB Device - WinUSB - Generic Driver Demo]
  17. [USB PC - WM_DEVICECHANGE Demo]
  18. [USB Precompiled Demos]
  19. [USB Tools]


A PC oldali alkalmazásnál az érdemi dolgokat a Form1.h tartalmazza.
(#) watt válasza icserny hozzászólására (») Júl 15, 2009 /
 
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.
(#) icserny válasza watt hozzászólására (») Júl 15, 2009 /
 
Nálam pl. itt vannak:

  1. c:\Microchip Solutions\USB Device - HID - Custom Demos\Generic HID - Simple Demo - PC Software\Microsoft Visual C++ 2005 Express\Form1.h
  2. c:\Microchip Solutions\USB Device - HID - Custom Demos\Generic HID - PnP Demo - PC Software\Microsoft Visual C++ 2005 Express\Form1.h
(#) watt válasza icserny hozzászólására (») Júl 15, 2009 /
 
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?
(#) watt válasza icserny hozzászólására (») Júl 15, 2009 /
 
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!
Következő: »»   11 / 55
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem