Diskuze - danyk.cz

Vlákno z kategorie: Hlavní diskuze
Celkem 1 odpovědí.


8.10.2016 (17:55:33) K # IP X
antibalda obalka (web) :
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
12.10.2016 (00:58:18)  # IP X
Ollie obalka :
Zkontroluj nastavení velikostí EndPointů - EP deskriptory.
Taky by měly sedět velikosti bufferů na straně PC.
Myslím, že pro Low-speed zařízení specifikace dovoluje velikost Interrupt EndPointu (který se používají pro HID) jenom 8B..
Přezdívka:
Heslo:
Text: