Ir ao conteúdo
  • Cadastre-se

Pic 18F4550 USB problemas de comunicação.


Posts recomendados

Tudo bem pessoal? Estou com um problema. Estou fazendo um projeto que lê informações vindas de um sensor e joga para um software no PC através da USB, estou usando HID para mandar. Segue abaixo o código. O meu problema é, quando compilo, coloco a usb ele não identifica nada, como se nada estivesse sido plugado, alguém ja possou por isso ou sabe arrumar? Tem algo de errado com meu código? Estou usando o MikroC para compilar.

 

Arquivo Usbdsc.c gerado pelo HID terminal do MikroC

const unsigned int USB_VENDOR_ID = 0x1234;const unsigned int USB_PRODUCT_ID = 0x0001;const char USB_SELF_POWER = 0xC0;            // Self powered 0xC0,  0x80 bus poweredconst char USB_MAX_POWER = 50;               // Bus power required in units of 2 mAconst char HID_INPUT_REPORT_BYTES = 64;const char HID_OUTPUT_REPORT_BYTES = 64;const char USB_TRANSFER_TYPE = 0x03;         //0x03 Interruptconst char EP_IN_INTERVAL = 1;const char EP_OUT_INTERVAL = 1;const char USB_INTERRUPT = 1;const char USB_HID_EP = 1;const char USB_HID_RPT_SIZE = 33;/* Device Descriptor */const struct {    char bLength;               // bLength         - Descriptor size in bytes (12h)    char bDescriptorType;       // bDescriptorType - The constant DEVICE (01h)    unsigned int bcdUSB;        // bcdUSB          - USB specification release number (BCD)    char bDeviceClass;          // bDeviceClass    - Class Code    char bDeviceSubClass;       // bDeviceSubClass - Subclass code    char bDeviceProtocol;       // bDeviceProtocol - Protocol code    char bMaxPacketSize0;       // bMaxPacketSize0 - Maximum packet size for endpoint 0    unsigned int idVendor;      // idVendor        - Vendor ID    unsigned int idProduct;     // idProduct       - Product ID    unsigned int bcdDevice;     // bcdDevice       - Device release number (BCD)    char iManufacturer;         // iManufacturer   - Index of string descriptor for the manufacturer    char iProduct;              // iProduct        - Index of string descriptor for the product.    char iSerialNumber;         // iSerialNumber   - Index of string descriptor for the serial number.    char bNumConfigurations;    // bNumConfigurations - Number of possible configurations} device_dsc = {      0x12,                   // bLength      0x01,                   // bDescriptorType      0x0200,                 // bcdUSB      0x00,                   // bDeviceClass      0x00,                   // bDeviceSubClass      0x00,                   // bDeviceProtocol      8,                      // bMaxPacketSize0      USB_VENDOR_ID,          // idVendor      USB_PRODUCT_ID,         // idProduct      0x0001,                 // bcdDevice      0x01,                   // iManufacturer      0x02,                   // iProduct      0x00,                   // iSerialNumber      0x01                    // bNumConfigurations  };/* Configuration 1 Descriptor */const char configDescriptor1[]= {    // Configuration Descriptor    0x09,                   // bLength             - Descriptor size in bytes    0x02,                   // bDescriptorType     - The constant CONFIGURATION (02h)    0x29,0x00,              // wTotalLength        - The number of bytes in the configuration descriptor and all of its subordinate descriptors    1,                      // bNumInterfaces      - Number of interfaces in the configuration    1,                      // bConfigurationValue - Identifier for Set Configuration and Get Configuration requests    0,                      // iConfiguration      - Index of string descriptor for the configuration    USB_SELF_POWER,         // bmAttributes        - Self/bus power and remote wakeup settings    USB_MAX_POWER,          // bMaxPower           - Bus power required in units of 2 mA    // Interface Descriptor    0x09,                   // bLength - Descriptor size in bytes (09h)    0x04,                   // bDescriptorType - The constant Interface (04h)    0,                      // bInterfaceNumber - Number identifying this interface    0,                      // bAlternateSetting - A number that identifies a descriptor with alternate settings for this bInterfaceNumber.    2,                      // bNumEndpoint - Number of endpoints supported not counting endpoint zero    0x03,                   // bInterfaceClass - Class code    0,                      // bInterfaceSubclass - Subclass code    0,                      // bInterfaceProtocol - Protocol code    0,                      // iInterface - Interface string index    // HID Class-Specific Descriptor    0x09,                   // bLength - Descriptor size in bytes.    0x21,                   // bDescriptorType - This descriptor's type: 21h to indicate the HID class.    0x01,0x01,              // bcdHID - HID specification release number (BCD).    0x00,                   // bCountryCode - Numeric expression identifying the country for localized hardware (BCD) or 00h.    1,                      // bNumDescriptors - Number of subordinate report and physical descriptors.    0x22,                   // bDescriptorType - The type of a class-specific descriptor that follows    USB_HID_RPT_SIZE,0x00,  // wDescriptorLength - Total length of the descriptor identified above.    // Endpoint Descriptor    0x07,                   // bLength - Descriptor size in bytes (07h)    0x05,                   // bDescriptorType - The constant Endpoint (05h)    USB_HID_EP | 0x80,      // bEndpointAddress - Endpoint number and direction    USB_TRANSFER_TYPE,      // bmAttributes - Transfer type and supplementary information        0x40,0x00,              // wMaxPacketSize - Maximum packet size supported    EP_IN_INTERVAL,         // bInterval - Service interval or NAK rate    // Endpoint Descriptor    0x07,                   // bLength - Descriptor size in bytes (07h)    0x05,                   // bDescriptorType - The constant Endpoint (05h)    USB_HID_EP,             // bEndpointAddress - Endpoint number and direction    USB_TRANSFER_TYPE,      // bmAttributes - Transfer type and supplementary information    0x40,0x00,              // wMaxPacketSize - Maximum packet size supported        EP_OUT_INTERVAL         // bInterval - Service interval or NAK rate};const struct {  char report[USB_HID_RPT_SIZE];}hid_rpt_desc =  {     {0x06, 0x00, 0xFF,       // Usage Page = 0xFF00 (Vendor Defined Page 1)      0x09, 0x01,             // Usage (Vendor Usage 1)      0xA1, 0x01,             // Collection (Application)  // Input report      0x19, 0x01,             // Usage Minimum      0x29, 0x40,             // Usage Maximum      0x15, 0x00,             // Logical Minimum (data bytes in the report may have minimum value = 0x00)      0x26, 0xFF, 0x00,       // Logical Maximum (data bytes in the report may have maximum value = 0x00FF = unsigned 255)      0x75, 0x08,             // Report Size: 8-bit field size      0x95, HID_INPUT_REPORT_BYTES,// Report Count      0x81, 0x02,             // Input (Data, Array, Abs)  // Output report      0x19, 0x01,             // Usage Minimum      0x29, 0x40,             // Usage Maximum      0x75, 0x08,             // Report Size: 8-bit field size      0x95, HID_OUTPUT_REPORT_BYTES,// Report Count      0x91, 0x02,             // Output (Data, Array, Abs)      0xC0}                   // End Collection  };//Language code string descriptorconst struct {  char bLength;  char bDscType;  unsigned int string[1];  } strd1 = {      4,      0x03,      {0x0409}    };//Manufacturer string descriptorconst struct{  char bLength;  char bDscType;  unsigned int string[26];  }strd2={    54,           //sizeof this descriptor string    0x03,    {'P','r','o','j','e','c','t',' ','P','e','r','f','o','r','m','a','n','c','e',' ','T','i','s','s','u','e'}  };//Product string descriptorconst struct{  char bLength;  char bDscType;  unsigned int string[26];}strd3={    54,          //sizeof this descriptor string    0x03,    {'P','r','o','j','e','c','t',' ','P','e','r','f','o','r','m','a','n','c','e',' ','T','i','s','s','u','e'} };//Array of configuration descriptorsconst char* USB_config_dsc_ptr[1];//Array of string descriptorsconst char* USB_string_dsc_ptr[3];void USB_Init_Desc(){  USB_config_dsc_ptr[0] = &configDescriptor1;  USB_string_dsc_ptr[0] = (const char*)&strd1;  USB_string_dsc_ptr[1] = (const char*)&strd2;  USB_string_dsc_ptr[2] = (const char*)&strd3;}
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...