Разрабатываю USB->Serial Mouse адаптер

Все, что не подходит под определение "старого софта и железа", обсуждается здесь
Аватара пользователя
M210
Advanced Member
Сообщения: 376
Зарегистрирован: 22.08.2020,10:42
Откуда: Москва

Вклад в сообщество

Разрабатываю USB->Serial Mouse адаптер

Сообщение M210 » 31.07.2021,20:25

Всем привет! Собирая себе ретро ПК, столкнулся с тем, что USB мыши не хотят работать в MSDOSе даже после танцев с бубном. Поэтому пришла идея сделать USB-COM мышь, которой не будут нужны USB драйвера, типа вотнул в COM порт и работай (предварительно загрузив драйвер COM мышки)
Также, поизучав тему, пришел к выводу, чтоо пассивные переходники USB-PS/2 работают не со всеми мышками, а только с теми, которые эти переходники поддерживают (таких мышей очень мало). PS/2 мыши старее USB, поэтому хорошую USB мышь можно найти даже среди новых, а PS/2 - уже нет.

В итоге, такая железка была разработана (Видео примеры):
► Показать
Спроектирована под корпус 9-9, поэтому любой желающий может самостоятельно упаковать адаптер в корпус

Адаптер работает со всеми USB мышами - проводными и беспроводными. Имеет два джампера - Режим с колесом (Microsoft Wheel mode) и без колеса (Logitech mode). В режиме с колесом скорость передачи данных составляет 33Гц, без колеса - 44Гц.
Второй джампер - выбор режима совместимости COM порта - 7N1 или 7N2. В режиме 7N2 скорость передачи данных будет 30Гц/40Гц соответственно, но большинство современных ПК работает в режиме 7N1.

Адаптер был проверен с использованием следующего железа:
► Показать
Не работает на материнке LS 5I-TX1

Проверенные мыши:
► Показать
Вложения
123.jpg
20211202_143342.png
Последний раз редактировалось M210 28.06.2022,11:22, всего редактировалось 15 раз.

Аватара пользователя
Tronix
Advanced Member
Сообщения: 3634
Зарегистрирован: 15.01.2008,11:00
Откуда: Москва
Поблагодарили: 1 раз

Вклад в сообщество

Разрабатываю USB->Serial Mouse адаптер

Сообщение Tronix » 31.07.2021,21:08

Да, сам хотел похожий девайс сделать да все лень было :) Так что молодец, интересно.
По поводу Doom - в него точно играли с COM мышками, ибо USB на тот момент еще не придумали даже. В дум вообще многие играли без мышки, так называемые "трактористы" - играли с помощью клавы, и что характерно, иногда собирали больше фрагов, чем те, кто играл шариковой мышкой.
В кваку уже "трактористы" сливали мышководам, потому что рокетджампы всякие с клавы не особо выполнять получалось. Мне кажется что и первая квака - это еще доUSBшная эра.
Поэтому как-то играли с COM мышками....

Аватара пользователя
M210
Advanced Member
Сообщения: 376
Зарегистрирован: 22.08.2020,10:42
Откуда: Москва

Вклад в сообщество

Разрабатываю USB->Serial Mouse адаптер

Сообщение M210 » 31.07.2021,21:18

Сейчас попробовал отключить задержку на передачу КОМ порта, сначала ограничивал передачу в COM порт 20 миллисекундами, т.к. при мышиной скорости 1200bps, мышь все равно была неспособна слать пакеты чаще 30-40мс). С отключенной задержкой мышь стала более-менее плавной (если не брать в расчет быстрые скорости, но шариковые мыши на таких скоростях и не работали, шар проскальзывал бы :)) Тайминги передачи COM порта просто заставляют USB мышь опрашиваться медленнее и все работает хорошо - разница только теперь в том, что упала чувствительность мыши, нужно больше двигать рукой, чтобы например развернуться на 180 градусов в DOOMе, но помоему именно так и было в старые времена.

Аватара пользователя
Rio444
Почётный пользователь
Сообщения: 31228
Зарегистрирован: 14.09.2014,19:11
Откуда: Ростов-на-Дону
Благодарил (а): 45 раз
Поблагодарили: 120 раз

Вклад в сообщество

Разрабатываю USB->Serial Mouse адаптер

Сообщение Rio444 » 31.07.2021,21:24

M210, Вы можете управлять опросом USB мыши, или он производится на фиксированной частоте?
Электронка: Изображение копия Изображение

Аватара пользователя
M210
Advanced Member
Сообщения: 376
Зарегистрирован: 22.08.2020,10:42
Откуда: Москва

Вклад в сообщество

Разрабатываю USB->Serial Mouse адаптер

Сообщение M210 » 31.07.2021,21:28

Tronix писал(а): 31.07.2021,21:08 По поводу Doom - в него точно играли с COM мышками, ибо USB на тот момент еще не придумали даже.
Это то понятно, тут больше вопрос в ощущениях. Ну сейчас я понял, что лучше работать медленно и с приращениями DX/DY по 1, нежели накапливать DX\DY по 20-40 единиц, пока не пройдут 20мс...в таком случае поворот вокруг оси занимает меньше времени (мышь работает практически на скорости приращений USB) но при этом рывки по 40 единиц очень сильно заметны.
Rio444 писал(а): 31.07.2021,21:24 M210, Вы можете управлять опросом USB мыши, или он производится на фиксированной частоте?
Могу, но USB мышь опрашивается каждый такт МК. Сначала я накапливал эти данные...сейчас накопление отключил, USB теперь опрашивается только после отправки COM портом пакета, т.е. намного реже, зато это дает большую плавность

Аватара пользователя
Rio444
Почётный пользователь
Сообщения: 31228
Зарегистрирован: 14.09.2014,19:11
Откуда: Ростов-на-Дону
Благодарил (а): 45 раз
Поблагодарили: 120 раз

Вклад в сообщество

Разрабатываю USB->Serial Mouse адаптер

Сообщение Rio444 » 31.07.2021,21:33

M210 писал(а): 31.07.2021,21:28 USB мышь опрашивается каждый такт МК
Можно опрашивать синхронно с передачей пакетов в COM-порт?
Т.е. отправили пакет в COM, опросили мышь, отправили, опросили и так далее?
Ещё лучше опрашивать перед окончанием отправки пакета с COM. Чтобы к завершению отправки уже были готовы новые данные от мыши.
Электронка: Изображение копия Изображение

Аватара пользователя
M210
Advanced Member
Сообщения: 376
Зарегистрирован: 22.08.2020,10:42
Откуда: Москва

Вклад в сообщество

Разрабатываю USB->Serial Mouse адаптер

Сообщение M210 » 31.07.2021,21:41

Rio444 писал(а): 31.07.2021,21:33 Можно опрашивать синхронно с передачей пакетов в COM-порт?
Т.е. отправили пакет в COM, опросили мышь, отправили, опросили и так далее?
Ещё лучше опрашивать перед окончанием отправки пакета с COM. Чтобы к завершению отправки уже были готовы новые данные от мыши.
Сейчас приблизительно это так и работает, только наоборот. USB опрашивается по-прежнему каждый такт, но если есть данные с USB, отправляем их в COM порт, ждем пока передача завершится и после этого снова опрашиваем USB пока не появится что-то новое.
Надо по-тестить железку еще немного, но кажется при таком алгоритме все хорошо работает

Аватара пользователя
Rio444
Почётный пользователь
Сообщения: 31228
Зарегистрирован: 14.09.2014,19:11
Откуда: Ростов-на-Дону
Благодарил (а): 45 раз
Поблагодарили: 120 раз

Вклад в сообщество

Разрабатываю USB->Serial Mouse адаптер

Сообщение Rio444 » 31.07.2021,21:50

M210 писал(а): 31.07.2021,21:41 но кажется при таком алгоритме все хорошо работает
:thumbup:
На чем сделали? Что-то из STM32?
Электронка: Изображение копия Изображение

Аватара пользователя
M210
Advanced Member
Сообщения: 376
Зарегистрирован: 22.08.2020,10:42
Откуда: Москва

Вклад в сообщество

Разрабатываю USB->Serial Mouse адаптер

Сообщение M210 » 31.07.2021,21:59

Rio444 писал(а): 31.07.2021,21:50 На чем сделали? Что-то из STM32?
Железка полность работает на CH559 (семейство МК 8051/8052), четно говоря не знаю, относится ли к ним STM..я до этого имел дело только с PICами и AVRами.
Сначала хотел сделать такую железку на AVR (Ардуино), даже сделал имитатор COM мыши на нем, планировал использовать AVR для передачи данных в комп, использовать какую-нибудь микросхему USB хоста, которая будет слать данные в Ардиуно, а та дальше в ПК. Начал искать инфу и наткнулся на CH559. Сначала был верен своему плану и использовать Ардуино как посредник между CH559 и ПК, но потом меня осенило, что CH559 это точно такой же контроллер как и AVR, и начал искать информацию по программированию на МК 8051. В итоге, почитав мануалы, все-таки реализовал и RS232 и USB Host в одной микросхеме.
Мне правда не понравилось как в 559й работают внешние прерывания, в ардуино они как то более уверенно работают и всегда при смене сигнала и с плюса на минус и наоборот....а в 559 только при смене сигнала с минуса на плюс, но не обратно...и даже эту смену сигнала МК может пропустить...в итоге сделал логику в самом теле цикла, вроде работает (передергивать не приходится, как говорится :biggrin: )

Аватара пользователя
M210
Advanced Member
Сообщения: 376
Зарегистрирован: 22.08.2020,10:42
Откуда: Москва

Вклад в сообщество

Разрабатываю USB->Serial Mouse адаптер

Сообщение M210 » 31.07.2021,22:00

Удалено
Последний раз редактировалось M210 02.05.2022,14:09, всего редактировалось 1 раз.

jupiter5700
Advanced Member
Сообщения: 1854
Зарегистрирован: 14.10.2019,13:18
Откуда: Орел
Благодарил (а): 1 раз
Поблагодарили: 2 раза
Контактная информация:

Разрабатываю USB->Serial Mouse адаптер

Сообщение jupiter5700 » 01.08.2021,06:51

M210, надо этот девайс в серию запускать. Полезная штука, многие купили бы.

Ответить