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

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

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

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

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

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

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

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

Всем привет,задумал сделать USB HID joystick на МК ATxmega256A3BU.Так как мои познания по программированию не простираются далее написания мигалки,решил использовать готовый пример USB HID мыши на этом контроллере,с последующей переделкой его под джойстик.
Насколько я вычитал,при этом варианте достаточно изменить дескрипторы,а вся библиотека работы
с регистрами аппаратного USB остается нетронутой.
Подскажите пожалуйста,что нужно изменить кроме,естественно,HID ReportDescriptor,чтобы получить из мыши джойстик?

С уважением,Alex 54.
Вложения:
Тип файла: rar MOUSE_EXAMPLE1.rar (204.1 Кб, 0 просмотров)
Реклама:

Последний раз редактировалось alex 54; 19.05.2017 в 18:39.
alex 54 вне форума  
Сказали "Спасибо" alex 54
hacker7 (28.08.2017)
Непрочитано 19.05.2017, 22:04  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,854 раз(а) в 2,925 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: USB HID.Помогите разобраться с дескрипторами.

Для начала ничего не менять и написать сам джойстик для управления курсором мыши. Так будет проще отладится с этой частью.
А с дескриптором и драйверами разбираться после.
Так геморроя будет значительно меньше. Иначе сильно многовариантный поиск ошибок - обработка данных с джойстика/обработка USB HID/проблемы драйвера/…
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
mike-y-k вне форума  
Сказали "Спасибо" mike-y-k
alex 54 (20.05.2017)
Непрочитано 19.05.2017, 22:29  
RECTO
Супер-модератор
 
Регистрация: 09.06.2011
Сообщений: 2,633
Сказал спасибо: 73
Сказали Спасибо 1,793 раз(а) в 647 сообщении(ях)
RECTO на пути к лучшему
По умолчанию Re: USB HID.Помогите разобраться с дескрипторами.

Сообщение от alex 54 Посмотреть сообщение
Подскажите пожалуйста,что нужно изменить кроме,естественно,HID ReportDescriptor,чтобы получить из мыши джойстик?
Достаточно изменить HID Report Descriptor. Если всё сделаете правильно - сможете найти свой джойстик в диспетчере устройств и проверить его работу.
RECTO вне форума  
Сказали "Спасибо" RECTO
alex 54 (20.05.2017)
Непрочитано 07.06.2017, 00:20  
Godzilla82
Почётный гражданин KAZUS.RU
 
Регистрация: 29.10.2006
Сообщений: 1,447
Сказал спасибо: 96
Сказали Спасибо 318 раз(а) в 233 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: USB HID.Помогите разобраться с дескрипторами.

Если хотите разобраться с USB и в том числе с HID, советую начать с основ.

Берёте спецификацию USB 2.0 и изучаете.
Для начала советую изучить главу 9.
Там описаны основные коды запросов и ответов для любого USB устройства.

Потом надо изучить USB HID спецификацию, в ней описаны коды запросов, используемые только для HID устройств.

Потом, желательно изучить последовательность работы Windows с USB устройствами. То есть там описаны какие запросы и сколько раз исходят от компьютера при подключении USB устройства.
В частности, у меня был затык на usb_reset, потратил из-за него много времени.

Далее - описание репортов.
Для HID устройств есть специальный тип HID_REPORT со своим кодом запроса.
В сети есть специальная утилита - HID Descriptor Tool.
Она помогает создать нужный репорт.

Сначала рекомендую создать просто HID устройство. Не мышь, не клавиатуру. Со своим репортом - просто данные, например 8 байт.

Из подводных граблей - винда запоминает USB устройства. И может получиться так, что сначала у вас программа была написана криво, винда запомнила ваше "кривое" устройство. Потом вы исправили программу, а винда по прежнему думает, что это прежнее "кривое" устройство и не работает с ним.

Запросов в USB не так уж и много: примерно пару десятков и около десятка репортов.
Вложения:
Тип файла: pdf usb_20.pdf (5.71 Мб, 0 просмотров)
Тип файла: pdf HID Device Class Definition v1.11.pdf (659.9 Кб, 0 просмотров)
Тип файла: zip HID Descriptor Tool v2.4.zip (98.4 Кб, 0 просмотров)
Тип файла: zip Энумерация USB устройств Windows.zip (231.2 Кб, 0 просмотров)
Godzilla82 вне форума  
Эти 8 пользователя(ей) сказали Спасибо Godzilla82 за это сообщение:
6ap6oc (16.08.2017), aleksa-yar (09.07.2017), alex 54 (17.06.2017), ksa (07.06.2017), leoblp (09.07.2017), niXto (09.07.2017), pt200 (10.07.2017), МВА (16.07.2017)
Непрочитано 08.07.2017, 11:44  
alex 54
Временная регистрация
 
Регистрация: 10.03.2017
Сообщений: 69
Сказал спасибо: 77
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
alex 54 на пути к лучшему
По умолчанию Re: USB HID.Помогите разобраться с дескрипторами.

mike-y-k, Здравствуйте,после основательного"rtfm"столкнулся с затруднением которое не смог найти
в этом источнике.
Вкратце:в своем проекте в качестве датчиков управления курсором(а в дальнейшем осями джойстика)с собираюсь использовать 3 кв.энкодера.
Добавил в проект мыши модуль Qdec,прописал все по инструкции в файле main "C",
но когда дошел до функций:

// Read the current QDec position:
code qdec_get_position(&config); \endcode
// Read the current QDec direction:
code qdec_get_direction(&config); \endcode

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

Последний раз редактировалось alex 54; 08.07.2017 в 11:51.
alex 54 вне форума  
Непрочитано 09.07.2017, 03:55  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,854 раз(а) в 2,925 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: USB HID.Помогите разобраться с дескрипторами.

А как это у мыши сделано было?
Тут все аналогично.
Там читались данные из датчика перемещения (хоть из старого оптико-механического с шариком и колёсами ). На выходе были значения перемещения, накопленные между опросами по двум координатам.
Тут надо просто в программе изобразить работу чипа с датчиками.
Не забыть решить проблему с границами по осям в обе стороны (конец счета).

Как решён вопрос с подключением и обработкой информации от энкодеров?
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
mike-y-k вне форума  
Сказали "Спасибо" mike-y-k
alex 54 (10.07.2017)
Непрочитано 09.07.2017, 12:23  
alex 54
Временная регистрация
 
Регистрация: 10.03.2017
Сообщений: 69
Сказал спасибо: 77
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
alex 54 на пути к лучшему
По умолчанию Re: USB HID.Помогите разобраться с дескрипторами.

В примере мыши который я использую перемещение курсора осуществляется кнопками.
Если бы я использовал пример обычной мыши ничего бы переделывать бы не пришлось,там
уже все готово.
Вычитал что управление курсором осуществляется функцией mouse_event,а что дальше
не соображу,возможно что не умею искать нужную информацию.

Вопрос с подключением и обработкой информации от энкодеров пока решен не полностью:
Пока что добавил в main C рекомендованные функции инициализации модуля qdec и и считывания данных от декодера.

Сейчас разбираюсь с вопросом тактирования ТС,похоже его нужно установить одинаковым с
модулем USB(32MHZ)
alex 54 вне форума  
Непрочитано 10.07.2017, 01:54  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,854 раз(а) в 2,925 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: USB HID.Помогите разобраться с дескрипторами.

Энкодер на выходе выдаёт направление (что эквивалентно одной из кнопок) и число шагов (что эквивалентно числу нажатий на кнопку).
Осталось вызвать нужное число раз ту функцию, которая отвечала за нажатие нужной кнопки.
Результат должен появиться в виде перемещения курсора в нужном направлении и на нужное расстояние.

PS При отсутствии навыка программирования - самое лучшее, это сесть за изучение программирования. Данный проект может хорошо помочь, как стимул.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
mike-y-k вне форума  
Сказали "Спасибо" mike-y-k
alex 54 (10.07.2017)
Непрочитано 10.07.2017, 02:34  
vladisslav1
Прописка
 
Регистрация: 25.03.2013
Адрес: Глубокое замкадье
Сообщений: 216
Сказал спасибо: 3
Сказали Спасибо 71 раз(а) в 55 сообщении(ях)
vladisslav1 на пути к лучшему
По умолчанию Re: USB HID.Помогите разобраться с дескрипторами.

Сообщение от alex 54 Посмотреть сообщение
ATxmega256A3BU
По моему скромному мнению, для джойстика это жуткий перебор. Хватит Atmega8/88. Даже для USB загрузчика места хватит и еще куча свободного останется.
Дескрипторы и примеры реализации можно посмотреть здесь: https://www.obdev.at/products/vusb/prjinterface.html
vladisslav1 вне форума  
Сказали "Спасибо" vladisslav1
alex 54 (10.07.2017)
Непрочитано 10.07.2017, 05:02  
RECTO
Супер-модератор
 
Регистрация: 09.06.2011
Сообщений: 2,633
Сказал спасибо: 73
Сказали Спасибо 1,793 раз(а) в 647 сообщении(ях)
RECTO на пути к лучшему
По умолчанию Re: USB HID.Помогите разобраться с дескрипторами.

Сообщение от alex 54 Посмотреть сообщение
Вы не можете в общих чертах подсказать как это привязать к управлению курсором?
Попробуем рассмотреть это на конкретном примере.
Допустим, есть джойстик с двумя переменными резисторами и четырьмя кнопками, который описан таким репорт-дескриптором:
Код:
USAGE_PAGE (Generic Desktop)	05, 01
USAGE (Joystick)		09, 04
COLLECTION (Application)	A1, 01
  USAGE_PAGE (Sim. Controls)	05, 02
  USAGE (Throttle)		09, BB
  LOGICAL_MINIMUM (0)		15, 00
  LOGICAL_MAXIMUM (255)		26, FF, 00
  REPORT_SIZE (8)		75, 08
  REPORT_COUNT (1)		95, 01
  INPUT (Data,Var,Abs)		81, 02
  USAGE_PAGE (Sim. Controls)	05, 02
  USAGE (Brake)			09, C5
  LOGICAL_MINIMUM (0)		15, 00
  LOGICAL_MAXIMUM (255)		26, FF, 00
  REPORT_SIZE (8)		75, 08
  REPORT_COUNT (1)		95, 01
  INPUT (Data,Var,Abs)		81, 02
  USAGE_PAGE (Button)		05, 09
  USAGE_MINIMUM (Button 1)	19, 01
  USAGE_MAXIMUM (Button 4)	29, 04
  LOGICAL_MINIMUM (0)		15, 00
  LOGICAL_MAXIMUM (1)		25, 01
  REPORT_SIZE (1)		75, 01
  REPORT_COUNT (8)		95, 08
  UNIT_EXPONENT (0)		55, 00
  UNIT (None)			65, 00
  INPUT (Data,Var,Abs)		81, 02
  END_COLLECTION		C0
При каждом изменении состояния такое устройство должно передавать на комп пакет данных в следующем виде:
1-й байт: положение первого переменника, в абсолютных единицах (0..255);
2-й байт: положение второго переменника, также в абсолютных единицах (0..255);
3-й байт: биты 0-3 соответствуют положению кнопок, остальные биты =0.
Далее идут незначащие байты, общее количество байт в пакете будет определяться значением параметра wMaxPacketSize, которое Вы установили в дескрипторе конечной точки.

Вот, собственно, и всё. Вам осталось только переделать это под свой пример...
RECTO вне форума  
Сказали "Спасибо" RECTO
alex 54 (10.07.2017)
 

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

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

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, время: 19:56.


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