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?