Комментарии 49
Паскаль... как много в этом звуке... первый курс универа, Искра-1030, всё вот это вот...
Крутой проект, спасибо! Сам паять бы наверное не стал, но купил бы готовую плату. В своё время я взял у Романа плату ps/2 о которой вы говорите в статье, очень мне нравится и горя не знаю.
Главная проблема старых мышей - шарик. Ещё в те времена это было ужасно и бесило. Было понятно что должна быть другая технология. И когда появились оптические мыши - это был космос. Конечно, использование современных мышей в старом железе не очень канонично, но тем не менее иногда другого выбора нет.
Спасибо за проект, надеюсь кто-то будет его повторять и продавать готовые решения.
Конечно, использование современных мышей в старом железе не очень канонично, но тем не менее иногда другого выбора нет.
Это ещё может заинтересовать тех, у кого старое железо работает не их ностальгии, а потому что реально требуется. Скажем, какое-то древнее оборудование (всё ещё стоящее адских денег) подключено к ПК, на котором шариковая мышь уже всех достала.
Согласен, после современных мышей шариковой пользоваться очень не удобно.
Ими и до было пользоваться неудобно. Но это было лучше чем ничего
Первые оптические мыши требовали спец коврик и соосное позиционирование по нему, чему нужно было учиться. Шарик же работал в любой руке. Помню, подарили товарищу на днюху такую мышь, а он не стал пользоваться из-за этой её особенности. Я решил взять на пробу и научился…
Всё хочу найти такую мышь, но постоянно из под носа уводят
Не так уж и сложно, кстати. Коврик просто держи горизонтально - и всё будет нормально работать. Их два варианта было, кстати - с сеткой и с двумя датчиками, отдельными на вертикальные и горизонтальные линии.
В актуальное время я пользовался первым вариантом (гениус какой-то), а сейчас в наличии есть второй. В кваку с ней игралось вполне нормально - но я казуапьный геймер.


Спасибо, интересна была бы реализация на RP2350 или RP2040. Один чип и немного обвязки
В любом случае без логики и буферов тут не обойтись. Либо ПЛИС, либо логические микросхемы. У малинового контроллера ног не хватит.
Мне, наоборот, больше нравится подход, когда для сопряжения оборудования различных эпох используется контроллеры и жёсткая логика, хоть и в виде плис или плм. Тогда за управление будет отвечать программа, написанная для эвм, а не прошивка микроконтроллера, который по производительности может быть на равне с этой же машиной.
Так что вариант на плм+ch376 был бы интереснее)
Спасибо! Уже представил ретро-ПК с беспроводной мышью и красным курсором в текстовом режиме поверх голубых панелей NC/VC )
Круто!
А RS232 порта на вашем ретро-пк нет?
Если есть, то можно было бы обойтись без CPLD и ISA: RS232-TTL адаптер -> MCU с USB Host (STM32F411/F401 на BlackPill) -> USB мыша. Или даже MCU с BT/BLE (esp32?) + BT/BLE мыша
Очень классная идея и отличная реализация!
Спасибо большое!
У меня USB-мышь воткнута в KVM-переключатель, а оттуда PS/2 кабелем в конвертор PS/2->COM (брал на полигоне, там их паяли небольшими партиями).
У COM мышей есть недостаток, на стандартной скорости 1200 бод мышь не даёт той плавности, к которой мы сейчас привыкли: движения ощущаются дерганными. У этого адаптера движения плавные, как будто вы используете USB мышь обычным образом.
Никогда не был требователен к плавности ретро-мышей. По мне так это всё тапочки для тараканов вида 120 герц и т.п.
Когда в lemmings играешь - это критично
А как мы в леммингов без usb спокойно играли 30 лет назад? А некоторые даже на джойстиках...
Я тоже 30 лет назад играл в леммингов на шариковой мыше. Но зачем страдать, если можно получать удовольствие?
Так я не вижу какого-то страдания в игре в леммингов с комовской мышью.
У каждого своё мироощущение. Пожалуйста, я же не уговариваю играть с оптикой. Я сам за каноничность. Но ещё ребёнком меня бесила шариковая мышь, и я рад что могу ей больше никогда не пользоваться.
Так тут речь не про шарики, а про ком-порт.
Я спокойно свой разер (на фото выше виднеется) использую на 486. И меня как-то не огорчает то, что он там по факту через ком-порт подключен.
ребёнком меня бесила шариковая мышь
(Вкрадчиво:) А знаете, если ролики иногда чистить от собранной шариком грязи...
Нет никаких ошибок в схеме оригинального устройства. Если Вам кажется, что там есть ошибки, Вы не поняли логику его работы.
Вы не информируете микроконтроллер о готовности приёма сигнала, в случае если прерывание запрещено. К примеру, при отправке начальной последовательности, приходится отправлять данные по таймеру, а не по готовности приемника.
В usb варианте отправка данных происходит лишь тогда, когда предыдущие данные прочитаны, т.к. внутренний сигнал irq разнесен с irq сигналом ISA шины.
Вы предполагаете, что хост (компьютер) не успеет прочитать первый байт начальной последовательности (M, 3 или M, Z) до прихода второго байта? На практике такого не бывает.
Ещё какие-то ошибки нашли?
В ps2 версии я ожидаю время, примерно равное времени передачи символа на скорости 1200 бод. Это работает, но все же было бы предпочтительней точно знать, что прошлый символ принят. С другой стороны, мышь тоже не отслеживает принят ли предыдущий символ, но мы ведь хотим максимально увеличить отзывчивость, а не получить очередной переходник usb/ps2 -> com. В usb варианте этот недостаток устранён, выведен отдельный сигнал irq вместо сигнала, инвертирующего сброс, заодно отпала необходимость заводить сигналы irq isa шины на микроконтроллер. При этом правда пропала возможность автоматического определения перемычек на линиях irq2-7.
Что касается второго вопроса: вашего варианта в железе у меня нет, кода или хотя бы бинарника я не видел, судить как там что у вас реализовано и есть ли какие-то еще ошибки я не могу. Упомянутая ошибка связана со схемой, потому я не мог в неё не упереться при разработке.
В любом случае, спасибо за идею. Пользоваться мышью стало не в пример приятнее чем раньше.
Вы несколько раз написали, “ошибка”, “недостаток”, но так и не смогли объяснить, каким образом это конструктивное решение ухудшает работу адаптера.
В режиме передачи данных от мыши в компьютер Атмега отслеживает состояние линий IRQ и передаёт следующий байт только после перехода соответствующей линии в ноль (прерывание обработано и сброшено). Времени на это уходит очень немного (несколько тактов Атмеги на частоте 8 МГц), поэтому на отзывчивость мыши никак не влияет.
Моего варианта в железе у Вас нет, но он есть более чем у двух сотен пользователей. Проблемы в работе возникают крайне редко и в 99% случаев они вызваны неправильной настройкой - не был отключен встроенный COM-порт на материнской плате. Из-за чего возникал конфликт портов на одних адресах.
У Вас в коде есть ошибки, связанные с плохим знанием работы аппаратной части. Не всё железо работает по стандартам. Некоторые функции не реализованы. Дальше думайте сами.
Ошибка в том, что если какая-то программа попробует работать с вашим адаптером не включая прерывания, то это у неё не получится. Что ограничивает совместимость.
Что касается возможных недостатков и ошибок в моём коде - я не претендую на идеальную имплементацию, репозиторий не используется мною в целях коммерции и открыт для использования и доработок всеми желающими.
"если какая-то программа попробует работать с вашим адаптером не включая прерывания, то это у неё не получится" - Вы какие программы имеете в виду? Любой драйвер мыши работает через прерывания. И очень часто не драйвер тоже.
Не понимаю Вашу позицию. Не изучив досконально вопрос Вы пытаетесь дискредитировать мою разработку. Эту энергию лучше направить на совершенствование собственного устройства. А не ждать, что кто-то придёт и исправит все ошибки.
Моя позиция крайне проста: идея вашего устройства мне нравится, потому и разработал USB аналог. В процессе разработки внес изменения, призванные улучшить совместимость в сравнении с оригиналом, о чем и рассказал в статье.
Не вижу здесь никакой дискредитации, наоборот постарался донести в чем приятное отличие от большей части переходников для "железных" com портов.
Вчера играл в XCOM: UFO Defence, Мышь сначала стала глючить, а потом и вовсе перестала работать. Попробовал другую такую же платку - история повторилась. Грешным делом подумал, что что-то сгорело, или спустя полгода наконец проявились баги разработки. В итоге, виновной оказалась батарейка беспроводной мыши, разрядившаяся до напряжения ниже 1в.

Батарейку АА заменил, тестирование стабильности работы продолжается...


Подключение современной USB-мыши к ретро компьютеру с шиной ISA