С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
caro, какую прошивку лучше взять за исходную для модификации под 16ю атмегу?
Вчера повтыкал на разные схемы контроллеров PS/2 для Ориона, Специалиста, спеков, ну и конечно внимательно посмотрел на схему мультиплексоров клавиатуры Корвета. Вопрос - а зачем выводить на контроллер A8 и /CSKB, если нужно всего лишь обеспечить своевременное "замыкание" пар бита адреса и нужного бита ШД? Т.е. достаточно отлавливать сигнал на ША и сразу давать его на ШД. Где я не прав?
- - - Добавлено - - -
Т.е. мультиплексор в самом корвете уже есть, он как раз и управляется сигналами A8 и /CSKB. И все 16 линий данных аппаратно идут на клавиатуру - сама клавиатура все-лишь замыкатель, т.е. не содержит логики.
Ты прав, но для этого контроллер должен иметь такую функцию - чувствительность к изменению состояния на портах ввода/вывода.
Например ATMega8 (dip28) и ATMega16 (dip40) не имеют такую функцию, а программно они не смогут вовремя реагировать на опрос клавиатуры.
Если использовать ATMega48 или ATMega164 можно спокойно заниматься опросом клавиатуры и формированием массива нажатых клавиш,
но как-только произойдет изменение на шине адреса сканирования, произойдет прерывание работы основной программы, и на шине данных
будет выдан код соответствующий нажатой клавише. Поэтому в этом случае можно обойтись и без сигналов A8 и /CSKB.
Камиль, рады вас видеть в наших палестинах!
Получилось ли что-то по теме разработки варианта прошивки для схемы из данной темы, когда матрица 8x8+3 преобразуется в универсальную 8x11, что дало бы прописывать там как матрицу РК-86 (как частный случай), так и матрицу УКНЦ как полные 8x11 (получилось бы впихнуть все 88 кнопок). У нас вышло уже 2 релиза плат для УКНЦ, которые разведены под корпус и клавиатуру УКНЦ, и там сразу разведен контроллер из этой темы (причем с 11 доп. диодами, что в теории дает возможность одновременного использования и механической клавы, и PS2). В теории красиво, а на практике получается что механическая клава УКНЦ, а писишная - РК86, дающая другие нажатия. Хотелось бы уравнять.
- - - Добавлено - - -
Линий портов АтМеги48 как раз хватает на универсальный вариант 8х11
Последний раз редактировалось Error404; 16.04.2018 в 18:36.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
здесь имеется в виду не контроллер внутри клавиатуры PS2, а контроллер на AtMega48. В котором сейчас матрица 8х8 и 3 отдельных кнопки по 3 линиям:
Скрытый текст
Код:;-------------------------------------------------------- ; Матрица клавиатуры ; ----------------------------------- ; │ D7 D6 D5 D4 D3 D2 D1 D0 ; ---+------------------------------- ; A7 │SPC ^ ] \ [ Z Y X ; A6 │ W V U T S R Q P ; A5 │ O N M L K J I H ; A4 │ G F E D C B A @ ; A3 │ / . = , ; : 9 8 ; A2 │ 7 6 5 4 3 2 1 0 ; A1 │ v -> ^ <- ЗАБ ВК ПС TAB ; A0 │F5 F4 F3 F2 F1 AP2 CTP \ ; ----------------------------------- ; биты данных сканирования (d2..d0) [номер колонки 0..7] D0 EQU 000H D1 EQU 001H D2 EQU 002H D3 EQU 003H D4 EQU 004H D5 EQU 005H D6 EQU 006H D7 EQU 007H ; биты адреса сканирования (d5..d3) [номер строки *8] A0 EQU 000H A1 EQU 008H A2 EQU 010H A3 EQU 018H A4 EQU 020H A5 EQU 028H A6 EQU 030H A7 EQU 038H ; Префиксные биты (d7..d6) Ctrl EQU 080H ;флаг Ctrl Bit7=1 Shift EQU 040H ;флаг Shift Bit6=1 AltTb EQU 0C0H ;флаг доп.таблицы[свернуть]
а хочется полноценную матрицу 8х11. Вот тогда туда можно будет закодировать и 88 клавиш клавиатуры УКНЦ
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Есть вариант контроллера на ATMega48 для YAMAHA YIS503, там матрица как раз 8*11.
Есть правда условие, что сканирование идет бегущим нулем по 11 адресным линиям.
Если сканирование клавиатуры УКНЦ идет таким же способом, то прошивку можно
адаптировать довольно просто, переписав таблицу привязки клавиш.
Последний раз редактировалось caro; 17.04.2018 в 07:52.
В Орионе даже в базовом ROM-BIOS F800 есть п/п анализа нажатия любой клавиши, там в порт F400 записывается константа 0 и затем c F401 считываются сразу все линии, это примерно одинаково для обоих матриц, для УКНЦ дополнительно читается и F402 (порт где в варианте РК висит только 3 кнопки {ctrl, shift, ruslat}, а у УКНЦ там 3*8 кнопок). И все игры ZX опрашивают клавиатуру произвольно. Т.е. надо чтобы алгоритм был тот же что у прошивки для RK-86, но на 3 бита "шире"
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)