Fórum témák

» Több friss téma
Fórum » CCS PIC Compiler
 
Témaindító: (Felhasználó 1542), idő: Ápr 3, 2006
Lapozás: OK   30 / 118
(#) icserny válasza whalaky hozzászólására (») Nov 5, 2009 /
 
Számomra áttekinthetetlennek tűnik a CCS USB kezelése (igaz, a Microchipé is, úgyhogy bennem van a hiba!), de az eddig látottak/olvasottak alapján az usb_hid.c vagy valamelyik másik (pl. ex_usb_kbmouse2.c) példából kellene kiindulni. Ezekben kevésbé cifrázzák a konfigurálást, lényegében ennyit látok:

  1. //Tells the CCS PIC USB firmware to include HID handling code.
  2. #DEFINE USB_HID_DEVICE  TRUE
  3.  
  4. //the following defines needed for the CCS USB PIC driver to enable the TX endpoint 1
  5. #define USB_EP1_TX_ENABLE  USB_ENABLE_INTERRUPT   //turn on EP1 for IN bulk/interrupt transfers
  6. #define USB_EP1_TX_SIZE 8
  7.  
  8. #define USB_EP1_RX_ENABLE  USB_ENABLE_INTERRUPT   //turn on EP1 for IN bulk/interrupt transfers
  9. #define USB_EP1_RX_SIZE 8

Az interrupt vagy bulk gondolom, ízlés dolga. A bufferméretnél itt EP1 van és nem HID, mint nálad. A méret (TX/RX_SIZE) ebben a példában 8, ezt nyilván növelni kell. Úgy tudom, hogy ez kettő hatványa szerinti szám, tehát 10 ne legyen, hanem 16, 32, vagy 64!

A full-speed elvileg alapértelmezett, csak letiltására láttam példát (#define USB_USE_FULL_SPEED FALSE)

Tehát PIC18F2550 esetén eleve full-speed kellene,
hogy menjen.

A nagy kérdés azonban az, hogy a belső USB felhúzás be van-e kapcsolva, vagy ki mondja meg a PC-nek, hogy most egy Full-speed, vagy Low-speed eszköz kapcsolódott?

Ami még nagyon fontos: a definiciók legyenek előbb, utána az include-ok!
(#) trudnai válasza icserny hozzászólására (») Nov 5, 2009 /
 
Igen, ezt en sem ismerem sajnos es nem tudom ez az RX/TX mit csinal, mit allit be, de ahogy mar emlitettem a HID eszkoz a szabvany szerint Interrupt protokollt hasznal (idezet a HID szabvany konyvbol):

Idézet:
„4.4 Interfaces
A HID class device communicates with the HID class driver using either the Control (default) pipe or an Interrupt pipe.”


(Ugye itt az Interrupt vonatkozik a tenyleges adat atvitelre, a Control az valoban csak az USB ugyes bajos dolgainak kezelesere szolgal, de szamunkra hasznos informaciot nem tovabbit a PC fele). Szoval nem tudom az az RX/TX mit allit, de ha ehhez van koze akkor ezt is figyelembe kell venni, minthogy low speednel az Interrupt buffer merete 8, full-nal 64, tehat lehet 64-re kellene allitani(?). Ha nincs koze az Interrupt protokollhoz akkor viszont utana kell jarni, hogy az az USB-s konyvtar amit Whalaky hasznal kepes-e pl az atkuldendo adathalmazt csomagokra bontva tovabbitani blokkmeretre szeletelt allapotban.

Az pedig, hogy nem megy a full speed azt nem tudom miert lehet, de tenyleg elkepzelheto ahogy mondod, hogy a felhuzok nincsenek (jol) beallitva, vagy pl a kabel nem megfelelo, az orajel nincs jol beallitva -- nem tudom...
(#) pepe33 hozzászólása Nov 5, 2009 /
 
Nem nagyon ismerem az USB-t de ezeket a projekteket kipróbáltam már >> ITT<<
.
Lehet hogy érdemes átnézni a kódot, hátha el lehet lesni belőle valamit.
(#) icserny válasza pepe33 hozzászólására (») Nov 6, 2009 /
 
Köszönjük a tippet, nagyon hasznosnak látszik! Az USB HID oscilloscope forráskódjában látottak megerősítik a korábban írottakat. A konfigurálás ebben így néz ki:

  1. #define __USB_PIC_PERIF__ 1
  2.  
  3. #include <18F2550.h>
  4. #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
  5. #use delay(clock=48000000)
  6.  
  7. // CCS Library dynamic defines
  8. #DEFINE USB_HID_DEVICE  TRUE //Tells the CCS PIC USB firmware to include HID handling code.
  9. #define USB_EP1_TX_ENABLE  USB_ENABLE_INTERRUPT   //turn on EP1 for IN bulk/interrupt transfers
  10. #define USB_EP1_TX_SIZE    64  //allocate 64 bytes in the hardware for transmission
  11. #define USB_EP1_RX_ENABLE  USB_ENABLE_INTERRUPT   //turn on EP1 for OUT bulk/interrupt transfers
  12. #define USB_EP1_RX_SIZE    64  //allocate 64 bytes in the hardware for reception
  13.  
  14. // CCS USB Libraries
  15. #include <pic18_usb.h>   //Microchip 18Fxx5x hardware layer for usb.c
  16. #include <usb_desc_hid 8-byte.h>        //USB Configuration and Device descriptors for this UBS device
  17. #include <usb.c>        //handles usb setup tokens and get descriptor reports


A kapcsolási rajz szerint ez a program a belső felhúzást használja (mert a PIC-en kívül semmi sincs a D+/D- vonalakra kötve).
(#) zoox hozzászólása Nov 6, 2009 /
 
Sziasztok.
Tud valaki segiteni?Hi-teck c forditohoz hol találok 16fxxx pichez header fileket.Szóval ujból elkezdem tanulni a pic c nyelven programozását (MPLAB 8.1 C forditó Hi-TECH 9.7)és elakadtam mert a pic16f877 hez nem találok header filet (sok tipushoz van de ehhez pont nincs)lehet hogy én vagyok a béna és nem találom.Ha valaki tud linket vagy tud segiteni megköszönném.
Ui:lehet hogy hülyeséget kérdezek de a CCS forditó header feleit nem lehet hozza használni?
(#) whalaky válasza icserny hozzászólására (») Nov 6, 2009 /
 
Hála és köszönet mindenkinek!
Kitörő örömmel jelentem a cucc MŰKÖDIK.

icserny "találmánya" bejött egy kis kiegészítéssel
  1. #define USB_CONFIG_HID_TX_SIZE   16
  2. #define USB_CONFIG_HID_RX_SIZE   16


Erre azért volt szükség, mert a PC oldali program a készülék csatlakozáskor megkapja hogy milyen hosszú csomagokat fog küldeni, és ahoz állítja be a PC oldali buffer méretét.

Ami érdekes a dologban hogy így is csak 16 byte-os csomagokat hajlandó küldeni, de az a mostani projectemhez elégnek tűnik.
Azért ha valakinek van ötlete rá azt még szívesen venném, hátha máshol még jól jöhet

Mégegyszer köszönöm mindenkinek!
Üdv!
Whalaky
(#) icserny válasza whalaky hozzászólására (») Nov 6, 2009 /
 
  1. #define USB_CONFIG_HID_TX_SIZE   16

Ezt honnan vetted? Végigkerestettem az egész CCS könyvtárat, de dehol nincs ilyen nevű szimbólum!