Просмотр полной версии : Орион-128: Контроллер PS/2-клавиатуры
Коллеги, привет! Есть необходимость адаптировать контроллер для Корвета ПК8020. У него матрица 8х16. Скажите, с чего правильнее начать?
Первое с чем столкнулся - нехватка выходов. Есть Atmega 8 - на ней по идее должно хватить выводов.
Схема клавиатуры корвета. (https://yadi.sk/i/I8L2siRb3UTCs4)
Скажите, с чего правильнее начать?
С выбора ветки.
http://zx-pk.ru/forums/65-korvet.html
http://zx-pk.ru/forums/60-pk8000.html
Коллеги, привет! Есть необходимость адаптировать контроллер для Корвета ПК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
Камиль, рады вас видеть в наших палестинах!
Получилось ли что-то по теме разработки варианта прошивки для схемы из данной темы, когда матрица 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 клавиш клавиатуры УКНЦ
здесь имеется в виду не контроллер внутри клавиатуры PS2, а контроллер на AtMega48.
В котором сейчас матрица 8х8 и 3 отдельных кнопки по 3 линиям:
а хочется полноценную матрицу 8х11. Вот тогда туда можно будет закодировать и 88 клавиш клавиатуры УКНЦ
Есть вариант контроллера на ATMega48 для YAMAHA YIS503, там матрица как раз 8*11.
Есть правда условие, что сканирование идет бегущим нулем по 11 адресным линиям.
Если сканирование клавиатуры УКНЦ идет таким же способом, то прошивку можно
адаптировать довольно просто, переписав таблицу привязки клавиш.
В этом случае ATMEGA8 не подойдет.
А ATmega 16? Там 40 ног, и полные 24 вывода.
А 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 бита "шире"
caro, какую прошивку лучше взять за исходную для модификации под 16ю атмегу?
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).
Посмотрел все схемы и прошивку и пришел к не утешительному выводу, что текущая схема на 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 такта Меги) позже, но не факт что это станет заметно Ориону - попробовать надо!
;================================================= =========
; На линиях 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 МГц если я не ошибаюсь?
А у Ориона по моему тактовая = 2 МГц если я не ошибаюсь?
Здесь принцип другой.
В Спеке данные сразу же и читаются, 1 командой процессора.
А в Орионе и подобных - много команд, поскольку всё идёт через ВВ55. А это как минимум 2 команды (3 для расширенного, больше чем 8х8): запись сканкода в порт А и чтение результата из портов B/C.
Здесь принцип другой.
В Спеке данные сразу же и читаются, 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 Мгц вполне умещаемся.
Причем, это минимальная подпрограмма, большинство прочих написано куда как менее оптимально.
Посмотрю в своих вариантах, пришлю подходящую.
caro, Добрый день! Удалось ли найти что-нибудь подходящее?
caro, Добрый день! Удалось ли найти что-нибудь подходящее?Вариант для Ориона правлю, версия как раз подходит для твоего случая.
Причем, это минимальная подпрограмма
Не минимальная, читать можно через 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льших частотах.
Да как бы всё равно в нашем случае - главное, что больше 1 операции выполняется. Остальное уже "мелочи" :)
Но да - оптимизация никогда не бывает лишней :)
Если делать только на одном контроллере, без внешних регистров,
то надо: 16 линий данных плюс 8 линий адреса и 2 линии сигналов A8 и /CSKB - всего 26 сигналов.
Вчера повтыкал на разные схемы контроллеров PS/2 для Ориона, Специалиста, спеков, ну и конечно внимательно посмотрел на схему мультиплексоров клавиатуры Корвета. Вопрос - а зачем выводить на контроллер A8 и /CSKB, если нужно всего лишь обеспечить своевременное "замыкание" пар бита адреса и нужного бита ШД? Т.е. достаточно отлавливать сигнал на ША и сразу давать его на ШД. Где я не прав?
- - - Добавлено - - -
Т.е. мультиплексор в самом корвете уже есть, он как раз и управляется сигналами A8 и /CSKB. И все 16 линий данных аппаратно идут на клавиатуру - сама клавиатура все-лишь замыкатель, т.е. не содержит логики.
Т.е. достаточно отлавливать сигнал на ША и сразу давать его на ШД. Где я не прав?Ты прав, но для этого контроллер должен иметь такую функцию - чувствительность к изменению состояния на портах ввода/вывода.
Например ATMega8 (dip28) и ATMega16 (dip40) не имеют такую функцию, а программно они не смогут вовремя реагировать на опрос клавиатуры.
Если использовать ATMega48 или ATMega164 можно спокойно заниматься опросом клавиатуры и формированием массива нажатых клавиш,
но как-только произойдет изменение на шине адреса сканирования, произойдет прерывание работы основной программы, и на шине данных
будет выдан код соответствующий нажатой клавише. Поэтому в этом случае можно обойтись и без сигналов A8 и /CSKB.
Если использовать ATMega48 или ATMega164 можно спокойно заниматься опросом клавиатуры и формированием массива нажатых клавиш
Правильно ли я понимаю, что мне тогда лучше взять за основу 164ю Атмегу - и вешать прерывание на ША смогу, и портов хватит на матрицу 16х8, и А8 с /CSKB тянуть с платы не нужно будет?
Правильно ли я понимаю, что мне тогда лучше взять за основу 164ю Атмегу - и вешать прерывание на ША смогу, и портов хватит на матрицу 16х8, и А8 с /CSKB тянуть с платы не нужно будет?да.
Еще глубже копнул - у корвета инвертированы ША и ШД для клавиатуры (ШД вообще подтянута резисторами к +5В). В силу этих обстоятельств наиболее подходящей основой для модификации должна быть прошивка для Ямахи КУВТ?
caro, поделишься исходниками к этой прошивки?
caro, поделишься исходниками к этой прошивки?Прошивка для YAMAHA YIS-503 на моем сайте http://caro.su выложена с исходником.
Error404
23.05.2018, 17:23
Да, я это не учел. Тогда может и заработает. Мне это проверить не удастся, за неимением необходимого железа. Попробую обновить прошивку и выложу для тестирования.
Ну как, получается что-то с вариантом для матрицы 7007?
Ну как, получается что-то с вариантом для матрицы 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)
Вот такая схема подключения, да?
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, т.е. тоже переключает раскладку
caro, привет! Открыл ветку по корвету (http://zx-pk.ru/threads/29197-kontroller-dlya-podklyucheniya-ps-2-klaviatury.html))) помогай!)))
Error404
02.04.2020, 01:49
Прошивку под эмуляцию матрицы MC-7007 я написал, проверить только пока сам не могу за неимением Ориона.
Есть еще вопросы касательно раскладки клавиш, но предварительно набросал вариант в соответствии со схемой из журнала Радио.
Завтра выложу этот сырой вариант, если есть желающие подключится к проверке.
Всё таки решил спаять макет контроллера и проверить работу на имитаторе Ориона.
Ктстати, прошивка контроллера PS2 для МС7007 таки была выложена (и я этот момент упустил), или нет?
Я не видел такого. Да и в чём смысл?
Error404
03.04.2020, 02:37
Я не видел такого. Да и в чём смысл?
Исключительно для плат где аппаратная MC7007 и PS/2 подключены одновременно как на УКНЦ-платах Павла Рябцова. Там можно и вариантом PS2-RK выкрутиться, но при переходе с клавы на клаву надо будет переключать тип РОМ-F800, что неудобно.
Добрый. Спецы подскажите, пытаюсь собрать схемку из шапки. Плата есть, но она под TQFP-32 корпус. Раннее с контролерами ATmega48 дел не имел, какой по ссылке можно использовать в схеме? У нас в городе только вот это есть в продаже (https://www.chipdip.ru/catalog/ic-microcontrollers?x.3725=MWaB&gq=ATMega+48).
Добрый. Спецы подскажите, пытаюсь забрать схемку из шапки. Плата есть, но она под 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 вижу сканкоды. Контроллер отдает что-то при нажатии кнопки в прот В. но на экране тишина. Ресет работает.
Уже и не знаю что думать....прошу помощи!
КА00 куда? на порт А или В? по логике вещей это порт А, тогда KD00 куда?
Видимо, "А" - адрес, "D" - данные :)
А вообще нумерация контактов соответствует орионовской, так что можно не задумываться что куда.
- - - Добавлено - - -
Контроллер отдает что-то при нажатии кнопки в прот В.
Что именно отдаёт?
Курсор мигает на экране?
otrazhenie
10.03.2022, 07:34
заработало.
не были распаяны 23,24,25 выводы контроллера.
Можно в прошивке увеличить длительность сброса до 1 секунды или удерживать его, пока нажата кнопка сброса?
Можно в прошивке увеличить длительность сброса до 1 секунды или удерживать его, пока нажата кнопка сброса?Правильно ли я понял, что длительность сигнала RESET = 0.5 сек, которая сейчас заложена в текущей прошивке вас не устраивает?
Установить нужную длительность сигнала RESET можно поправив бинарник прошивки:
Найдите в бинарнике последовательность 32 E3 03 D0.
Код 32 в HEX формате соответствует 50 в десятичном формате.
Этот код задает длительность RESET с дискретностью 10 мсек.
50*10 = 500 мсек.
Исправьте этот код на нужную величину, в вашем случае на 64 и получите длительность 1 сек.
Правильно ли я понял, что длительность сигнала RESET = 0.5 сек, которая сейчас заложена в текущей прошивке вас не устраивает?
Установить нужную длительность сигнала RESET можно поправив бинарник прошивки:
Найдите в бинарнике последовательность 32 E3 03 D0.
Код 32 в HEX формате соответствует 50 в десятичном формате.
Этот код задает длительность RESET с дискретностью 10 мсек.
50*10 = 500 мсек.
Исправьте этот код на нужную величину, в вашем случае на 64 и получите длительность 1 сек.
Да, бывают ситуации (причину, пока что, не выяснил), когда компьютер зависает и нажатие "Принтскрин" не помогает, ни одиночное, ни многократное. Когда принудительно замыкаю "Сброс" на время порядка одной секунды, компьютер гарантированно сбрасывается. Не знаю, может, конденсатор в цепи сброса не успевает разрядиться через контроллер, хотя все номиналы по схеме. Вообще, думаю по сбросу с контроллера клавиатуры добавить транзисторный ключ или ограничительный резистор, не очень нравится практика разряда конденсатора через порт контроллера. Байтики в прошивке поправлю, спасибо! Кажется, я уже поднимал эту тему, не для "Ориона", но информация, увы, за давностью, потерялась...
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot