====== MSX HID 1 — Контроллер USB-джойстика/мыши для MSX ====== {{:msx:msxhid1:2021-10-10.jpg?450|}} {{usb2msx_joy.jpg?450|}} Контроллер USB HID-устройств для компьютеров семейства MSX, является продолжением проекта [[msx:mous4msx:mous4msx|]]. Основой изделия является МК ATTiny44 (или ATTiny84) и микросхема MAX3421E - USB host контроллер с SPI-интерфейсом. Подключается к [[msx:general_purpose_port:general_purpose_port|]] и эмулирует работу мышки или джойстика. Работает с большинством USB устройств типа мышек, клавиатур и джойстиков, как проводных так и беспроводных. Возможно [[#firmware_update|обновление прошивки]] MK [[usbasp:usbasp|USBasp]] программатором или любым другим ISP–программатором микросхем семейства ATMEL. Светодиоды (с версии 2.7): |<100% 10% 10% 80%>| ^ Цвет ^ Сигнал ^ Описание ^ | зелёный|Ready|При не подключенном USB–устройстве, либо если оно не идентифицировано, светодиод на плате контроллера моргает с периодом порядка 1 секунды. Если устройство распознано, светодиод горит непрерывно| | красный|Full Speed|Он загорается при подключении HID–устройства, работающего в этом режиме| Допускает подключение устройств на лету, без отключения питания компьютера. Для беспроводных клавиатуры и мышки, подключенных одновременно, при включенном светодиоде CAPS LOCK работает клавиатура в режиме JOYSTICK, иначе мышка в режиме MOUSE. Если использовать комплект из без проводной клавиатуры и мышки, то по умолчанию контроллер работает в режиме эмуляции мышки, но клавиши клавиатуры, используемые для управления кнопками Триггер A и Триггер B работают параллельно с кнопками мыши. Для переключения в режим джойстика надо нажать на клавиатуре кнопку Caps Lock. Мышка работает по расширенному протоколу, который подразумевает обработку в том числе колеса и дополнительных кнопок. Но только если это предусматривает драйвер соответствующей программы. \\ Этот режим реализован например в [[msx:symbos:symbos|SymbOS]]. Джойстик эмулируется как простой двух-кнопочный манипулятор. Для определения типа устройства можно использовать [[usbtreeview:usbtreeview|]] (программа для MS Windows). Кнопки джойстика: * На мышке: |Левая клавиша|Триггер A| |Правая клавиша|Триггер B| Направление: 8 1 2 \ | / 7 -- 0 -- 3 / | \ 6 5 4 * Клавиши клавиатуры: |, , , |Управление курсором| |Пробел и любая из левых клавиш: \\ Shift, Ctrl, Alt, ⊞ Win|Триггер A| |Любая из правых клавиш: \\ Shift, Ctrl, Alt и ⊞ Win|Триггер B| Для тестирования контроллера рекомендуется использовать программу [[msx:hidtest:hidtest|HidTest]] с версии [[msx:hidtest:hidtest#v31|3.1]]. {{anchor:firmware_update}} ====== Обновление прошивки ====== Для обновления прошивки используется [[usbasp:usbasp|]] и [[avrdude:avrdude|]]. Тест устройства: sudo avrdude -p t44 -c usbasp avrdude: warning: cannot set sck period. please check for usbasp firmware update. avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.00s avrdude: Device signature = 0x1e9207 (probably t44) avrdude: safemode: Fuses OK (E:FF, H:DB, L:E2) avrdude done. Thank you. Загрузка прошивки: sudo avrdude -p t44 -c usbasp -U msx_ms26.hex avrdude: warning: cannot set sck period. please check for usbasp firmware update. avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.00s avrdude: Device signature = 0x1e9207 (probably t44) avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed To disable this feature, specify the -D option. avrdude: erasing chip avrdude: warning: cannot set sck period. please check for usbasp firmware update. avrdude: reading input file "msx_ms26.hex" avrdude: input file msx_ms26.hex auto detected as Intel Hex avrdude: writing flash (4096 bytes): Writing | ################################################## | 100% 2.40s avrdude: 4096 bytes of flash written avrdude: verifying flash memory against msx_ms26.hex: avrdude: load data flash data from input file msx_ms26.hex: avrdude: input file msx_ms26.hex auto detected as Intel Hex avrdude: input file msx_ms26.hex contains 4096 bytes avrdude: reading on-chip flash data: Reading | ################################################## | 100% 1.29s avrdude: verifying ... avrdude: 4096 bytes of flash verified avrdude: safemode: Fuses OK (E:FF, H:DB, L:E2) avrdude done. Thank you. {{msxhid1_isp.jpg?450|}} {{usb2joy_icsp.jpg?450|}} {{anchor:contacts}} Расположение контактов на разъёме который установлен на плату контроллера: ┌─────────┐ │ 2 4 6 │ ┌───────┐ │ 1 3 5 │ │ │ └─────────┘ │ USB │ ▲ │ │ └───────┘ Назначение контактов: |<10px 20px>| ^ № ^ Описание ^ | 1 |MISO| | 2 |VCC| | 3 |SCK| | 4 |MOSI| | 5 |Reset| | 6 |GND (-)| Микроконтроллер ATTiny44: * DEVICE SIGNATURE = 1E9207 * FUSEs: * HIGH = 0xDB * LOW = 0xE2 * EXT = 0xFF Файлы: * {{msx_ms23.hex|Версия 2.3}} * {{msx_ms24.hex|Версия 2.4 (2020-12-30)}} * {{msx_ms25.hex|Версия 2.5 (2021-01-06)}} * {{msx_ms26.hex|Версия 2.6 (2021-01-21)}} * {{msx_ms27.hex|Версия 2.7 (2021-03-12)}}, требует доработки: {{msxhid1_fix-1.svg |}} * {{msx_ms30.hex|Версия 3.0 (2022-01-16)}}, добавлена поддержка MegaDrive c 4–мя кнопками: Для переключения в режим MegaDrive после инициализации необходимо первой нажать кнопку Start, нажатие любой другой кнопки (кроме кнопок направления) переводит контроллер в режим поддержки двух–кнопочного джойстика. * Версия 3.3 (2022-01-24), добавлена поддержка MegaDrive c 6–мя кнопками, варианты для устройств с разным расположением кнопок: * {{msx_ms33_mdrv.hex|MegaDrive}} * {{msx_ms33_snes.hex|SNES}} {{tag> MSX Hardware USB Kamil_Karimov-projects}}