С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Доброго дня.
Ни у кого случаем нет прошивки для Специалиста?
а не лучше править корветовскую прошивку....там вроде 16 на 8
программист из меня еще тот...ткните где править соответствие кодов клавы и координатойИндекс массива соответствует скан коду клавиатуры. Элементы массива кодируют контакты матрицы. Как именно происходит кодирование, видно из этого участка кода:
Код:
void SetAddr(uint8_t addr) {
digitalWrite(AX0,bitRead(addr,0));
digitalWrite(AX1,bitRead(addr,1));
digitalWrite(AX2,bitRead(addr,2));
digitalWrite(AX3,bitRead(addr,3));
digitalWrite(AY0,bitRead(addr,4));
digitalWrite(AY1,bitRead(addr,5));
digitalWrite(AY2,bitRead(addr,6));
}
Матрица имеет размерность 16 столбцов и 8 строк. 4 бита AX0...AX3 кодируют столбцы, 3 бита AY0..AY2 кодируют строки. AX0 - самый младший бит, AY2 - самый старший.
Для удобства я применяю такую заготовку: Заготовка.txt
Править нужно массив. Он состоит из 128 значений. Порядковый номер элемента массива - это сканкод, приходящий с клавиатуры. Сканкодов на самом деле больше, но мы упрощаем в данном случае и используем только префикс F0- отпускание клавиши. Остальные префиксы пропускаем. Значение элемента массива - это закодированный адрес матрицы. Матрица у нас 16 столбцов на 8 строк. 16 мы можем закодировать 4 битами (в данном случае младшие значащие биты элемента массива). А 8 строк можно закодировать 3 битами (здесь это старшие биты). В результате у нас будет число со значением от 0 (нулевая строка, нулевой столбец) до 127 (8 строка, 15 столбец). Т.к. ключ с этим адресом в клавиатуре Корвета не используется, с чистым сердцем присваиваем это значение всем неиспользуемым сканкодам. И так для каждого сканкода. Определяем, будет ли данный сканкод использоваться в нашем компьютере. Если да, то какой клавише (ключу на матрице) будет соответствовать. Пересчитываем адрес матрицы (а он будет завесить от того, как мы подключим матрицу) в код и вносим значение в массив.
- - - Добавлено - - -
Скан коды очень наглядно тут можно посмотреть:
https://radiokot.ru/circuit/digital/pcmod/23/
- - - Добавлено - - -
А так можно визуализировать адресацию матрицы:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 16 32 48 64 80 96 112
Сложите значение столбца и строки, получится адрес.
Уважаемые единочаятели, а не развел ли кто-нибудь данную схему под ЛУТ?
Спасибо уважаемому Xrusty за контроллер. Посидел в Layoute и сделал под Лут для Спектрума плату на Plcc MT8816. Выкладываю файлы платы и файлы прошивок под atmega8 c фьюзами. Забыл сказать . Прилепил на плату два светодиода с двумя резисторами. Один на питание . Второй на 25 ногу Атмеги , индицирует нажатие любой кнопки на клавиатуре. Хотелось бы попросить уважаемого Xrusta доработать программу и вывести на свободные ноги Атмеги импульс сброса по ctrl alt del , nmi по нажатию какой то функциональной клавиши.
Последний раз редактировалось solonoid; 09.12.2023 в 09:06.
Xrust (09.12.2023)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)