Closed zapolnov closed 3 years ago
В проекте используется вот такая простенькая либа для PS/2 клавы: https://github.com/techpaul/PS2KeyRaw Контроль четности в ней есть, но на неправильную четность оно не отвечает ничем, просто игнорит этот момент, ожидая, что следующий байт от клавы будет уже нормально принят.
Попробую переписать код на базе PS2KeyAdvanced от того же автора, код занимает больше места, но и руки больше развязны будут :) С клавой можно будет общаться, посылать состояния светодиодов и другие команды. Возможно, в ней этого бага нет. Нужно будет поиграться :)
В общем, в ветке 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.
Отладка по UART показала, что клавиатура при подключении посылает постоянно сканкод 0xAA, других сканкодов не посылает.
С Эволюшеном и ZXDOS+ клавиатура работает.
По результатам обсуждения в чате Карабаса есть мнение, что клавиатура посылает 0xAA с неправильной четностью, ожидая от компьютера ответ 0xFE, чтобы убедиться, что компьютер включен (https://forum.arduino.cc/t/ps2keyboard-library-teensy-and-usb-keyboard-with-ps2-adapter/57549/7).