Всех с наступившим НГ ! Кто как празднует, а мне после елки и шампанского довелось поковырять обе вышеприведенные разработки.
Схема leonid-z у меня работать не захотела ни в каком виде. Не сумел я никакие отладочные наборы данных прокачать по этому упрощенному SPI на epm7064, да и отлаживать там что-либо трудно - CPLD забита под завязку и даже одного триггера под отладочную защелку не выкроить (
Поэтому бросил я ту идею, добыл epm7128 и пересобрал под нее практически без изменений CPLD-версию andykarpov, хоть и напрягало меня, что под какой-то промежуточный клавиатурный регистр тратится CPLD, в которую можно засунуть практически всю логику спека. Запустил все это с ардуинкой на atmega328p и на ps/2-клавиатуре все заработало прям с разбегу.
Потом с некоторыми мелкими изменениями контроллер поменял на atmega32 с его четырьмя 8-разрядными портами (из которых в дальнейшем без SPI и rx/tx остается 26 ног - вполне достаточно для многих клавиатурных матриц). Код пересобрал в том же arduno IDE с модулями для atmega32 - клавиатура PS/2 тоже заработала без проблем, однако есть неприятность - исходная Atmega328p с включенным фьюзом CKOUT дает получить наружу тактовые импульсы своего генератора, которыми тактируется CPLD-часть. А вот Atmega32 такого не имеет и для CPLD пришлось сделать отдельный генератор.
Вопрос к знающим: какие-то еще из богатых ногами атмег умеют раздавать свой генератор наружу ?
Сегодня прошерстил код атмеги (приятно, читабельно - респект andykarpov !), обработку прерывания от PS/2 и обработку принятых кодов заменил на сканирование матрицы - для примера взял ненужную спековскую клавиатуру (5х8) и прицепил на порты C и D атмеги32. Ее клавиши сканятся и мапятся в регистр CPLD вполне успешно, спек с ней работает вполне адекватно, так что если еще "добавим ножек", то уже можно любую клавиатуру до 26 пин включительно читать и перемапливать на спековскую. Алгоритм опроса незнакомой матрицы пока не реализован, но вроде в железяку вписываемся без проблем и должно получиться.
Для дальнейших экспериментов нашел клавиатуру от Asus X200 на 24 пина, с ней далее и буду экспериментировать.
![]()





Ответить с цитированием