Внимание! Это временный неофициальный архив старой версии форума Полигон Призраков, созданный сочувствующим форуму участником. Этот сайт просуществует лишь до тех пор, пока администрация Полигона не сдержит своё обещание и не откроет официальный архив по адресу old.sannata.org.

Полигон-2

Форум о старых компьютерах

Объявление форума

Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС.

Полигон-2 »   Технический флейм »   PS/2 to COM converter
RSS

PS/2 to COM converter

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

<<Назад  Вперед>> Страницы: 1 * 2
Печать
 
EJSanYo
Advanced Member


Всего сообщений: 318
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
28 дек. 2007
Rio444 да может и не фейк, просто не на каждую мышь будет оказывать какое-либо влияние. Всё-таки гарантированное управление частотой опроса и чувствительностью - это больше удел "геймерских" мышей, подключающихся отнюдь не через PS/2.
А список такой едва ли найдёте вы. Поскольку уверен, никто и не озадачивался этим вопросом. Тем более, в процессе выпуска модели мыши производитель запросто может и поменять используемую элементную базу, без изменения названия модели. Кто ему запретит? Характеристики-то не меняются. Так что остаётся только брать конкретный экземпляр, развинчивать его и гуглить даташит на чип. Ну или просто воткнуть в комп или переходник и проверить на деле.
-MiS-
Advanced Member


Откуда: Москва
Всего сообщений: 682
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
9 мар. 2016
EJSanYo написал:
[q]
Аппаратная версия 2.0 (на основе контроллера AtMega 8)
v.2.2.1
[/q]
Ссылки умерли :frown:
Осталось у кого?
EJSanYo
Advanced Member


Всего сообщений: 318
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
28 дек. 2007
-MiS-, Dropbox с 15 числа за каким-то взял, да и убил доступ к файлам через прямые ссылки. :mad: Ну и черт бы с ним, перезалил все, что было в шапке, на Яндекс, может так надежнее будет. Проверяйте.
-MiS-
Advanced Member


Откуда: Москва
Всего сообщений: 682
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
9 мар. 2016
Заработало. Спасибо!
Rio444
Гость


Откуда: Ростов-на-Дону
Всего сообщений: 8632
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
14 сен. 2014
Подниму старую тему.
Как отмечал выше и в теме [t=26981]"Переделка АТ интерфейса клавиатуры в PS/2 на старых платах"[/t], проблема конвертера PS/2 в COM в неидеальном преобразовании перемещений.
Во-первых имеется задержка, во вторых неточности преобразования.

Постараюсь ещё раз пояснить.
Стандартная частота передачи данных от PS/2 мыши - 100 пакетов в секунду. Т.е. через каждые 1000/100 = 10 миллисекунд.
Сам пакет передаётся быстрее (около 3 миллисекунды), за счет того, что частота передачи битов около 10 кГц.

Скорость работы COM порта для стандартных мышей - 1200 бод. Пакет данных от мыши со стандартным протоколом "MS Mouse" включает 27 бит (в том числе старт и стоп биты). Т.е. длительность пакета = 1000/(1200/27) = 22,5 миллисекунд.
Если пакеты передаются непрерывно - это минимальный период их передачи.
Получается, что за время передачи пакета данных в COM порт, от PS/2 мыши может придти 22,5/10 = 2,25 пакета данных.
Уже это дробное число показывает, что идеального преобразования быть не может.
Представьте, что Вы равномерно двигаете мышь горизонтально, так что в PS/2 порт непрерывно передаётся перемещение по X равное 10.
В COM порт будет передаваться серия пакетов: 3 пакета с перемещением 20 (=10+10) и каждый четвертый пакет - с перемещением 30 (10+10+10). Будут иметь место небольшие рывки.
Плюс добавляется задержка равная почти двухкратному времени передачи пакета в COM. Если пакет в COM только начал передаваться, а от PS/2 мыши поступили новые данные, то хост (компьютер) получит эти данные только после того, как закончится передаваться текущий пакет и эти данные будут переданы следующим пакетом. Т.е. через 2х22,5 = 45 миллисекунд.
Что эквивалентно частоте передачи 1000/45 = 22,22 Герц. Что уже явственно ощущается.


Это проблему можно решить, если поднять скорость работы COM порта с 1200 до 9600 бод.
В этом случае время передачи пакета данных в COM-порт составляет всего 1000/(9600/27) = 2,8125 миллисекунд.
Во-первых, такую задержку ни один человек ощутить не в состоянии (эквивалентная частота = 1000/2,8125 = 355 Гц),
во-вторых это время меньше периода приема данных от PS/2 мыши (=10 миллисекунд). И никаких преобразований не нужно. Пакеты передаются один-в-один, за исключением инверсии координаты Y и возможного масштабирования.

Изменить скорость с 1200 до 9600 бод в прошивке конвертера не представляет никакой сложности.
Дело за драйвером.
Большинство драйверов не только инициализируют COM порт на скорости 1200 бод, но и в процессе работы зачем-то постоянно вновь и вновь восстанавливают эту скорость, даже если вы её измените каким-то образом.

В итоге под DOS нашлись следующие варианты:

1. Перекомпилировать драйвер с открытым исходным кодом CuteMouse на скорость 9600 бод.
Даже не вникая особо в код, достаточно в двух местах заменить делитель скорости "96" на "12" и перекомпилировать.
Сделал только для версии "v2.0 alpha 4". Она написана на TASM, есть подробная инструкция по компиляции и сборке. Получилось почти сразу. Самая последняя версия "v2.1 beta 4" уже на JASM, с ней надо разбираться.
Впечатления от работы мыши самые положительные! Никаких дефектов преобразования не замечено! Реакция отличная!

2. Использовать драйверы мыши, которые не восстанавливают скорость COM порта в процессе работы.
В моей коллекции таких нашлось только два. Некий "VESA serial mouse driver (version 1.02) 1995" и "Mouse driver version 3.62" от "SPC MANUFACTURING", 1995.
Стартуют они как и положено на скорости 1200 бод, но разрешают потом изменить эту скорость. Я пользовался утилитой setcom.com из некоего пакета, найденного в сети.
Чтобы драйвер запустился и опознал мышь, необходимо, чтобы конвертер сначала передал ему идентификатор мыши (символы "М" и "3") на скорости 1200 бод, потом переключился на 9600 бод. На компьютере мы в это время запускаем setcom, который также поднимает скорость до 9600 бод.
При таком решении CuteMouse, перекомпилированный на 9600 бод не работает. Т.к. с самого начала (с идентификации мыши) ему нужна скорость 9600 бод.

3. Существует протокол COM мышей, который упоминается повсеместно, вместе со стандартным "Microsoft Mouse" (MS Mouse), называется он "Mouse System Mouse" или "PC Mouse". В отличие от MS Mouse, пакет пятибайтовый, по 8 бит в байте. Полностью пакет состоит из 50 бит. Длительность передачи на скорости 9600 бод = 1000/(9600/50) = 5,2 миллисекунды. Что больше, чем 2,8 мкс у протокола MS Mouse, но всё равно очень хорошо. И с запасом укладывается в период приема данных из PS/2 (10 мкс).

Так вот, у этого протокола есть особенность - мышь ни каким образом не даёт знать, что она присутствует.
Если Вы запустите любой (почти) драйвер мыши и он не найдёт ни на одном COM порте мышь, то загрузится именно в режиме Mouse System Mouse на COM1. С помощью ключей к драйверу можно указать другой порт.
В одном из источников написано, что мышь Mouse System может посылать для идентификации в COM-порт символ "H". Но большинство мышей не посылают вообще ничего.
Это даёт нам возможность просто настроить конвертер на скорость 9600 бод.
Запустить один из вышеуказанных драйверов. Не найдя мыши они загружаются в режиме Mouse System.
Мы меняем с помощью Setcom скорость на 9600 бод.
Всё работает!

Можно считать, что под DOS вопрос решён.

Переходим в Windows.
Вот тут нужна "помощь зала".
Для начала я экспериментировал с Win95.

Во-первых, пока не удалось найти способа изменить настройки COM-порта.
Если изменить их в "оборудовании" в свойствах COM-порта, то они меняются и сохраняются, но никак не влияют на фактическую работу COM-порта. Сторонние утилиты показывают, что скорость как была 1200 бод, так и осталась.

Во-вторых, внезапно оказалось, что второй по популярности протокол Mouse System не имеет встроенного драйвера в Win95!!!
Пришлось искать, и с большим трудом найти сторонний.
На скорости 1200 бод работает он, надо сказать, хуже чем родной MS для протокола MS Mouse. Движения заметно неравномерные.

Видятся следующие варианты:
- каким-то образом изменить один из существующих драйверов, чтобы он работал на скорости 9600 бод, вместо 1200. О драйвере с открытым исходным кодом для Win мне неизвестно. Возможно можно как-то пропатчить двоичный код драйвера,
- найти способ изменять скорость COM после загрузки драйвера и драйвер, который не будет сбрасывать её обратно на 1200,
- научить конвертер "притворяться" мышью, которая имеет драйверы с поддержкой скорости 9600 бод. Мне известны только старые мыши от Logitech, в частности их серия "C" и "Cordless". Но пока не удалось разобраться, как драйвер определяет, что подключена именно его "родная" мышь Logitech.

Пока всё.
Буду благодарен за бесполезные советы. :)

Приложения.
Документация на Logitech C7
Здесь можно скачать утилиту Setcom.com.
0leg
Advanced Member


Откуда: Город-герой Тула
Всего сообщений: 1991
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
6 окт. 2007
Rio444 написал:
[q]
100 пакетов в секунду. Т.е. через каждые 1000/100 = 10 микросекунд.
[/q]
10 миллисекунд...
Rio444
Гость


Откуда: Ростов-на-Дону
Всего сообщений: 8632
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
14 сен. 2014
0leg написал:
[q]
10 миллисекунд...
[/q]
Спасибо, исправил.
AndroIDDQD
Newbie


Откуда: Тверь
Всего сообщений: 18
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
5 июня 2018
Rio444, приветствую ! Возможно ли приобрести у вас сей чудо-прибор ?
Rio444
Гость


Откуда: Ростов-на-Дону
Всего сообщений: 8632
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
14 сен. 2014
AndroIDDQD, у меня этот проект пока подвис. Если готовы собрать сами, поделюсь последней прошивкой.
Можем обсудить в начале след недели.
Сейчас на отдыхе. Со смартофона жены не очень удобно.
AndroIDDQD
Newbie


Откуда: Тверь
Всего сообщений: 18
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
5 июня 2018
Rio444, ок, понял. На следующей неделе напишу вам.
<<Назад  Вперед>> Страницы: 1 * 2
Печать
Полигон-2 »   Технический флейм »   PS/2 to COM converter
RSS

1 посетитель просмотрел эту тему за последние 15 минут
В том числе: 1 гость, 0 скрытых пользователей

Последние RSS
[Москва] LIQUID-Акция. Сливаются разъемы CF
МС7004 и 7004А на AT и XT
Пайка термотрубок
Проммать s478 PEAK 715VL2-HT ( Full-Size SBC)
Подскажите по 386 материке по джамперам.

Самые активные 5 тем RSS