Важная информация

User Tag List

Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 29

Тема: Контроллер клавиатуры PS/2

  1. #1
    Master
    Регистрация
    30.07.2013
    Адрес
    г. Запорожье, Украина
    Сообщений
    890
    Спасибо Благодарностей отдано 
    69
    Спасибо Благодарностей получено 
    83
    Поблагодарили
    49 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Контроллер клавиатуры PS/2

    Практически закончил контроллер клавиатуры PS/2 для БКшки. Т.к. лень было паять кучу проводов к компу, сделал в виде внешнего модуля. При отключенном контроллере работает ВП1-014, при подключении контроллера через системный разъем автоматом отключается ВП1-014 и работает контроллер. Сделано на Меге (пока на 32 на девборде) и одной ТМ5 (нужно для захвата бита nAD1, Мега не успевает). Пока не сделал кнопку СТОП, все остальные кнопки работают, кнопки работы с верхним и нижним регистром - стандартный Shift. Бонус - автоповтор нажатой клавиши.

    Для блокировки ВП1-014 пришлось перерезать дорожку /CS и в разрез вставить резистор. Вывод /CS от 014 и от 37 вывел на разъем. При подключении контроллера, от 37 используется для Меги, а на 014 подается +5В для блокировки. Так же на разъем заведен RP1. Контроллер можно поставить вместо ВП1-014.

    Памяти прошивка занимает 1.5к. Количество задействованных ног - 16. Как только проект переведе на Мегу8 или что-то поменьше - выложу в открытый доступ.




    -------------------------------------------------------------Добавлено 02.08.2019-------------------------------------------------------------

    Проект переведен на Мегу8. Пользуйтесь.
    Контроллер можно сделать в виде внешнего блока, как написано выше, но лучше использовать внутри, т.к. некорые сигналы на системный разъем не выведены, а nRPLY нужно брать от ВП1-14. Сигнал "СТОП" заводится на выв. 15 ХТ2 для БК-0010 с двумя разъемами или выв. 1 ХТ1 для БК-0010 с тремя разъемами клавиатуры, т.е. на анод диода VD1.
    Схема. М\с К155ТМ5 (для 155 серии резистор R2 можно не ставить), Atmega8-PU, конденсаторы 2 х 22пФ, кварц на 20МГц, резисторы на 10к


    Исходники и прошивка для Меги8 (Fuse High = 0xC9, Low = 0xEE). Есть автоповтор нажатой кнопки.
    https://drive.google.com/file/d/1gOQ...ew?usp=sharing

    Видео работы (некоторые кнопки плохо нажимаются - старенькая клава). "СТОП" в начале видео - демонстрация работы кнопки СТОП (назначена на F10)
    https://drive.google.com/file/d/1E92...ew?usp=sharing
    Последний раз редактировалось Alex_LG; 02.08.2019 в 11:06.

  2. Эти 3 пользователя(ей) поблагодарили Alex_LG за это полезное сообщение:

    Manwe (17.07.2019), Mr-Linker (06.08.2019), siemensC35 (17.01.2020)

  3. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  4. #2
    zx_
    Гость

    По умолчанию

    во, супер
    не бросай , доделай
    можно будет бк без корпуса бэкашного

  5. #3
    Master
    Регистрация
    30.07.2013
    Адрес
    г. Запорожье, Украина
    Сообщений
    890
    Спасибо Благодарностей отдано 
    69
    Спасибо Благодарностей получено 
    83
    Поблагодарили
    49 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Перевел на Мегу8.
    Есть проблема. После нескольких нажатий комп иногда уходит в ступор или выдает "СТОП". Пока не могу определить проблему, то ли я накосячил с прошивкой, то ли комп глючит (случайно дотронулся рукой к одной из РУ6 -по экрану пошел мусор, заменил, возможно есть еще глючные, надо проверять). Поэтому выкладываю для повтора и теста полный комплект. Если у кого есть возможность и желание - повторите. Пока не реализовал кнопку "СТОП", сигнал не используется. Устройство подключается к внешнему разъему. Все сигналы стандартные, дополнительно вывел на А6 сигнал nCSI - вход nCS (выв.30) от ВП1-14, А7 сигнал nCSO - выход nBS (выв.38) от ВП1-37, А8 - выход/вход RP1 (выв. 20) от ВП1-14. Необходимо впаять резистор 1кОм в сигнал nCS между ВП1-37 и ВП1-14, сделать это удобней с обратной стороны платы под ВП1-37 - разрезать дорожку и припаять резистор (фото ниже). Со стороны контроллера, на разъеме между выв. А4 и А6 подпаиваем резистор на 1-10кОм (на схеме нет), это будет блокировать ВП1-14 при подключении контроллера. Если использовать ТМ5 (7477) серии 155, т.е. к155тм5, то незадействованные входы можно оставить "висеть" в воздухе. ТМ5 используется для "защелки" бита nAD1 по активации nCS. Вместо ТМ5 можно использовать ТМ9, в общем нужен триггер или регист, способный запоминать по отрицательному фронту или по "0" на управляющем выводе. Мега, без ТМ5, не успевает считать этот бит и определить к какому регистру идет обращение. Мега работает на 16МГц (пробовал и на 20МГц), конденсаторы 22пФ.
    По коду. Процедура работы с клавиатурой PS/2 взята из Интернета, там ничего сложного. Обработка клавиш подправлена под собственные нужды. Переключение РУС-ЛАТ - правый и левый АЛТ, по аналогии с клавиатурой БКшки, так же и по F1-F9 - от ПОВТ до СБР. Настройку раскладки можно сделать через таблицу vk_code в scancodes.h. Таблица представляет из себя перекодировку из кода нажатой клавиши в код в таблице кодировки БК bk_code. Обратной связи с клавиатурой не делал, т.е. индикаторами не мигает. Автоповтор пока убрал до выяснения сбоев в работе.



    Полній комплект (проект для WinAVR, схема в формате Eagle):
    https://drive.google.com/drive/folde...C-?usp=sharing

  6. #4
    Veteran Аватар для krotan
    Регистрация
    30.08.2010
    Адрес
    Санкт-Петербург
    Сообщений
    1,263
    Спасибо Благодарностей отдано 
    53
    Спасибо Благодарностей получено 
    192
    Поблагодарили
    159 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_LG Посмотреть сообщение
    Перевел на Мегу8. Есть проблема.
    Попробуй удалить конденсаторы на кварце, а фьюз CKOPT=0.

  7. #5
    Master
    Регистрация
    30.07.2013
    Адрес
    г. Запорожье, Украина
    Сообщений
    890
    Спасибо Благодарностей отдано 
    69
    Спасибо Благодарностей получено 
    83
    Поблагодарили
    49 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от krotan Посмотреть сообщение
    Попробуй удалить конденсаторы на кварце, а фьюз CKOPT=0.
    Не помогло.
    Подключил стандартную клаву, комп работает не виснет, правда при нажатии, например 1 выскакивает 2, при повторном нажатии выскакивает 1, так с некоторыми клавишами - правильно срабатывают только на втором нажатии.
    Заметил, что с кварцем на 16МГц глюк проявляется практически сразу, на 20МГц - можно неспешно что-то набрать. Похоже Мега не успевает нормально обработать клаву и времянка МПИ уходит, что приводит к зависанию компа. Наверное прийдется ставить два контроллера: один (типа Тини) будет обрабатывать клавиатуру, второй - МПИ, связать их по последовательному порту.
    ЗЫ Не пойму как оно на 32 Меге работало!!!

  8. #6
    Master
    Регистрация
    30.07.2013
    Адрес
    г. Запорожье, Украина
    Сообщений
    890
    Спасибо Благодарностей отдано 
    69
    Спасибо Благодарностей получено 
    83
    Поблагодарили
    49 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Мега успевает все красиво обработать. Вот двойное быстрое нажатие кнопоки


    А вот, наверное, самая долгая в обработке кнопка ТАБ (зачем-то проц почти 30 раз считывает регистр кода клавиши)


    Видно, что проц обращается к Меге между обработкой прерываний от клавиатуры - сигналы nCS попадают между пачек KB_CLK.
    Проблема, скорее всего с вектором прерывания или чтением проца Меги. Вот "зависание" на обработке прерывания


    P.S. Картинки увеличиваются - при просмотре, вверху слева есть выбор размера.

  9. #7
    Master
    Регистрация
    30.07.2013
    Адрес
    г. Запорожье, Украина
    Сообщений
    890
    Спасибо Благодарностей отдано 
    69
    Спасибо Благодарностей получено 
    83
    Поблагодарили
    49 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    nRPLY, который идет на системный разъем, идет от ПЗУшек, уровень на нем, почему-то, не больше 1.5В (возможно это проблема с моим компом). У Меги32 вектор/данные выставлялись в порт полностью, т.е. 8 бит за раз, на Меге8 байт делится между двумя портами - порт С и порт Д. Т.к. nRPLY порядка 1.5В, то проц считает его активным, поэтому может быть считывание байта до его актуализации. Подкинул nRPLY от ВП1-14 - стало намного стабильней. Но все равно появляется зависание на втором считывании, похоже что Мега подвисает, по крайней мере не выставляет nRPLY.

  10. #8
    Veteran Аватар для tank-uk
    Регистрация
    10.06.2015
    Адрес
    г. Запорожье, Украина
    Сообщений
    1,712
    Спасибо Благодарностей отдано 
    80
    Спасибо Благодарностей получено 
    415
    Поблагодарили
    198 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Alex_LG, вот тут https://github.com/andykarpov/ps2_cpld_kbd лежит проект клавы с сырцами заменяющий мех.клаву поправь сканкоды в меге328 и сетку в максе и клаву можно втыкать в родные разъёмы

    Скрытый текст


    Специалист "УЦА" +SD-Vinxru +PS/2-Vinxru
    PLM-X 128 + AY -эмуль на 8меге
    Profi V3.2 - 768+Color-CP/M+ProfiExtender Solegstar
    Profi V3.2 -1024 Sim30+Color-CP/M+ProfiExtender Solegstar
    Pentagon 1024SL 1.42 - работает не совсем стабильно
    ZXM-Phoenix V06
    ZX-Evolition Rev C2 White FSP-MItX
    Sprinter 2000 v.Zorel
    Karabas128 + ZX-Taper by TrolSoft +DivSD +ScanDoubler
    ZX-UNO v4.1 2М с 4 переключаемыми флешками
    Поиск-1 - ждет ремонта
    Корвет ПК8010 up to 8020
    MisT 1.31
    Galaksija + SMD
    [свернуть]

  11. #9
    Master
    Регистрация
    30.07.2013
    Адрес
    г. Запорожье, Украина
    Сообщений
    890
    Спасибо Благодарностей отдано 
    69
    Спасибо Благодарностей получено 
    83
    Поблагодарили
    49 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от tank-uk Посмотреть сообщение
    поправь сканкоды в меге328 и сетку в максе и клаву можно втыкать в родные разъёмы
    Сканкоды вроде сходятся. На гитхабе проект просто заменяет механическую матрицу клавиатуры, он не подойдет. Смысл моего проекта в замене контроллера ВП1-14, а не кнопок. Клавиатура PS\2 - это, скорее, как "примочка" к контроллеру, если заменить Мегу8 на 16 (портов больше) то можно оставить родную механику.

  12. #10
    Master
    Регистрация
    30.07.2013
    Адрес
    г. Запорожье, Украина
    Сообщений
    890
    Спасибо Благодарностей отдано 
    69
    Спасибо Благодарностей получено 
    83
    Поблагодарили
    49 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Выловил еще один глюк, причем элементарный ((((
    Было
    Код:
    ADH_WR |= AD6;
    ADH_WR |= AD7;
    ADH_WR &= (CTRL_REG & (AD6|AD7)).
    Вместо того, чтобы изменить 6 и 7 бит порта ADH_WR, менялся полностью байт, т.е. 0-5 биты обнулялись.
    Заменил на
    Код:
    ADH_WR &= ~AD6;
    ADH_WR &= ~AD7;
    ADH_WR |= (CTRL_REG & (AD6|AD7))
    Так же добавил задержку в 120мс (сигнал RP1) для того, что бы проц успевал отработать даже саму "медленную" клавишу "ТАБ" (около 30 считываний регистра кода клавиши) и при этом не возникали прерывания - эмуляция задержки на конденсаторах на ВП1-14.

    Осталась одна проблема. В некоторые моменты проц почему-то считывает не регистр кода клавиши (для обычный кодов по 2 раза), а делает цикл "чтение-модификация-запись" регистра состояния, а затем, как положено, чтение регистра кода клавиши, что приводит к выводу "СТОП" и в дальнейшем к зависанию. Пытался разбираться в исходниках Монитора БКшки, но особо ничего не понял, с ВМ1 особо не знаком.

    Может кто поможет разобраться с исходниками, что бы понять в какие моменты (кроме инициализации) происходит чтение-запись регистра состояния ВП1-14?

    P.S. Жуть - 666 сообщение... )))))
    Последний раз редактировалось Alex_LG; 30.07.2019 в 09:33.

Страница 1 из 3 123 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. ZXKeyb контроллер PS/2 клавиатуры.
    от Randomize_Usr в разделе Устройства ввода
    Ответов: 8
    Последнее: 17.06.2018, 22:01
  2. БезWaitовый контроллер клавиатуры
    от caro в разделе Устройства ввода
    Ответов: 68
    Последнее: 01.07.2015, 05:42
  3. контроллер писишной клавиатуры
    от sevol в разделе Устройства ввода
    Ответов: 10
    Последнее: 18.02.2011, 09:38
  4. КУПИТСЯ контроллер AT клавиатуры.
    от kgbond в разделе Барахолка (архив)
    Ответов: 5
    Последнее: 15.09.2010, 11:16

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •