Page 1 of 1

HID Report Descriptor

Posted: Sun Oct 05, 2008 7:40 am
by AmishHero
Hey guys,
Trying to make a device that reports ADC readings from a microphone to my pc. The ADC I'm using (Texas Instruments ADS1242) is 24bit accurate, so ideally I would like to transfer the whole 24bits of information. Currently I have it working with this descriptor:

PROGMEM char usbHidReportDescriptor[USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH] = {
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
//0x15, 0x00, // LOGICAL_MINIMUM (0)
0x09, 0x00, // USAGE (Joystick)
0xa1, 0x01, // COLLECTION (Application)
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x00, // USAGE (Pointer)
0xa1, 0x00, // COLLECTION (Physical)
0x09, 0x36, // USAGE (Slider)
0x27, 0xff, 0xff, 0x00, 0x00, // LOGICAL_MAXIMUM (65535)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x75, 0x10, // REPORT_SIZE (16)
0x95, 0x03, // REPORT_COUNT (3)
0x81, 0x02, // INPUT (Data,Var,Abs)
0xc0, // END_COLLECTION
0xc0 // END_COLLECTION
};

I'm having much difficulty trying to figure out how these reports work and what parameters they can have in them, etc. But this one lets me send 3 readings (I have 3 mics) of 16bits each.

If I try to change it to 2 readings of 32bits it doesn't work (I change the maximum value also).

Basically, how can I transmit more than 16bits for each report?
Also when I send with usbSetInterrupt() there is always 8 bits of 0 prepended to my data, and how can I send more than 8 bytes at once?

Posted: Thu Oct 09, 2008 4:48 pm
by christian
Since you say that you connect a microphone, I assume that you have a sampling rate of more than 8 kHz. AVR-USB is low speed only. The available transfer rate is not enough for one audio channel.

Regarding the HID reports: I usually look for a similar device and check how they did it...