Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
17.10.2010, 16:47
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: USB HID report descriptor
Тема с дескрипторами все равно мне пока не очень понятна, но устройство работает и слава Богу.
Тут другой вопрос назрел. Можно ли сделать джойстик не 8 битным, а 16? Дело в том, что я снимаю показания с точностью 24 бита. Округлять их до 8 легко, но хочется поэкспериментировать. Можно ли написать такой дескриптор, чтобы винда ждала от джойстика 16 бит по каждой оси?
|
|
|
|
30.10.2010, 10:29
|
|
Временная регистрация
Регистрация: 09.02.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: USB HID report descriptor
Добрый день, кто-нибудб подскажет как правильно в рамках одного дескриптора 2 ReportID использовать? Вот с этим дескриптором устройство почти работает, т.е в комп пересылает данные, а вот обратно по ReportID=1 не хочет принимать, видимо желает по ReportID=2 чтоб ему посылали даные.
Код:
|
PROGMEM char usbHidReportDescriptor[USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH] =
{
0x06, 0x00, 0xff, // USAGE_PAGE (Generic Desktop)
0x09, 0x01, // USAGE (Vendor Usage 1)
0xa1, 0x01, // COLLECTION (Application)
0xa1, 0x02, // COLLECTION (Logical)
0x85, 0x01, // REPORT_ID (1)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x05, // REPORT_COUNT (5)
0x09, 0x00, // USAGE (Undefined)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x95, 0x26, // REPORT_COUNT (38)
0x09, 0x00, // USAGE (Undefined)
0x91, 0x02, // OUTPUT (Data,Var,Abs)
0x09, 0x00, // USAGE (Undefined)
0xb1, 0x02, // FEATURE (Data,Var,Abs)
0xc0, // END_COLLECTION
0xa1, 0x02, // COLLECTION (Logical)
0x85, 0x02, // REPORT_ID (2)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255)
0x75, 0x08, // REPORT_SIZE (8)
0x96, 0x60, 0x01, // REPORT_COUNT (352)
0x09, 0x00, // USAGE (Undefined)
0x91, 0x02, // OUTPUT (Data,Var,Abs)
0xc0, // END_COLLECTION
0xc0 // END_COLLECTION
}; |
|
|
|
|
06.12.2010, 00:51
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: USB HID report descriptor
Сам себе отвечаю. Мало ли кому-то тоже надо будет. Делаем 16 битный джойстик. Дескриптор такой:
Цитата:
|
const hid_rpt_desc as hid_report_descriptor = (
( 0x05, 0x01, ' USAGE_PAGE (Generic Desktop)
0x15, 0x00, ' LOGICAL_MINIMUM (0)
0x09, 0x04, ' USAGE (Joystick)
0xa1, 0x01, ' COLLECTION (Application)
0x05, 0x01, ' USAGE_PAGE (Generic Desktop)
0x09, 0x01, ' USAGE (Pointer)
0xa1, 0x00, ' COLLECTION (Physical)
0x09, 0x30, ' USAGE (X)
0x09, 0x31, ' USAGE (Y)
0x75, 0x10, ' REPORT_SIZE (16)
0x95, 0x02, ' REPORT_COUNT (2)
0x15, 0x00, ' LOGICAL_MINIMUM (0)
0x27, 0xff, 0xff, 0x00, 0x00, ' LOGICAL_MAXIMUM (65535)
0x35, 0x00, ' PHYSICAL_MINIMUM (0)
0x47, 0xff, 0xff, 0x00, 0x00, ' PHYSICAL_MAXIMUM (65535)
0x81, 0x02, ' INPUT (Data,Var,Abs)
0xc0, ' END_COLLECTION
0xc0 ' END_COLLECTION
)
)
|
Помогите добавить в дескриптор 8 кнопок, пожалуйста!
Последний раз редактировалось Easyrider83; 06.12.2010 в 01:10.
|
|
|
|
07.12.2010, 20:51
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: USB HID report descriptor
Еще один рабочий дескриптор:
3 оси по 16 бит и 8 кнопок
Цитата:
|
0x05, 0x01, ' USAGE_PAGE (Generic Desktop)
0x15, 0x00, ' LOGICAL_MINIMUM (0)
0x09, 0x04, ' USAGE (Joystick)
0xa1, 0x01, ' COLLECTION (Application)
0x05, 0x01, ' USAGE_PAGE (Generic Desktop)
0x09, 0x01, ' USAGE (Pointer)
0xa1, 0x00, ' COLLECTION (Physical)
0x09, 0x30, ' USAGE (X)
0x09, 0x31, ' USAGE (Y)
0x09, 0x32, ' USAGE (Z)
0x75, 0x10, ' REPORT_SIZE (16)
0x95, 0x03, ' REPORT_COUNT (3)
0x15, 0x00, ' LOGICAL_MINIMUM (0)
0x27, 0xff, 0xff, 0x00, 0x00, ' LOGICAL_MAXIMUM (65535)
0x35, 0x00, ' PHYSICAL_MINIMUM (0)
0x47, 0xff, 0xff, 0x00, 0x00, ' PHYSICAL_MAXIMUM (65535)
0x81, 0x02, ' INPUT (Data,Var,Abs)
0xc0, ' END_COLLECTION
0x05, 0x09, ' USAGE_PAGE (Button)
0x19, 0x01, ' USAGE_MINIMUM (Button 1)
0x29, 0x08, ' USAGE_MAXIMUM (Button
0x15, 0x00, ' LOGICAL_MINIMUM (0)
0x25, 0x01, ' LOGICAL_MAXIMUM (1)
0x75, 0x01, ' REPORT_SIZE (1)
0x95, 0x08, ' REPORT_COUNT (
0x55, 0x00, ' UNIT_EXPONENT (0)
0x65, 0x00, ' UNIT (None)
0x81, 0x02, ' INPUT (Data,Var,Abs)
0xc0 ' END_COLLECTION
|
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:08.
|
|