Вход

Просмотр полной версии : Орион-128: Контроллер PS/2-клавиатуры



Страницы : 1 [2]

surinm
16.04.2018, 13:59
Коллеги, привет! Есть необходимость адаптировать контроллер для Корвета ПК8020. У него матрица 8х16. Скажите, с чего правильнее начать?
Первое с чем столкнулся - нехватка выходов. Есть Atmega 8 - на ней по идее должно хватить выводов.
Схема клавиатуры корвета. (https://yadi.sk/i/I8L2siRb3UTCs4)

Denn
16.04.2018, 15:13
Скажите, с чего правильнее начать?

С выбора ветки.


http://zx-pk.ru/forums/65-korvet.html

http://zx-pk.ru/forums/60-pk8000.html

caro
16.04.2018, 16:43
Коллеги, привет! Есть необходимость адаптировать контроллер для Корвета ПК8020. У него матрица 8х16. Скажите, с чего правильнее начать?
Первое с чем столкнулся - нехватка выходов. Есть Atmega 8 - на ней по идее должно хватить выводов.
Схема клавиатуры корвета. (https://yadi.sk/i/I8L2siRb3UTCs4)Если делать только на одном контроллере, без внешних регистров,
то надо: 16 линий данных плюс 8 линий адреса и 2 линии сигналов A8 и /CSKB - всего 26 сигналов.
В этом случае ATMEGA8 не подойдет. Надо поставить на шину данных мультиплексоры, что снизит количество линий до 18.

Error404
16.04.2018, 18:43
Камиль, рады вас видеть в наших палестинах!
Получилось ли что-то по теме разработки варианта прошивки для схемы из данной темы, когда матрица 8x8+3 преобразуется в универсальную 8x11, что дало бы прописывать там как матрицу РК-86 (как частный случай), так и матрицу УКНЦ как полные 8x11 (получилось бы впихнуть все 88 кнопок). У нас вышло уже 2 релиза плат для УКНЦ, которые разведены под корпус и клавиатуру УКНЦ, и там сразу разведен контроллер из этой темы (причем с 11 доп. диодами, что в теории дает возможность одновременного использования и механической клавы, и PS2). В теории красиво, а на практике получается что механическая клава УКНЦ, а писишная - РК86, дающая другие нажатия. Хотелось бы уравнять. :)

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


Если делать только на одном контроллере, без внешних регистров,


Линий портов АтМеги48 как раз хватает на универсальный вариант 8х11

caro
16.04.2018, 19:43
Камиль, рады вас видеть в наших палестинах!
Получилось ли что-то по теме разработки варианта прошивки для схемы из данной темы, когда матрица 8x8+3 преобразуется в универсальную 8x11, что дало бы прописывать там как матрицу РК-86 (как частный случай), так и матрицу УКНЦ как полные 8x11 (получилось бы впихнуть все 88 кнопок). У нас вышло уже 2 релиза плат для УКНЦ, которые разведены под корпус и клавиатуру УКНЦ, и там сразу разведен контроллер из этой темы (причем с 11 доп. диодами, что в теории дает возможность одновременного использования и механической клавы, и PS2). В теории красиво, а на практике получается что механическая клава УКНЦ, а писишная - РК86, дающая другие нажатия. Хотелось бы уравнять. :)
Я немного запамятовал, а разве нельзя в контроллере писишной клавы переделать таблицу привязки клавиш, что бы она соответствовала клаве УКНЦ?

Error404
16.04.2018, 22:00
Я немного запамятовал, а разве нельзя в контроллере писишной клавы переделать таблицу привязки клавиш, что бы она соответствовала клаве УКНЦ?

здесь имеется в виду не контроллер внутри клавиатуры 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 клавиш клавиатуры УКНЦ

caro
17.04.2018, 07:18
здесь имеется в виду не контроллер внутри клавиатуры PS2, а контроллер на AtMega48.
В котором сейчас матрица 8х8 и 3 отдельных кнопки по 3 линиям:
а хочется полноценную матрицу 8х11. Вот тогда туда можно будет закодировать и 88 клавиш клавиатуры УКНЦ
Есть вариант контроллера на ATMega48 для YAMAHA YIS503, там матрица как раз 8*11.
Есть правда условие, что сканирование идет бегущим нулем по 11 адресным линиям.
Если сканирование клавиатуры УКНЦ идет таким же способом, то прошивку можно
адаптировать довольно просто, переписав таблицу привязки клавиш.

surinm
17.04.2018, 12:50
В этом случае ATMEGA8 не подойдет.
А ATmega 16? Там 40 ног, и полные 24 вывода.

caro
17.04.2018, 13:05
А ATmega 16? Там 40 ног, и полные 24 вывода.На самом деле там 4 порта по 8 бит, так что этого достаточно с большим запасом.

Error404
17.04.2018, 13:05
Есть вариант контроллера на ATMega48 для YAMAHA YIS503, там матрица как раз 8*11.
Есть правда условие, что сканирование идет бегущим нулем по 11 адресным линиям.
Если сканирование клавиатуры УКНЦ идет таким же способом, то прошивку можно
адаптировать довольно просто, переписав таблицу привязки клавиш.

В Орионе даже в базовом ROM-BIOS F800 есть п/п анализа нажатия любой клавиши, там в порт F400 записывается константа 0 и затем c F401 считываются сразу все линии, это примерно одинаково для обоих матриц, для УКНЦ дополнительно читается и F402 (порт где в варианте РК висит только 3 кнопки {ctrl, shift, ruslat}, а у УКНЦ там 3*8 кнопок). И все игры ZX опрашивают клавиатуру произвольно. Т.е. надо чтобы алгоритм был тот же что у прошивки для RK-86, но на 3 бита "шире"

surinm
17.04.2018, 13:14
caro, какую прошивку лучше взять за исходную для модификации под 16ю атмегу?

caro
17.04.2018, 14:27
caro, какую прошивку лучше взять за исходную для модификации под 16ю атмегу?Посмотрю в своих вариантах, пришлю подходящую.

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


В Орионе даже в базовом ROM-BIOS F800 есть п/п анализа нажатия любой клавиши, там в порт F400 записывается константа 0 и затем c F401 считываются сразу все линии, это примерно одинаково для обоих матриц, для УКНЦ дополнительно читается и F402 (порт где в варианте РК висит только 3 кнопки {ctrl, shift, ruslat}, а у УКНЦ там 3*8 кнопок). И все игры ZX опрашивают клавиатуру произвольно. Т.е. надо чтобы алгоритм был тот же что у прошивки для RK-86, но на 3 бита "шире"
У нас вышло уже 2 релиза плат для УКНЦ, которые разведены под корпус и клавиатуру УКНЦ, и там сразу разведен контроллер из этой темы (причем с 11 доп. диодами, что в теории дает возможность одновременного использования и механической клавы, и PS2). Желательно бы посмотреть эту часть схемы. Пришли если не сложно на мой e-mail или дай ссылку.

Error404
18.04.2018, 10:14
Желательно бы посмотреть эту часть схемы. Пришли если не сложно на мой e-mail или дай ссылку.

Схема полностью такая же как и оригинальная kbd_or12.png (в архиве первом посте (http://zx-pk.ru/attachment.php?attachmentid=57699&d=1469963400)), добавленные диоды - просто развязка аналогично тому как в оригинале стоит диод на reset Ориона.65057 {схема с диодами потерялась со смертью savepic, этот обмылок из кэша гуглопоиска} Механическая матрица УКНЦ такая (http://c6lab.org/caro/kr03-kbd_ms7007.jpg), подключение к ориону такое (http://www.danbigras.ru/RK86/KeyBrd/MC7007P1.gif).

caro
18.04.2018, 13:30
Посмотрел все схемы и прошивку и пришел к не утешительному выводу, что текущая схема на ATMega48,
которая работает на частоте 8 МГц от встроенного генератора не обеспечивает требуемую скорость реакции
контроллера на опрос двух портов клавиатуры.
Предлагаю перейти к варианту контроллера выполненного на базе ATMega164 (40/44 выводной корпус),
работающий на частоте 20 МГц.

Error404
18.04.2018, 18:16
Посмотрел все схемы и прошивку и пришел к не утешительному выводу, что текущая схема на ATMega48,
которая работает на частоте 8 МГц от встроенного генератора не обеспечивает требуемую скорость реакции
контроллера на опрос двух портов клавиатуры.
Предлагаю перейти к варианту контроллера выполненного на базе ATMega164 (40/44 выводной корпус),
работающий на частоте 20 МГц.

На 20 МГц работают и Меги48 (если с внешним кварцем). Опрос же там работает по прерыванию от изменения потенциала на ножках? Порт генерирующий прерывание остался ровно тот же (Орион выводит скан-код одинаково для обоих типов клавиатур: 8-битный сканкод в порт "А" ВВ55). Меняется только обработка 3х битов порта "C" (это выход Меги48 и вход Ориона).

На самом деле я не очень понимаю почему должно стать намного медленнее. Конечно, я не знаю как написан код, но если бы делал сам, то сделал бы так:
- в основном цикле непрерывно сканировал PS-2 клавиатуру и постоянно поддерживал в актуальном состоянии "полуфабрикат" ответов на входящий скан-код (т.е. вёл бы таблицу со всеми возможными вариантами ответов - их 256). Эта процедура на контроллере в 1МИПС вообще не критична по времени т.к. гарантированно успевает выполниться много раз в секунду (чаще чем мы сможем нажимать кнопки). Для РК86 в этом же цикле можно выводить 3 бита статуса упр. кнопок ctrl+shift+ruslat т.к. для РК86 они не зависят от скан-кода.
- по прерыванию (поступлению 8-битного скан-кода) используя скан-код как индекс просто брать из подготовленной ранее таблицы результат и выводить его в выходные порты (три команды на ассемблере). Для РК86 эта таблица содержит байты, а для УКНЦ - слова (надо по 11 бит, но придется по 16), т.е. для УКНЦ возможно придется использовать Мегу88 т.к. у неё 1кб RAM против 512b у Меги 48 (но она хотя бы по ножкам совместима - это очень важно учитывая что уже выпущено 4 десятка плат УКНЦ под такой корпус Меги).

Т.е. для 64 кнопок совпадающих с матрицей РК86 прошивка УКНЦ покажет ровно такую же скорость, а вот дополнительные 3 бита (24 кнопки) по прерыванию (скан-коду) будут выданы на 2 команды (2 такта Меги) позже, но не факт что это станет заметно Ориону - попробовать надо!

caro
18.04.2018, 21:05
;================================================= =========
; На линиях PORTD фиксируются изменения состояния адресов
;4 PCINT2 PORTD
in YL,PIND ;+1 адрес сканирования
ld scanFF,Y ;+2 скан код из текущего буфера
out PORTB,scanFF ;+1 выдать в порт данных
;=8 тактов => 1 Мксек при 8 МГц
; Регистровая пара Y по умолчанию указывает на 256 байтный буфер,
; в котором сформирована таблица с кодами нажатых клавиш
; Это в случае матрицы 8*8
; ----
; Для дополнительных 3 бит нужно будет сформировать еще один буфер на 256 байт
; Для ускорения работы сделаем его со старшим байтом адреса, отличающимся
; на 1 бит от первого буфера, например 0200h и 0300h
sbr YH,1<<0 ;+1 -> Y=03xx
; теперь прочитаем код нажатых клавиш из нового буфера
ld scanFF,Y ;+2
; а вот теперь надо обязательно запомнить регистр статуса МК
in tempS,SREG ;+1 сохранить СТАТУС
in port_C,PINC ;+1 текущее состояние порта C
andi port_C,0xF8 ;+1 обнулить 3 мл. бита
or scanFF,port_C ;+1 добавим 3 бита из буфера клавиш
out PORTC,scanFF ;+1
;= 16 тактов => 2 мксек
; завершили выдачу во второй порт клавиатуры
cbr YH,1<<0 ; Y=02xxh
out SREG,tempS ; восстановить СТАТУС
reti ;+4 возврат
;************************************************* *********


Получилось 2 мксек.
Посмотри, если есть возможность, сколько времени в ОРИОНЕ занимает чтение порта клавиатуры.
Если больше 2 мксек до момента фиксации данных, то может и пройдет.
На спектруме, при тактовой частоте 3.5 Мгц реакция должна быть не более 0.7 мксек.
А у Ориона по моему тактовая = 2 МГц если я не ошибаюсь?

andreil
18.04.2018, 21:21
А у Ориона по моему тактовая = 2 МГц если я не ошибаюсь?
Здесь принцип другой.
В Спеке данные сразу же и читаются, 1 командой процессора.
А в Орионе и подобных - много команд, поскольку всё идёт через ВВ55. А это как минимум 2 команды (3 для расширенного, больше чем 8х8): запись сканкода в порт А и чтение результата из портов B/C.

caro
18.04.2018, 21:31
Здесь принцип другой.
В Спеке данные сразу же и читаются, 1 командой процессора.
А в Орионе и подобных - много команд, поскольку всё идёт через ВВ55. А это как минимум 2 команды (3 для расширенного, больше чем 8х8): запись сканкода в порт А и чтение результата из портов B/C.Да, я это не учел. Тогда может и заработает. Мне это проверить не удастся, за неимением необходимого железа. Попробую обновить прошивку и выложу для тестирования.

Error404
18.04.2018, 22:32
;================================================= =========
; На линиях PORTD фиксируются изменения состояния адресов
;4 PCINT2 PORTD
in YL,PIND ;+1 адрес сканирования
ld scanFF,Y ;+2 скан код из текущего буфера
out PORTB,scanFF ;+1 выдать в порт данных
;=8 тактов => 1 Мксек при 8 МГц
; Регистровая пара Y по умолчанию указывает на 256 байтный буфер,
; в котором сформирована таблица с кодами нажатых клавиш
; Это в случае матрицы 8*8
; ----
; Для дополнительных 3 бит нужно будет сформировать еще один буфер на 256 байт
; Для ускорения работы сделаем его со старшим байтом адреса, отличающимся
; на 1 бит от первого буфера, например 0200h и 0300h
sbr YH,1<<0 ;+1 -> Y=03xx
; теперь прочитаем код нажатых клавиш из нового буфера
ld scanFF,Y ;+2
; а вот теперь надо обязательно запомнить регистр статуса МК
in tempS,SREG ;+1 сохранить СТАТУС
in port_C,PINC ;+1 текущее состояние порта C
andi port_C,0xF8 ;+1 обнулить 3 мл. бита
or scanFF,port_C ;+1 добавим 3 бита из буфера клавиш
out PORTC,scanFF ;+1
;= 16 тактов => 2 мксек
; завершили выдачу во второй порт клавиатуры
cbr YH,1<<0 ; Y=02xxh
out SREG,tempS ; восстановить СТАТУС
reti ;+4 возврат
;************************************************* *********


Получилось 2 мксек.
Посмотри, если есть возможность, сколько времени в ОРИОНЕ занимает чтение порта клавиатуры.
Если больше 2 мксек до момента фиксации данных, то может и пройдет.
На спектруме, при тактовой частоте 3.5 Мгц реакция должна быть не более 0.7 мксек.
А у Ориона по моему тактовая = 2 МГц если я не ошибаюсь?

Самая короткая (скоростная) последовательность чтения с клавиатуры для Ориона будет такая:


ld hl,0F400h ; base PPA address
ld a,scancode ; 8 bits
ld (hl),a ; 7 tstates
inc l ; 4 tstates
ld b,(hl) ; 7 tstates
inc l ; 4 tstates
ld c,(hl) ; BC[15..5]=resulting inkey bits


как видим, порядка 10 тактов на реакцию от контроллера, т.е. для частот до 5 Мгц вполне умещаемся.
Причем, это минимальная подпрограмма, большинство прочих написано куда как менее оптимально.

surinm
19.04.2018, 16:48
Посмотрю в своих вариантах, пришлю подходящую.

caro, Добрый день! Удалось ли найти что-нибудь подходящее?

caro
19.04.2018, 18:19
caro, Добрый день! Удалось ли найти что-нибудь подходящее?Вариант для Ориона правлю, версия как раз подходит для твоего случая.

uart
19.04.2018, 21:52
Причем, это минимальная подпрограмма
Не минимальная, читать можно через LDAX, тогда инкремент L не потребуется, минус 4 такта.

Error404
20.04.2018, 12:38
Не минимальная, читать можно через LDAX, тогда инкремент L не потребуется, минус 4 такта.

Верно. Тогда 7 тактов и сокращение гарантированной частоты Ориона до примерно 3,5М (5М турбо с WAIT как раз как на наших платах для корпуса УКНЦ)
Получится что-то такого вида:


ld hl,0F401h ;
ld de,0F402h ;
ld a,scancode ; 8 bits
ld (0F400h),a ; 13 tstates
ld b,(hl) ; 7 tstates
ld a,(de) ; BA[15..5]=resulting inkey bits


К счастью, это достаточно неудобно (хотя и быстро) и на Орионе так никто не писал (обычно там тупые STA/LDA по 13 ? тактов). Так что, думаю всё должно получиться и на бOльших частотах.

andreil
20.04.2018, 12:52
Да как бы всё равно в нашем случае - главное, что больше 1 операции выполняется. Остальное уже "мелочи" :)
Но да - оптимизация никогда не бывает лишней :)

surinm
25.04.2018, 12:24
Если делать только на одном контроллере, без внешних регистров,
то надо: 16 линий данных плюс 8 линий адреса и 2 линии сигналов A8 и /CSKB - всего 26 сигналов.

Вчера повтыкал на разные схемы контроллеров PS/2 для Ориона, Специалиста, спеков, ну и конечно внимательно посмотрел на схему мультиплексоров клавиатуры Корвета. Вопрос - а зачем выводить на контроллер A8 и /CSKB, если нужно всего лишь обеспечить своевременное "замыкание" пар бита адреса и нужного бита ШД? Т.е. достаточно отлавливать сигнал на ША и сразу давать его на ШД. Где я не прав?

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

Т.е. мультиплексор в самом корвете уже есть, он как раз и управляется сигналами A8 и /CSKB. И все 16 линий данных аппаратно идут на клавиатуру - сама клавиатура все-лишь замыкатель, т.е. не содержит логики.

caro
25.04.2018, 14:30
Т.е. достаточно отлавливать сигнал на ША и сразу давать его на ШД. Где я не прав?Ты прав, но для этого контроллер должен иметь такую функцию - чувствительность к изменению состояния на портах ввода/вывода.
Например ATMega8 (dip28) и ATMega16 (dip40) не имеют такую функцию, а программно они не смогут вовремя реагировать на опрос клавиатуры.
Если использовать ATMega48 или ATMega164 можно спокойно заниматься опросом клавиатуры и формированием массива нажатых клавиш,
но как-только произойдет изменение на шине адреса сканирования, произойдет прерывание работы основной программы, и на шине данных
будет выдан код соответствующий нажатой клавише. Поэтому в этом случае можно обойтись и без сигналов A8 и /CSKB.

surinm
25.04.2018, 17:00
Если использовать ATMega48 или ATMega164 можно спокойно заниматься опросом клавиатуры и формированием массива нажатых клавиш
Правильно ли я понимаю, что мне тогда лучше взять за основу 164ю Атмегу - и вешать прерывание на ША смогу, и портов хватит на матрицу 16х8, и А8 с /CSKB тянуть с платы не нужно будет?

caro
25.04.2018, 18:38
Правильно ли я понимаю, что мне тогда лучше взять за основу 164ю Атмегу - и вешать прерывание на ША смогу, и портов хватит на матрицу 16х8, и А8 с /CSKB тянуть с платы не нужно будет?да.

surinm
26.04.2018, 15:21
Еще глубже копнул - у корвета инвертированы ША и ШД для клавиатуры (ШД вообще подтянута резисторами к +5В). В силу этих обстоятельств наиболее подходящей основой для модификации должна быть прошивка для Ямахи КУВТ?
caro, поделишься исходниками к этой прошивки?

caro
26.04.2018, 18:33
caro, поделишься исходниками к этой прошивки?Прошивка для YAMAHA YIS-503 на моем сайте http://caro.su выложена с исходником.

Error404
23.05.2018, 17:23
Да, я это не учел. Тогда может и заработает. Мне это проверить не удастся, за неимением необходимого железа. Попробую обновить прошивку и выложу для тестирования.

Ну как, получается что-то с вариантом для матрицы 7007?

caro
23.05.2018, 18:37
Ну как, получается что-то с вариантом для матрицы 7007?Прошивку под эмуляцию матрицы MC-7007 я написал, проверить только пока сам не могу за неимением Ориона.
Есть еще вопросы касательно раскладки клавиш, но предварительно набросал вариант в соответствии со схемой из журнала Радио.
Завтра выложу этот сырой вариант, если есть желающие подключится к проверке.

Всё таки решил спаять макет контроллера и проверить работу на имитаторе Ориона.

Error404
23.05.2018, 23:07
Прошивку под эмуляцию матрицы MC-7007 я написал, проверить только пока сам не могу за неимением Ориона.
Есть еще вопросы касательно раскладки клавиш, но предварительно набросал вариант в соответствии со схемой из журнала Радио.


Вот такая схема подключения, да?
http://www.danbigras.ru/RK86/KeyBrd/MC7007P1.gif
эта схема самая правильная, в-основном именно она используется в большинстве клонов и ПО.



Завтра выложу этот сырой вариант, если есть желающие подключится к проверке.

Мой экземпляр платы на МС7007 пока не запущен, попросим коллег - они как раз подключили механическую МС7007 (http://zx-pk.ru/threads/27462-sborka-nastrojka-platy-orion-128(uknts)-ps-2(caro)-fdd-ide-z80card2.html?p=964864&viewfull=1#post964864), у них есть и контроллер на АТМеге (та плата позволяет поставить доп. диоды - ставятся у клавиатурной ВВ55 со стороны пайки - и использовать механику одновременно с PS2)

caro
24.05.2018, 05:24
Вот такая схема подключения, да?
http://www.danbigras.ru/RK86/KeyBrd/MC7007P1.gif
эта схема самая правильная, в-основном именно она используется в большинстве клонов и ПО.
Да, предварительную раскладку сделал именно в соответствии с этой схемой.
Я правильно понял, что клавиша [RESET] - 12 контакт разьема MC7007 подключена именно как указано на этой схеме?

Sancho45
24.05.2018, 13:17
Да, предварительную раскладку сделал именно в соответствии с этой схемой.
Я правильно понял, что клавиша [RESET] - 12 контакт разьема MC7007 подключена именно как указано на этой схеме?

Точно так.

Error404
24.05.2018, 15:09
Сообщение от caro
Да, предварительную раскладку сделал именно в соответствии с этой схемой.
Я правильно понял, что клавиша [RESET] - 12 контакт разьема MC7007 подключена именно как указано на этой схеме?


Точно так.

Никогда так не подключал эту кнопку (по сути отдельностоящую), а подключал ее к Reset компа, что с одной стороны небезопасно (можно нажать случайно и сбросить свой же труд), но с другой - дает её очевидную функцию совпадающую с подписью, и остальная матрица кнопок тогда оставалась 11х8. В связи с чем очень интересно - а какая у этой кнопки становится функция если ее подключить так как по схеме? Она перестает быть reset? А чем становится (все другие то уже имеют аналоги на RK-86 на которой кнопок меньше)

Sancho45
24.05.2018, 18:35
Никогда так не подключал эту кнопку (по сути отдельностоящую), а подключал ее к Reset компа, что с одной стороны небезопасно (можно нажать случайно и сбросить свой же труд), но с другой - дает её очевидную функцию совпадающую с подписью, и остальная матрица кнопок тогда оставалась 11х8. В связи с чем очень интересно - а какая у этой кнопки становится функция если ее подключить так как по схеме? Она перестает быть reset? А чем становится (все другие то уже имеют аналоги на RK-86 на которой кнопок меньше)

Если быть точным, то на клавиатуре от УКНЦ, эта клавиша называется СТОП(красного цвета), а сброс рядом (серенькая). Есть варианты, где красная кл.- это сброс, но это уже не УКНЦ

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

Я залил M34zms.bin, с этим РОМом, никаких действий, при нажатии этих клавиш, не происходит

Error404
24.05.2018, 19:24
Если быть точным, то на клавиатуре от УКНЦ, эта клавиша называется СТОП(красного цвета), а сброс рядом (серенькая). Есть варианты, где красная кл.- это сброс, но это уже не УКНЦ

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

Я залил M34zms.bin, с этим РОМом, никаких действий, при нажатии этих клавиш, не происходит

А как проверялось наличие действий по нажатию? Некая программа может реагировать не на все кнопки.
Правильнее всего проверить так: написать программу, которая выводит коды нажатых клавиш и уже тогда понажимать.
Но думаю, ничего полезного красный СТОП на Орионе не делает. А серый сосед что-то делал ЕМНИП, что-то типа СТР.
А Монитор M34zms.bin в принципе выбран верно, думаю.

Sancho45
24.05.2018, 21:10
Да это понятно, коды выдают, это 1Fh для СБРОС и FEh для СТОП. Получается в моем случае кл. СТОП работает как рус/лат. Так и должно быть ???

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

кл. ФИКС так же выдает FEh, т.е. тоже переключает раскладку

surinm
27.05.2018, 19:43
caro, привет! Открыл ветку по корвету (http://zx-pk.ru/threads/29197-kontroller-dlya-podklyucheniya-ps-2-klaviatury.html))) помогай!)))

Error404
02.04.2020, 01:49
Прошивку под эмуляцию матрицы MC-7007 я написал, проверить только пока сам не могу за неимением Ориона.
Есть еще вопросы касательно раскладки клавиш, но предварительно набросал вариант в соответствии со схемой из журнала Радио.
Завтра выложу этот сырой вариант, если есть желающие подключится к проверке.

Всё таки решил спаять макет контроллера и проверить работу на имитаторе Ориона.

Ктстати, прошивка контроллера PS2 для МС7007 таки была выложена (и я этот момент упустил), или нет?

Denn
02.04.2020, 15:32
Я не видел такого. Да и в чём смысл?

Error404
03.04.2020, 02:37
Я не видел такого. Да и в чём смысл?

Исключительно для плат где аппаратная MC7007 и PS/2 подключены одновременно как на УКНЦ-платах Павла Рябцова. Там можно и вариантом PS2-RK выкрутиться, но при переходе с клавы на клаву надо будет переключать тип РОМ-F800, что неудобно.

Pepsi
26.05.2021, 06:43
Добрый. Спецы подскажите, пытаюсь собрать схемку из шапки. Плата есть, но она под TQFP-32 корпус. Раннее с контролерами ATmega48 дел не имел, какой по ссылке можно использовать в схеме? У нас в городе только вот это есть в продаже (https://www.chipdip.ru/catalog/ic-microcontrollers?x.3725=MWaB&gq=ATMega+48).

caro
26.05.2021, 07:27
Добрый. Спецы подскажите, пытаюсь забрать схемку из шапки. Плата есть, но она под TQFP-32 корпус. Раннее с контролерами ATmega48 дел не имел, какой по ссылке можно использовать в схеме? У нас в городе только вот это есть в продаже (https://www.chipdip.ru/catalog/ic-microcontrollers?x.3725=MWaB&gq=ATMega+48).ATmega48-20AU - пойдёт.

Sancho45
26.05.2021, 18:32
Да, предварительную раскладку сделал именно в соответствии с этой схемой.
Я правильно понял, что клавиша [RESET] - 12 контакт разьема MC7007 подключена именно как указано на этой схеме?
А продолжение будет ?

Freiwind
18.11.2021, 09:15
Развел этот переходничок.
На фото прототип.

76456

Тут (https://drive.google.com/file/d/1fweWvE6FwkHkesyPtxnaJm-AYE0OR-ff/view?usp=sharing) причесанный проект и герберы.

otrazhenie
09.03.2022, 16:34
Доброго дня. У меня вопрос. на схеме из шапки. Прошивка orkb_021.hex. Разъем который идет на ВВ55. КА00 куда? на порт А или В? по логике вещей это порт А, тогда KD00 куда?
Я собрал по этой схеме контроллер на макетке. На порту А ВВ55 вижу сканкоды. Контроллер отдает что-то при нажатии кнопки в прот В. но на экране тишина. Ресет работает.
Уже и не знаю что думать....прошу помощи!

Denn
09.03.2022, 19:14
КА00 куда? на порт А или В? по логике вещей это порт А, тогда KD00 куда?

Видимо, "А" - адрес, "D" - данные :)
А вообще нумерация контактов соответствует орионовской, так что можно не задумываться что куда.

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


Контроллер отдает что-то при нажатии кнопки в прот В.

Что именно отдаёт?

Курсор мигает на экране?

otrazhenie
10.03.2022, 07:34
заработало.
не были распаяны 23,24,25 выводы контроллера.

AlexBel
18.09.2023, 06:29
Можно в прошивке увеличить длительность сброса до 1 секунды или удерживать его, пока нажата кнопка сброса?

caro
18.09.2023, 08:29
Можно в прошивке увеличить длительность сброса до 1 секунды или удерживать его, пока нажата кнопка сброса?Правильно ли я понял, что длительность сигнала RESET = 0.5 сек, которая сейчас заложена в текущей прошивке вас не устраивает?
Установить нужную длительность сигнала RESET можно поправив бинарник прошивки:
Найдите в бинарнике последовательность 32 E3 03 D0.
Код 32 в HEX формате соответствует 50 в десятичном формате.
Этот код задает длительность RESET с дискретностью 10 мсек.
50*10 = 500 мсек.
Исправьте этот код на нужную величину, в вашем случае на 64 и получите длительность 1 сек.

AlexBel
18.09.2023, 12:45
Правильно ли я понял, что длительность сигнала RESET = 0.5 сек, которая сейчас заложена в текущей прошивке вас не устраивает?
Установить нужную длительность сигнала RESET можно поправив бинарник прошивки:
Найдите в бинарнике последовательность 32 E3 03 D0.
Код 32 в HEX формате соответствует 50 в десятичном формате.
Этот код задает длительность RESET с дискретностью 10 мсек.
50*10 = 500 мсек.
Исправьте этот код на нужную величину, в вашем случае на 64 и получите длительность 1 сек.

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