Vyznáte se někdo v USB descriptorech ? Nyní používám tento descriptor :
PROGMEM const char usbHidReportDescriptor[38] = { /* USB report descriptor */
0x06, 0x00, 0xff, // USAGE_PAGE (Generic Desktop)
0x09, 0x01, // USAGE (Vendor Usage 1)
0xa1, 0x01, // COLLECTION (Application)
0x19, 0x01, // USAGE_MINIMUM (0)
0x29, 0x03, // USAGE_MAXIMUM (3)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x03, // REPORT_COUNT (3)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x19, 0x01, // USAGE_MINIMUM (0)
0x29, 0x03, // USAGE_MAXIMUM (3)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x03, // REPORT_COUNT (3)
0x91, 0x02, // OUTPUT (Data,Var,Abs)
0xc0 // END_COLLECTION
};
Zařízení : ATmega32 s V-USB
Na straně PC nějaká knihovna od Microchipu psaná v C++. Celé to pracuje ve třídě HID.
Problém nastává, když chci poslat pole větší než je 3 tj. má více jak tři buňky (buňka může mít hodnotu 0-255). Když změním "REPORT_COUNT" a "USAGE_MAXIMUM", velikost přenášeného pole se zvýší, ovšem funguje to pouze do 10, nad 10 se komunikace zhroutí. Na netu jsou vidět výtvory, kde pomocí V-USB přenášejí až pole do velikosti 128, bohužel u žádné konstrukce nejsou zdrojáky. Nenapadá někoho něco ? Díky