Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Нужна помощь в написании usb-дескриптора и обработчика (со стороны МК)
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Интерфейсы
7Gluk
Мне нужно написать usb-дескриптор и обработчик для составного hid-устройства (мышь+клавиатура+джойстик). МК - atmega32u4, для работы с usb пользуюсь библиотекой Lufa (за основу взял демо-проект KeyboardMouse).

Первая проблема, не смог добавить джойстик в демо-проект KeyboardMouse. Сначала попробовал добавить его по аналогии, но устройство вообще не определилось системой. Потом попробовал в этом же проекте заменить дескрипторы мыши на дескрипторы джойстика, устройство определилось системой как мышь+клавиатура, причем мышь с восклицательным знаком.
Подскажите, пожалуйста, что неправильно.

Вторая проблема, надо сделать вертикальный и горизонтальный скроллинг документов (текст, графика, чертежи...). Для вертикального скроллинга - Wheel, для горизонтальной - AC Pan. Правда, я хотел вместо Wheel использовать AC Scroll, потому что Wheel часто используется как зум, а не скроллинг. Нашел готовый дескриптор мыши с AC Pan, но там используется Feature. Как правильно добавить обработчик для Feature?

И третий момент, нужна связь устройства с настроечным ПО, то есть нужен еще один Feature и обработчик для него...

В прикрепленном файле: Joystick - оригинал; KeyboardMouse - попытка замены мыши на джойстик; kmj - попытка добавить джойстик к KeyboardMouse.
Nikolai Rihkov
Сейчас в данный момент я тоже экспериментирую с USB HID устройством, под рукой есть книга Агурова "Интерфейс USB" , выложил ниже пример из книги, там 2 точки Feature.

Нажмите для просмотра прикрепленного файла
7Gluk
Спасибо.
Но в этом примере все реализовано сложнее чем в lufa, окончательно запутался sad.gif
Еще не могу понять, для feature нужен свой endpoint или используется endpoint репорта?
Nikolai Rihkov
feature это тип репорта и чтобы репорт стал feature нужно просто изменить соответствующим образом дескриптор репорта.
7Gluk
Цитата(Nikolai Rihkov @ Jul 2 2012, 11:25) *
feature это тип репорта и чтобы репорт стал feature нужно просто изменить соответствующим образом дескриптор репорта.

А если в одном дескрипторе репорта есть in, out и feature?
У меня в дескрипторе репорта клавиатуры 2 endpoint - in out; в дескрипторе репорта мыши 1 endpoint - in + поле feature. Еще надо будет добавить feature (наверно в дескриптор клавиатуры) для загрузки/выгрузки профилей устройства. Как работать с in и out я разобрался по примерам, а вот что и как делать с feature никак не могу понять.
7Gluk
С первой проблемой разобрался.
У ATmega32U4 ограничение - 5 конечных точек (не считая нулевой), а в проекте их было 6 (HID2_ReportOUTEndpoint и HID3_ReportOUTEndpoint не использовались). Также после изменения состава usb-устройства надо удалять его из системы, иначе винда его правильно не устанавливает.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.