Usbcomposite, некоторые помогают укрыться в игре...

Ореховый
Солнце 03 марта 2019 г. 12:12
Привет, пока у меня еще есть возможность, я хочу задать пару вопросов о том, чтобы сделать USB HID...

Кто -то упомянул мне библиотеку USBComposite в ядре, и это кажется лучшим вариантом, чтобы сделать мой пользовательский игровой контроллер, который я имею в виду для проекта.

Единственная проблема - это примеры, включающие в себя не очень подробные, и не дают понять, как установить несколько кнопок и входов.

Например, я хочу 2 аналоговых палочка и несколько кнопок.

Как лучше всего организовать все это?

Есть ли более подробный пример, на который я могу посмотреть, чтобы получить лучшее представление о том, как лучше всего организовать мою программу?

Поэтому я помещаю все свои кнопки и аналоговое состояние в прерывания? Или я просто запускаю элементы HID в основной цикле, поэтому с каждым циклом он проверяет состояние каждой кнопки и аналоговой палочки?

Также есть более подробный набор документации библиотеки USBCompoite? Googling на самом деле ничего не нашел.

Например, все элементы и компоненты и как их использовать...

Mrburnette
Солнце 03 марта 2019 г. 12:39
Вы прошли через пост: https: // stm32duino.com/viewtopic.PHP?F = 19&t = 4046

Прошло много лет с тех пор, как я сделал что-нибудь со счетом, так давно это был 8-битный AVR... Но, как я помню, все это перегоняет в комбинации ключевых кодов.

Ореховый
Солнце 03 марта 2019 г. 12:46
Мне было интересно, можно ли это сделать в AVR, но я думаю, что мой Googlefu слаб... Только потому, что кто -то другой упомянул USBComposite, когда они использовали его для контроля ретро -аркады...

Я сейчас посмотрю этот пост

AG123
Солнце 03 марта 2019 г., 4:24
HID - очень гибкий протокол, и из -за дизайна протокола он сложный.
Было бы необходимо познакомиться с протоколом, и вы можете начать со спецификации
https: // www.USB.org/hid
Протокол ядра до скрытия - это «дескрипторы отчетов», которые способны описать целый сложный набор кнопок, элементов управления и т. Д
https: // eleccelerator.com/turning-abou ... Скрипторы/
Я все еще пытаюсь это узнать. И для начала с более короткой кривой обучения я думаю, что начиная с USB Composite, как база, поможет
И получить приложение и приложение USB-протокола, так как я работал в Linux, Linux имеет встроенный USBMON, и я могу использовать Wireshark, чтобы посмотреть на пакеты
https: // wiki.Wireshark.org/captureSetup/usb
^^ для Windows вышеуказанная ссылка упоминает USBPCAP https: // desowin.org/usbpcap/

Кроме того, ознакомьтесь с самим USB, если вы не
http: // www.USBMADESIMPLE.сопутствующий.Великобритания/Индекс.HTML

Я хотел сделать короткую клавиатуру, синюю таблетку / Maple Mini идеально подходит для него, это буквально просто провода и переключатели ключей (легко доступный поиск eBay / aliexpress для механических переключателей ключей), и идея - добавить Ротрарийные кодеры, чтобы их можно было использовать для прокрутки страниц & горизовый :)
Но это означает то же самое изучение USB HID
https: // chackaday.com/2017/06/19/DIY-Shortcut-Keyboard/

И в эти дни люди делают дурацкие вещи со своими клавиатурами
https: // chackaday.com/2014/11/23/sprite_ ... Ays-Snake/
https: // youtu.be/enzu9u328fc
:ржу не могу:

Арпрос
Пт, 08 марта 2019 г. 14:15
Посмотрите на USBHID.H в библиотеке. Класс Hidjoystick определяет много осей, поэтому две аналоговые палки не проблема, и я думаю, что есть 32 кнопки.

Вы также можете посмотреть на мой контроллер GameCube до кода адаптера USB. Это довольно сложно, так как позволяет подражать USB GamePad, Xbox GamePad и различные конфигурации клавиатуры, и поддерживает ввод с машины для упражнений и Nunchuck.

https: // github.com/arpruss/gamecube-usb-адаптер

Арпрос
Пт. 08, 2019 14:23
Существует также гораздо более простой пример кода для адаптера из аналогового джойстика Gameport Four Eight кнопки для USB:
https: // github.com/arpruss/gamecontroll ... ttousb.Ино

Беннебой
Пт. 08 марта 2019 г. 14:49
[Арпрос - Пт. 08, 2019 14:23] - Существует также гораздо более простой пример кода для адаптера из аналогового джойстика Gameport Four Eight кнопки для USB:
https: // github.com/arpruss/gamecontroll ... ttousb.Ино
Интересно, есть ли способ преобразовать из левого/вниз левого/правого джойстика с микропроключатом для x & Y, а не аналоговый вход?

AG123
Пт. 08 марта 2019 г., 17:00
Привет, Апусс, крутой проект и
Инструктивы потрясающие
https: // www.Инструменты.com/id/gamecu ... ng-starte/
И вау, кажется, вы уже сделали это в самой USB Composite, набросок просто показывает его части высокого уровня : D HardwareTimer timerDisplay(2); HardwareTimer timerDisplayEnabled(3); timerDisplay.setMode(0, TIMER_OUTPUT_COMPARE); timerDisplay.setPeriod(100 * microseconds_per_millisecond); timerDisplay.attachInterrupt(0, ISRUpdate); timerDisplay.resume(); timerDisplayEnabled.setMode(0, TIMER_OUTPUT_COMPARE); timerDisplayEnabled.setPeriod(5); timerDisplayEnabled.attachInterrupt(0, ISRUpdate1); timerDisplayEnabled.pause(); bool myValue = false; void ISRUpdate(void) { timerDisplay.pause(); … … … timerDisplayEnabled.setPeriod(brightness); // about 100 timerDisplayEnabled.resume(); … … // Code in here runs for 500 microseconds, 5x more than the time in the line above … … timerDisplay.setPeriod(XX); timerDisplay.resume(); // value of myValue still is false, interrupt for timerDisplayEnabled doesn’t trigger until ISRUpdate which was called from the timer 2 // unwind from the stack. } void ISRUpdate1(void) { timerDisplayEnabled.pause(); myValue = true; }

Mrburnette
Пт, 08 марта 2019 г., 18:27
HID-это не только для клавиатур и джойстиков, можно также сделать серьезные разжигание данных:

https: // www.хакерс.io/rayburne/rpi-da ... ng-usb-Hid
https: // www.хакерс.io/rayburne/arduin ... Sing-V-USB
https: // www.хакерс.IO/Rayburne/Analog ... зритель-USB

Или клон крошечного лайкета Adafruit's Tiny85
https: // www.хакерс.io/rayburne/chachk ... NY85-Cлон
Или крошечный дигисперк Tiny85
https: // www.хакерс.io/rayburne/trinke ... Электронный экзорцизм

От старого ардуино.Форум CC, некоторые теперь древние примеры, которые были бы легко реализовать с помощью библиотеки HID STM32F1XX:
http: // форум.Ардуино.CC/INDEX.PHP?Тема = 135623.0

Пункт, HID - это лекарство для шлюза, чтобы пересечь USB.


Луча

AG123
Пт, 08 марта 2019 г., 21:05
Спасибо, Рэй, это дает мне больше стимулов для изучения HID оттуда, USB-сериал «универсальный», но «искусственно медленный», нет никаких причин не использовать полную скорость USB 10 Мбит / с, а не искусственно ограничивая 115200 б.п. Я думаю, что основная причина, по которой USB-Serial существует, связана с повсеместным виртуальным композицией: порты, большинство приложений работают без программирования волшебства, и немногие люди хотят отправиться в «драйвер», особенно на рабочем столе :ржу не могу:

Моду
Пн 11 марта 2019 г. 16:37
[Mrburnette - Пт. 08, 2019, 18:27 вечера] - пункт IS, HID - это лекарство для шлюза, чтобы пересечь USB.
Определенно. Особенно, если вы используете пользовательское программное обеспечение для работы с HID на стороне ПК, то не небес без водителя - это ваше.

Арпрос
Вторник 12 марта 2019 г., 4:12
[Беннебой - Пт. 08, 2019 14:49] - Интересно, есть ли способ преобразовать из левого/вниз левого/правого джойстика с микропроключатом для x & Y, а не аналоговый вход?
Конечно. Сделайте что -то вроде:
nvic_irq_set_priority(NVIC_TIMER2, 15); nvic_irq_set_priority(NVIC_TIMER3, 0);

Беннебой
Вторник 12 марта 2019 г. 8:00 утра
Отлично, спасибо.

Ореховый
Вторник 12 марта 2019 г. 11:11
Ха, я пропустил все эти обновления, потому что Gmail классифицировал его спам :(

Спасибо всем за вклад... Теперь это сделало мне целую кучу яснее...

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

Чтобы сэкономить на власти, я подумал о том, чтобы собрать это в недостаточно... Но должен сократить использование мощности на этом устройстве почти на половину... (Может быть, треть...)

Питание - это соображение, так как я хочу запустить это на батареях.

Беннебой
Чт 14 марта 2019 г. 14:25
Я не могу поверить, как это было просто!

Вот мой 8 -битный джойстик Amiga/Atari/C64 для USB -адаптера - я использую доску Hytiny, так как они здоровы, крошечные : D Просто жду разъем в 9 коннал : D
timerA isr: [optional]disable the OE pin; transmit the frame; //assuming it is short enable the OE pin; enable timerB; //can be done with 1 instruction exit;

Беннебой
Чт 14 марта 2019 г., 16:48
Если вы измените VID/PID на следующее, он будет распознан «из коробки» как полезный джойстик на амибианском RPI Amiga Distro...
else if (cmd == '1') { EEPROM.PageBase0 = 0x801F000; EEPROM.PageBase1 = 0x801F800; EEPROM.PageSize = 0x400; DisplayConfig(); } else if (cmd == '2') { EEPROM.PageBase0 = 0x801F000; EEPROM.PageBase1 = 0x801F800; EEPROM.PageSize = 0x800; DisplayConfig(); }

AG123
Чт 14 марта 2019 г. 18:04
+1 прохладный : D