PS/2 to COM converter (Сочинил вот на днях очередную поделку.)

Все, что не подходит под определение "старого софта и железа", обсуждается здесь
Аватара пользователя
EJSanYo
Advanced Member
Сообщения: 414
Зарегистрирован: 27.12.2007,23:55

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

PS/2 to COM converter

Сообщение EJSanYo » 20.11.2014,20:50

Сочинил вот на днях очередную поделку.

Если не брать во внимание весьма специфический интерфейс "bus mouse" и потенциальную возможность воткнуть USB контроллер в PCI слот, с чем порой, впрочем, бывают проблемы, то старый добрый COM-порт является единственно доступным разъёмом чтобы воткнуть мышь в комп начиная с первых ПЦ и заканчивая некоторыми ранними машинами класса Pentium. И вот, допустим, есть у вас, как и у меня, ещё вполне себе крепенький "286-й", и хочется вам его погонять да поиграться с ним немного. Но где же устройства ввода для него нынче найти? Новую клаву PS/2, допустим, можно ещё без проблем воткнуть через простенький пассивный переходник. А вот с мышью уже гораздо сложнее, ибо под COM-порт они уже лет 15 как не производятся! Конечно, есть всякие там eBay, да и у меня, как у любого уважающего себя любителя старого железа, пара мышей найдётся ещё с "тех времён". Но вот только годы наложили отпечаток на "грызунов": не раз ремонтированные провода стали жёсткими, а без конца заедающий шарик после современных игровых лазерных "монстров" вызывает ощущение паралича кисти! :mad:
Так пришло постепенно осознание, что так жить нельзя неплохо бы соорудить какой-нибудь "костыль", дабы иметь возможность прикрутить к "старичку" что-то покачественнее. И, поскольку гугление чего-то готового и более-менее доступного результатов не дало, пришлось изобрести такой "костыль" самому! :cool:

Финальная версия:
Изображение
Изображение


Ещё вариант:
Изображение

Поделие сие было создано на основе документа "AVR313: Interfacing the PC AT Keyboard", исходников примера работы с PS/2 на AVR контроллерах, открытой информации из http://www.computer-engineering.org, а также различных даташитов и текстов описания протоколов COM-овских мышей.

В настоящий момент переходник эмулирует стандартную Microsoft-совместимую мышь с дополнением известным как "расширение для средней кнопки от Logitech". Если драйвер это расширение не знает, он опознает мышь как "M$-совместимую". Также, начиная с аппаратной версии 2.0, добавлена эмуляция PnP мыши с колёсиком и возможность обновлять прошивку переходника без программатора ( прямо через COM-порт). Режим PnP с колёсиком поддерживается, по крайней мере, в Windows начиная с 98-й и в драйвере Cute Mouse для DOS.

Переходник тестировался под Windows 3.1, 98, XP, 7 x64, а также с различными DOS-овскими драйверами.

Для тех, кто умеет держать в руках паяльник и пожелает сам повторить переходничок, а может, и усовершенствовать его, сделать что-то своё, выкладываю схемку и проект прошивки под среду CodeVision. Использовалась весьма старая версия CodeVisionAVR V2.04.4a, однако ничто не мешает скомпилять проект под чем-то более новым.
Для обновления прошивки в память контроллера дополнительно зашит bootloader, совместимый (по большей части) с популярными программами для перепрошивки AvrProg от Atmel и Avrdude (программы включены в архив). Он активируется зажатием кнопки SB1 в момент подачи питания. Если возникнут вопросы по прошивке и работе с ним, поясню, что да как.

Качать тут:

Аппаратная версия 2.0 (на основе контроллера AtMega 8)
v.2.2.2

Небольшие пояснения по схеме (по аппаратной версии 2.0):
XS1 - разъём DB-9 под COM-порт, XS4 - mini-DIN 6 для PS/2 мыши, XP2 - линейка пинов для подключения программатора.
Питание 5В подаётся через контакты XS2 и XS3 на плате. Для его подачи я приспособил USB-разъём и китайский "зарядник", однако ничто не мешает, например, прикрутить стандартный MOLEX и засунуть плату в корпус компа.
Кнопка SB1 - "снизить чувствительность" мыши, SB2 - "увеличить чувствительность". Кнопка SB3 сохраняет настройку чувствительности в энергонезависимую память переходника, так что при следующем включении он сразу настроит мышь на сохранённое значение.
Джампер XP1 в замкнутом состоянии активирует режим PnP с поддержкой колёсика, в разомкнутом используется MS Mouse+Logitech. ВНИМАНИЕ, состояние джампера анализируется только в момент подачи питания. Таким образом, если вы захотите сменить режим работы, не забудте после смены состояния джампера снять питание и подать его снова.
Светодиод VD1 подмигивает при заливке прошивки через программатор, при нажатии кнопок, после успешного прохождения инициализации, а также в момент получения очередного события от мыши, что полезно для контроля исправности мыши и переходника. :rolleyes:
Хорошо иметь DOOM-ик в деревне!

Аватара пользователя
DOS Logic
Advanced Member
Сообщения: 5849
Зарегистрирован: 01.07.2006,13:32
Откуда: Украина. Ивано-Франковск
Контактная информация:

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

Сообщение DOS Logic » 20.11.2014,20:59

хммм
так были же готовые заводские переходники для мышки с СОМ на ПС/2 правда они не со всемы мышами рабоатли но пробовать стоит...

La Forge
Advanced Member
Сообщения: 5584
Зарегистрирован: 16.11.2012,17:29
Откуда: Рязань

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

Сообщение La Forge » 20.11.2014,21:01

Если это действительно работает, то это круто. :thumbup: Увы, сам не умею обращаться с контроллерами. Но ещё более нужная вещь - чтобы USB клаву/мышь можно было подключать к таким компам.

Аватара пользователя
zOrg
Почётный пользователь
Сообщения: 13865
Зарегистрирован: 09.01.2009,22:22
Откуда: Ленинградская область, пгт. Сиверский

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

Сообщение zOrg » 20.11.2014,21:07

А KVM свичи не работают разве с 286ми? Вопрос снят. У меня на 286 мышь A4 Tech с родным PS2-COM переходом.

ЗЫ: За описание поделки спасибо! Утянул на будущее.
Flynn Lives / Кай жив / Tarus жив

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

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

Сообщение Tronix » 20.11.2014,21:19

EJSanYo писал(а):И, поскольку гугление чего-то готового и более-менее доступного результатов не дало,
Да ну... Я еще год назад ссылку здесь на форуме давал, да и просто гуглится на раз-два: http://www.vogons.org/viewtopic.php?t=34494

UPD: Во, нашел ссылку на сей чудный тред: http://www.phantom.sannata.ru/forum/index.php?t=14972 Правда там похоже не поняли, что это вообще такое и продолжили чего-то там искать упорно на ебее. Один про одно - другие про другое. Можно не читать короче.

А так вообще зачот, в целом.

Аватара пользователя
EJSanYo
Advanced Member
Сообщения: 414
Зарегистрирован: 27.12.2007,23:55

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

Сообщение EJSanYo » 20.11.2014,21:25

Тестирование, выявившиеся проблемы:

Проверял работу переходника на различных мышах (в основном, Genius) и компах, какие были в наличии.
В большинстве случаев всё работало как надо. Правда, с Genius NetScroll 100 USB (+пассивный переходник USB-PS/2) работа оказалась не очень стабильной (мышь завешивалась при включении несколько раз).
Различные DOS-овские драйвера стабильно опознали переходник как Microsoft mouse, как и Windows 98 с "семёркой" после сканирования оборудования. Windows 3.1 при запуске почему-то определять мышь отказалась, возможно, там используется какой-то нестандартный алгоритм инициализации мыши. Однако если после её запуска подменить COM-овскую мышь на переходник, то всё продолжает работать.
Как оказалось, чувствительность оптических мышей как-то даже слишком высока для типичных "олскульных виндовских 640x480", приходится убавлять скорость перемещения в настройках. На текстовом экране DOS-а этот недостаток ощущается сильнее. У шариковых мышей со скоростью всё в порядке. :tongue:

Некоторые технические подробности:

Код для работы с PS/2 взят по ссылке выше с незначительными изменениями. Используется т.н. "режим опроса" мыши, что является для неё не совсем типичным режимом работы. Состояние мыши периодически опрашивается, конвертируется в трёхбайтовую посылку формата Microsoft mouse и отсылается в COM-порт.
Линия DTR в этом стандарте является сигналом аппаратного сброса мыши. Она заведена на вход внешнего прерывания контроллера. Таким образом, при перепаде сигнала из "1" в "0" обработчик прерывания отсылает в COM-порт символ "M", сигнализируя таким образом о присутствии мыши на порту.
На всякий случай задейсовован аппаратный Watchdog, сбрасывающий контроллер, если он "застрянет" в основном цикле опроса мыши, однако в случае упомянутого Genius-а это не помогло... :redface:

Планы на вероятное ближайшее будущее:

Реализовать "потоковый режим" работы с PS/2, поскольку именно он нативно используется в компах.
Сделать подстройку "на лету" (кнопками) чувствительности мыши.
Возможно, реализовать дополнительно альтернативный режим работы с COM-портом (например PC-Mouse).
Наконец уже поставить плату в нормальный корпус, чтобы смотрелось как законченное изделие. :08:

Планы на вероятное отдалённое будущее:

Реализовать подобный переходник, но уже с USB на PS/2, а может дополнительно и на COM. Реализовать аналогичный переходник для USB-клавы, а может, сразу и универсальный переходник, для клавы и мышки. Если кто-то это не сделает раньше. Или уже не сделал. Время покажет.
Хорошо иметь DOOM-ик в деревне!

Аватара пользователя
EJSanYo
Advanced Member
Сообщения: 414
Зарегистрирован: 27.12.2007,23:55

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

Сообщение EJSanYo » 20.11.2014,21:29

Tronix эх, всё было уже создано раньше нас! :08: Впрочем, посмотрим, что там заокеанские коллеги изобрели. Может, есть и чему поучиться у них. Хоть по жизни мне как-то ближе Atmel и CodeVision-овский сишный компилятор, чем PIC-и.
Хорошо иметь DOOM-ик в деревне!

Аватара пользователя
skoroxod
Advanced Member
Сообщения: 17374
Зарегистрирован: 05.03.2009,19:27
Откуда: Старый Оскол
Контактная информация:

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

Сообщение skoroxod » 20.11.2014,21:43

EJSanYo писал(а):эх, всё было уже создано раньше нас! :08: Впрочем, посмотрим, что там заокеанские коллеги изобрели. Может, есть и чему поучиться у них. Хоть по жизни мне как-то ближе Atmel и CodeVision-овский сишный компилятор, чем PIC-и.
Вот и на Atmel для клавы: http://4pda.ru/forum/lofiversion/index.php?t16583.html
Но старые PC-шные мамки обычно с DIN-5, а переходник с него на PS/2 стоит 15 рублей новый.
Психологическая зрелость - это понимание того, как много вещей в мире не нуждается ни в твоих комментариях, ни в твоем мнении.

Аватара пользователя
EJSanYo
Advanced Member
Сообщения: 414
Зарегистрирован: 27.12.2007,23:55

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

Сообщение EJSanYo » 20.11.2014,22:10

skoroxod ссылкам в топике похоже хана, за давностию лет. :frown: Хотя, как я понимаю, автор всё равно исходников не выкладывал, только бинарник паршивки. Было бы интересно глянуть, как он сделал опрос PS/2. Впрочем, в Интернетах информации по протоколу клавы даже поболее есть, чем по мышам.
Хорошо иметь DOOM-ик в деревне!

Аватара пользователя
uav1606
Advanced Member
Сообщения: 5969
Зарегистрирован: 16.01.2008,22:04
Откуда: Енакиево
Контактная информация:

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

Сообщение uav1606 » 20.11.2014,22:39

Tronix писал(а):UPD: Во, нашел ссылку на сей чудный тред: http://www.phantom.sannata.ru/forum/index.php?t=14972
Можно было бы склеить с тем топиком, а то потом сложно будет искать...

EJSanYo, спасибо за подробное описание.

Ekb
Advanced Member
Сообщения: 2603
Зарегистрирован: 15.06.2014,11:31

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

Сообщение Ekb » 20.11.2014,23:51

EJSanYo

а у вас купить это возможно? за 200-300 руб ?


Ответить