andykarpov / karabas-pro

FPGA based retrocomputer with FDD and HDD controllers
MIT License
28 stars 8 forks source link

Не работает PS/2 клавиатура Perixx PERIBOARD-505 #55

Closed zapolnov closed 3 years ago

zapolnov commented 3 years ago

Отладка по UART показала, что клавиатура при подключении посылает постоянно сканкод 0xAA, других сканкодов не посылает.

COM3 - PuTTY 2021-06-20 00 44 02

С Эволюшеном и ZXDOS+ клавиатура работает.

По результатам обсуждения в чате Карабаса есть мнение, что клавиатура посылает 0xAA с неправильной четностью, ожидая от компьютера ответ 0xFE, чтобы убедиться, что компьютер включен (https://forum.arduino.cc/t/ps2keyboard-library-teensy-and-usb-keyboard-with-ps2-adapter/57549/7).

andykarpov commented 3 years ago

В проекте используется вот такая простенькая либа для PS/2 клавы: https://github.com/techpaul/PS2KeyRaw Контроль четности в ней есть, но на неправильную четность оно не отвечает ничем, просто игнорит этот момент, ожидая, что следующий байт от клавы будет уже нормально принят.

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

andykarpov commented 3 years ago

В общем, в ветке avr-ps2keyadvanced закоммичена новая реализация: https://github.com/andykarpov/karabas-pro/tree/avr-ps2keyadvanced/firmware/releases/profi/avr , просьба затестить. С вероятностью 99% все заработает :)

Для обновления прошивки AVR потребуется программатор, usbasp или аналогичный, с переходником под 6-пиновый разъем. Шить как обычно: avrdude -c usbasp -p m328p -U flash:w:karabas_pro_revD.hex -U lfuse:w:0xFF:m -U hfuse:w:0xDE:m (где суффик имени файла прошивки - в зависимости от ревизии платы: revA - для плат ревизии А, revD - для плат ревизий D или DS, без суффикса - для плат ревизии B, C.