====== 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}}