Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 10.07.2017, 15:22  
alex 54
Временная регистрация
 
Регистрация: 10.03.2017
Сообщений: 69
Сказал спасибо: 77
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
alex 54 на пути к лучшему
По умолчанию Re: USB HID.Помогите разобраться с дескрипторами.

В примере,который я собираюсь использовать HID report descriptor выглядит так:

//! HID report descriptor for standard HID mouse
UDC_DESC_STORAGE udi_hid_mouse_report_desc_t udi_hid_mouse_report_desc = {
{
0x05, 0x01, /* Usage Page (Generic Desktop), */
0x09, 0x02, /* Usage (Mouse), */
0xA1, 0x01, /* Collection (Application), */
0x09, 0x01, /* Usage (Pointer), */
0xA1, 0x00, /* Collection (Physical), */
0x05, 0x09, /* Usage Page (Buttons), */
0x19, 0x01, /* Usage Minimum (01), */
0x29, 0x03, /* Usage Maximum (03), */
0x15, 0x00, /* Logical Minimum (0), */
0x25, 0x01, /* Logical Maximum (1), */
0x75, 0x01, /* Report Size (1), */
0x95, 0x03, /* Report Count (3), */
0x81, 0x02, /* Input (Data, Variable, Absolute) */
0x75, 0x05, /* Report Size (5), */
0x95, 0x01, /* Report Count (1), */
0x81, 0x01, /* Input (Constant), */
0x05, 0x01, /* Usage Page (Generic Desktop), */
0x09, 0x30, /* Usage (X), */
0x09, 0x31, /* Usage (Y), */
0x09, 0x38, /* Usage (Scroll), */
0x15, 0x81, /* Logical Minimum (-127), */
0x25, 0x7F, /* Logical Maximum (127), */
0x75, 0x08, /* Report Size (, */
0x95, 0x03, /* Report Count (3), */
0x81, 0x06, /* Input (Data, Variable, Relative) */
0xC0, /* End Collection, */
0xC0, /* End Collection */

Дальше я,как понимаю,должен описать Usage Page (Buttons)и раздел соответствующий USAGE_PAGE (Sim. Controls)Вашего дескриптора,это получается Usage (Pointer),
посчитать и указать полученное значение в дескрипторе конечной точки.
Вы не могли бы прокомментировать эти две строчки?

0x09, 0x01, /* Usage (Pointer), */
0xA1, 0x00, /* Collection (Physical), */
Реклама:

Последний раз редактировалось alex 54; 10.07.2017 в 15:58.
alex 54 вне форума  
Непрочитано 10.07.2017, 18:11  
RECTO
Супер-модератор
 
Регистрация: 09.06.2011
Сообщений: 2,668
Сказал спасибо: 74
Сказали Спасибо 1,803 раз(а) в 654 сообщении(ях)
RECTO на пути к лучшему
По умолчанию Re: USB HID.Помогите разобраться с дескрипторами.

Сообщение от alex 54 Посмотреть сообщение
Дальше я,как понимаю,должен описать Usage Page (Buttons)и раздел соответствующий USAGE_PAGE (Sim. Controls)Вашего дескриптора,это получается Usage (Pointer),
посчитать и указать полученное значение в дескрипторе конечной точки.
Честно говоря, не совсем понимаю, что Вы хотите сделать...
Если Вы опишите в репорте только кнопки - ну, тогда и получите на выходе джойстик с одними только кнопками.
Только почему "дальше"? Ваш репорт мыши нужно заново переписать под джойстик, а не добавлять к нему что-то.
Дескриптор конечной точки оставьте в покое... Если только не хотите что-то менять глобально.


Сообщение от alex 54 Посмотреть сообщение
Вы не могли бы прокомментировать эти две строчки?
0x09, 0x01, /* Usage (Pointer), */
0xA1, 0x00, /* Collection (Physical), */
Ваш репорт описывает несколько отдельных элементов, которые управляют одним и тем же объектом (указателем мыши). Поэтому эти элементы объединяются в одну физическую группу.
В репорте джойстика, который я ранее приводил для примера, этого нет - там каждый элемент управляет своим объектом, поэтому объединять их в физическую группу не требуется.

Вообще же, этот репорт мыши вполне типовой, так что стоило только немного погуглить, и сразу нашлось несколько ссылок с его описанием, например.
RECTO вне форума  
Сказали "Спасибо" RECTO
alex 54 (11.07.2017)
Непрочитано 11.07.2017, 18:01  
alex 54
Временная регистрация
 
Регистрация: 10.03.2017
Сообщений: 69
Сказал спасибо: 77
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
alex 54 на пути к лучшему
По умолчанию Re: USB HID.Помогите разобраться с дескрипторами.

Здравствуйте,хотел уточнить два общих момента:

1.Процедуры передачи данных.
Они уже должны быть заложены в примере как пакеты и если я захочу изменить количество
кнопок или осей мне достаточно прописать это в дескрипторе,правильно я понимаю?

2.Чтобы считать данные с квадратурных энкодеров которые я собираюсь применить вместо резисторов мне нужно присвоить глобальной переменной VECTOR значения со счетного регистра таймера-счётчика во время возникновения прерывания от него?

Последний раз редактировалось alex 54; 11.07.2017 в 18:04.
alex 54 вне форума  
Непрочитано 11.07.2017, 22:11  
RECTO
Супер-модератор
 
Регистрация: 09.06.2011
Сообщений: 2,668
Сказал спасибо: 74
Сказали Спасибо 1,803 раз(а) в 654 сообщении(ях)
RECTO на пути к лучшему
По умолчанию Re: USB HID.Помогите разобраться с дескрипторами.

Сообщение от alex 54 Посмотреть сообщение
1.Процедуры передачи данных.
Они уже должны быть заложены в примере как пакеты и если я захочу изменить количество
кнопок или осей мне достаточно прописать это в дескрипторе,правильно я понимаю?
Естественно - каждый элемент, который Вы хотите задействовать в своём устройстве (джойстике), должен быть описан в репорте, чтобы ОС на компе "знала", какие элементы там есть, где в пакете искать данные от каждого из них и как эти данные обрабатывать (это как минимум). Ну, а должно или не должно быть что-то заложено в Ваших примерах - это я не знаю... Ваша задача заключается в том, чтобы:
1) Правильно написать репорт-дескриптор для Вашего устройства.
2) При каждом изменении состояния управляющих элементов - в соответствии с репорт-дескриптором заполнить данными буфер конечной точки и поставить в очередь на передачу.

Сообщение от alex 54 Посмотреть сообщение
2.Чтобы считать данные с квадратурных энкодеров которые я собираюсь применить вместо резисторов мне нужно присвоить глобальной переменной VECTOR значения со счетного регистра таймера-счётчика во время возникновения прерывания от него?
Ну, можете сделать и так, т.е. захватом значения счётчика. А можно и непосредственно считать импульсы в прерывании - это, по-моему, не важно в данном случае...

В случае энкодоров, кстати, можете попробовать отсылать не накопленное абсолютное значение по оси, а относительное изменение значения (как у мыши). В репорте, естественно, нужно будет указать, что это данные не "Absolute", а "Relative". Сразу скажу - будет ли это корректно работать с джойстиком, я не знаю. Нужно пробовать...
RECTO вне форума  
Непрочитано 12.07.2017, 15:21  
alex 54
Временная регистрация
 
Регистрация: 10.03.2017
Сообщений: 69
Сказал спасибо: 77
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
alex 54 на пути к лучшему
По умолчанию Re: USB HID.Помогите разобраться с дескрипторами.

Здравствуйте,насчет Relative Вы имеете ввиду эту строчку?

0x81, 0x06, /* Input (Data, Variable, Relative) */

Здесь так и указано.Ксати,в настоящий момент я летаю на прототипе джойстика который хочу сделать:я использую мышь к которой подключил три квадратурных энкодера,
преобразованную через эмулятор в джойстик,и все работает нормально,только сиситема получилась несколько громоздкой:для включеня джойстика нужно загружать скрипт
и т.д.так что учитывая мой мизерный опыт в прграммировании я планирую обойтись минимальными изменениями примера.
Переферии тоже минимум:кроме трех 12 битных энкодеров я планирую подключить к МК 9 кнопок,которые будут использоваться в качестве референтных датчиков для коррекции ошибок считывания,
по три на каждую ось(право,лево,центр)
Еще мне нужно установить частоту опроса будующего джойстика 1мс,для этого девайса это очень актуальный параметр.
Вы не подскажете где он задается?

Последний раз редактировалось alex 54; 12.07.2017 в 15:23.
alex 54 вне форума  
Непрочитано 12.07.2017, 22:16  
Godzilla82
Почётный гражданин KAZUS.RU
 
Регистрация: 29.10.2006
Сообщений: 1,446
Сказал спасибо: 99
Сказали Спасибо 317 раз(а) в 233 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: USB HID.Помогите разобраться с дескрипторами.

Сообщение от alex 54 Посмотреть сообщение
Еще мне нужно установить частоту опроса будующего джойстика 1мс,для этого девайса это очень актуальный параметр.
Вы не подскажете где он задается?
Если у вас низкоскоростное устройство - то нигде. Низкоскоростные устройства работают с частотой опроса от 10 до 255 мс.

А так частота опроса задаётся в дескрипторе конечной точки (от 1 до 255 мс).

P.S. Для конечных точек типа Interrupt.

Последний раз редактировалось Godzilla82; 12.07.2017 в 22:21.
Godzilla82 вне форума  
Сказали "Спасибо" Godzilla82
alex 54 (13.07.2017)
Непрочитано 12.07.2017, 22:41  
RECTO
Супер-модератор
 
Регистрация: 09.06.2011
Сообщений: 2,668
Сказал спасибо: 74
Сказали Спасибо 1,803 раз(а) в 654 сообщении(ях)
RECTO на пути к лучшему
По умолчанию Re: USB HID.Помогите разобраться с дескрипторами.

Сообщение от alex 54 Посмотреть сообщение
Здравствуйте,насчет Relative Вы имеете ввиду эту строчку?
0x81, 0x06, /* Input (Data, Variable, Relative) */
Здесь так и указано.
Ну, это у Вас для мыши указано. А джойстики, в силу своей специфики, обычно делаются с передачей абсолютного значения поворота осей. Но можно попробовать поиграться и с передачей относительных значений...

Сообщение от alex 54 Посмотреть сообщение
Еще мне нужно установить частоту опроса будующего джойстика 1мс,для этого девайса это очень актуальный параметр.
Вы не подскажете где он задается?
Параметр "bInterval" в дескрипторе конечной точки, через которую будете передавать данные, задаёт частоту её опроса.
RECTO вне форума  
Сказали "Спасибо" RECTO
alex 54 (13.07.2017)
Непрочитано 13.07.2017, 16:58  
alex 54
Временная регистрация
 
Регистрация: 10.03.2017
Сообщений: 69
Сказал спасибо: 77
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
alex 54 на пути к лучшему
По умолчанию Re: USB HID.Помогите разобраться с дескрипторами.

Пример который я собираюсь использовать реализован как низкоскоростное устройство.
Я почитал даташит XMEGA в котором говориться:

микроконтроллеры XMEGA позволяют реализовывать полноскоростные (FS) и низкоскоростные (LS) соединения с использованием внутреннего RC генератора.

Поэтому я полагал,что установить FS режим можно где то в пользовательских настройках.
Мыши с полноскоростным режимом существуют(геймерские)и частота опроса у них 1мс.
Я не прав?Пример который я собираюсь использовать можно переделать под полноскоростной режим?

Последний раз редактировалось alex 54; 13.07.2017 в 17:06.
alex 54 вне форума  
Непрочитано 13.07.2017, 21:10  
RECTO
Супер-модератор
 
Регистрация: 09.06.2011
Сообщений: 2,668
Сказал спасибо: 74
Сказали Спасибо 1,803 раз(а) в 654 сообщении(ях)
RECTO на пути к лучшему
По умолчанию Re: USB HID.Помогите разобраться с дескрипторами.

Сообщение от alex 54 Посмотреть сообщение
Пример который я собираюсь использовать реализован как низкоскоростное устройство.
Я почитал даташит XMEGA в котором говориться:
микроконтроллеры XMEGA позволяют реализовывать полноскоростные (FS) и низкоскоростные (LS) соединения с использованием внутреннего RC генератора.
Поэтому я полагал,что установить FS режим можно где то в пользовательских настройках.
А в чём проблема сконфигурировать устройство как full speed?
RECTO вне форума  
Непрочитано 14.07.2017, 09:52  
alex 54
Временная регистрация
 
Регистрация: 10.03.2017
Сообщений: 69
Сказал спасибо: 77
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
alex 54 на пути к лучшему
По умолчанию Re: USB HID.Помогите разобраться с дескрипторами.

Сообщение от RECTO Посмотреть сообщение
А в чём проблема сконфигурировать устройство как full speed?
Прочитал про конфигурирование под FS режим:
Полноскоростные устройства опознаются USB-хостом по подтягивающему резистору номиналом 1,5 кОм, подключаемому к сигнальной линии D+.
Вопрос:и это все?Я подключаю вышеуказанный резистор и могу установить в "bInterval"
значение 1мс(сейчас там стоит значение 10мс)Больше ничего менять не надо?

Последний раз редактировалось alex 54; 14.07.2017 в 10:22.
alex 54 вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Печатная плата USBee AX picavr Барахолка электронных компонентов 950 20.08.2023 17:11
Ускорить компьютер 7Fantomas7 Ремонт оргтехники 111 08.08.2018 05:27
Не могу запустить USB контроллер ATMega32U4 Slava1355 AVR 12 29.09.2014 14:58
usb cdc pic18f14k50 gromovi Proteus, KiCAD и другие ECAD 9 21.04.2013 15:31
Помогите разобраться с PIC18F4550 и USB john2103 Микроконтроллеры, АЦП, память и т.д 26 02.08.2011 11:52


Часовой пояс GMT +4, время: 15:48.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot