USB - AT - PS/2 -> ASCII адаптер клавиатуры

   

 

 

    В рамках проекта "Аюша-Z80" был собран описанный ниже адаптер-переходник для подключения к старым компьютерам современных клавиатур АТ и PS/2-стандартов по интерфейсу ASCII, поскольку не у всех любителей есть возможность и желание собирать самостоятельно клавиатуру из отдельных кнопок, комплект которых к тому же, может потребовать ощутимой суммы на приобретение. Данная же конструкция выполнена по условию "необходимой достаточности" - простой чип, минимум ног, максимальное использование при минимуме обвески. Результат - миниатюрная платка (верхнее фото) с минимальным энергопотреблением.

    Основой адаптера стал проект Себастиана Кинцля, http://knzl.de/ps2-keyboard-for-apple-ii/ . Его основным "недостатком" стала невозможность использования кириллической кодировки в связи с малым объёмом памяти микроконтроллера. Поэтому было решено взять более ёмкий чип, PIC16F684, и доделать прошивку уже под него.

    Схема адаптера хороша своей простотой. Кроме контроллера она содержит всего два резистора, которые могут быть исключены в случае применения некоторых PS/2-клавиатур. Для USB/АТ-клавиатур подтягивающие резисторы обязательны.

 

    В текущей ревизии адаптера реализовано следующее:

- конвертация первой половины ASCII-таблицы во всех видах (прописные, строчные, с капсом и шифт-капсом);
- конвертация второй половины в кодировке кириллицы СР866 (альтернативная ДОС, прописные, строчные, с капсом и шифт-капсом);
- конвертация управляющих символов Ctrl+*** в любой раскладке;
- индикация раскладки (капс или кириллица). Переключение рус/лат осуществлено клавишей ScrollLock;

- поддержка цифровой клавиатуры ("стрелки" не поддерживаются в связи с отсутствием какого-либо стандарта на их использование).
- строб негативный.

    В качестве игрового бонуса прилагается анимация светодиодами, показывающая окончание инициализации микроконтроллера и готовность к последующей работе.

    Прошивку, исходники на языке Си и справочные данные скачиваем тут.

    По мнению автора достоинства адаптера следующие:

- минимальные размеры, если в дальнейшем адаптер будет располагаться на какой-то печатной плате. Использование микроконтроллера в корпусе SOIC или TSSOP ещё более уменьшает размеры;

- минимальное энергопотребление - 0.8 мА по даташиту;

- возможность перепрошивки под требования пользователя.

    Недостатки тоже имеются:

- не очень дешёвый чип;

- нелюбовь некоторых пользователей именно к этому типу микроконтроллера :)

 

    Далее информация для рукастых.

    Если заинтересованному пользователю потребуется изменить кириллическую кодовую страницу, либо изменить кодовую страницу на иную национальную, то открыв приложенный файл keymap.c можно вручную поправить таблицы, начинающиеся со слов keymap_rus***, прописав либо нужные символы, либо их коды в шестнадцатеричном формате. После этого полностью перекомпилировать проект (необходим компилятор HT-PICC  в составе MPLAB). Если же есть желание заменить тип контроллера на иной (поддерживающий работу от внутреннего синхрогенератора), то, в соответствии с даташитом, в файле main.c заменяем строку конфигурации, прописываем ножки и порты, а также константы в регистрах памяти в секции main(). Там же можно переписать полярность и длительность строб-импульса. Как видите - ничего сложного ;)

 

    Как пример, предлагается вариант прошивки для компьютера "Ириша" и частичной замены клавиатуры 15ВВВ-97-005/006. Архив скачиваем тут.

    В существующем варианте кириллица зашита в формате КОИ-8. Поддерживаются функциональные клавиши F1-F5 и стрелки курсора. Замена клавиш: ВК = Enter, ПС = Shift+Enter, ГТ = Shift+TAB (код 0х09). При этом код ТАВ 0х18.
    Информация о кодах клавиатуры взята из книжки про "Иришу".


    Строб негативный. Вход сигнала /IBF (подтверждение считывания кода символа - используется 4 ножка микроконтроллера) негативный. Клавиша Старт/Лок.Сброс - нормально замкнутая, прерывает питание контроллера (см. схему в архиве). Клавишу Сброс компьютера необходимо перенести на корпус. Светодиод NumLock аналогичен светодиоду ПРД., зажигается при наличии символа на выходе конвертера, погасает при возврате сигнала /IBF в неактивное состояние. При испытании замечена память на 1-2 нажатых символа, требуется проверка.

 

    Также выяснилось, что к вышеописанному адаптеру возможно подключение USB-клавиатуры! Идея в том, что большинство таких клавиатур умеют эмулировать работу с PS/2-интерфейсом, автоматически определяя, к чему её подключили. В приложенном видео для подключения используется пассивный переходник USB-PS/2 от давно умершей мышки (схема такого переходника см. чуть ниже, кликабельно). Разумеется, что если клавиатура работает в таком подключении, то для своей конструкции лучше сразу поставить USB-разъём дабы исключить любые переходники.

 

    Однако существуют некоторые ограничения. В частности, внутри клавиатуры не должно быть USB-хаба, поскольку клавиатура "не поймёт", что её подключили к старому интерфейсу, а также внутренний чип должен поддерживать оба интерфейса (но это можно проверить практически).

 

UPD от 15.04.2019: пользователь barick на форуме zx-pk.ru сообщил, что опубликованная выше прошивка без каких-либо изменений может быть использована с чипом PIC16F688, что позволяет несколько удешевить затраты на сборку адаптера.

На главную...