PDA

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



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

caro
16.01.2009, 09:14
Готова Beta-версия прошивки контроллера клавиатуры http://zx.pk.ru/attachment.php?attachmentid=9550&d=1226475491для работы
в составе отечественных компьютеров имеющих РК-86 совместимую
матрицу клавиатуры (8*8 + 3 отдельных кнопки).

Тема помещена в раздел Орион поскольку тестирование прошивки производилось именно на реальном Орион-128.

Раскладка клавиатуры предварительная и не все клавиши IBM-клавиатуры еще задействованы.
Надеюсь пользователи реальных компов РК86, Вектор, Орион сами смогут модифицировать
раскладку клавиш, по имеющейся в архиве инструкции и выложат здесь свои варианты для применения и обсуждения.
В архиве orkb_01dr.zip схема, прошивка и инструкции для владельцев Ориона, РК86 (расширенные клавиши стандарта CP/M - Wordstar/TurboPascal)
В архиве pk8k_01a.zip пробная версия прошивки для ПК8000.

Также, файл: orkb_021.zip (http://zx-pk.ru/threads/9294-orion-128-kontroller-ps-2-klaviatury.html?p=880425&viewfull=1#post880425) - версия прошивки для DSDOS (расширенные клавиши стандарта DSDOS)

BYTEMAN
16.01.2009, 09:59
СУПЕР! Я надеюсь, что этот девайс завоюет популярность среди РК-шников.

caro
16.01.2009, 13:07
Обнаружилась ошибка в прошивке (очередное спасибо Error404).
В первом посте обновил архив.

Sayman
16.01.2009, 15:00
смотрел я как то на отечественные клавы для 8биток и забугорные...понравилась внешне клава от СамКопа и от Форума. у форума почти как пцшная клава. у мну была такая когда то..форум64к был у мну самый первый спек...кассетный)))
даже цыфровые кнопки есть на той клаве...тока малость жоская она по ощущениям...а сам коп вылетый амига)))) тока меньше..выгдлядит крута и по фирменному!

Ewgeny7
16.01.2009, 15:11
Здорово! И как вовремя! :)

Error404
16.01.2009, 15:48
Обнаружилась ошибка в прошивке (очередное спасибо Error404).
В первом посте обновил архив.

Последняя прошивка версии 01d работает как надо (меня пока все устраивает). Не говорю "идеально" чтобы не сглазить. :v2_biggr:

Камиль, еще раз спасибо! :v2_cheer:

На моей страничке в разделе "Картинки" краткий фотоотчет о проделанном. :)
Кстати, вот может кому-то понадобится, кто будет к реальному Ориону подключать:



Соотвествие контактов разъема X3 схемы адаптера PS/2 клавиатуры
контактам разъема Х4 (ППА клавиатуры) Ориона-128.


Х3.1 = X4.C10
Х3.2 = X4.C10 (рекомендую вывести на С9, который включить параллельно С10)
Х3.3 = X4.B1
Х3.4 = X4.B2
Х3.5 = X4.B3
Х3.6 = X4.B4
Х3.7 = X4.B5
Х3.8 = X4.B6
Х3.9 = X4.B7
Х3.10 = X4.B8
Х3.11 = X4.A1
Х3.12 = X4.A4
Х3.13 = X4.A3
Х3.14 = X4.A4
Х3.15 = X4.A10
Х3.16 = X4.A10 (рекомендую вывести на A9, который включить параллельно A10)
Х3.17 = X4.A5
Х3.18 = X4.A6
Х3.19 = X4.A7
Х3.20 = X4.A8
Х3.21 = X4.B9
Х3.22 = X4.C7
Х3.23 = X4.C8
Х3.24 = X4.C6

Нумерация разъема Х4 приводится в соответствии с принципиальной схемой Ориона-128, опубликованной в журнале Радио N1 за 1990г.

Ewgeny7
16.01.2009, 20:48
Спасибо! Не зря я оставил свободное место на макетке Нью-Ориона, надо сразу туда Мегу48 прописать! :)

caro
17.01.2009, 17:13
В первом посте темы выложил тестовую версию прошивки контроллера
для работы в составе ПК8000.
К сожалению прошивка пока проверялась только автономно, не на реале.
Надеюсь владельцы реального компа смогут ее проверить и написать свои впечатления и пожелания.
Подключать так:
Соответствие контактов разъема X3 схемы адаптера PS/2 клавиатуры
контактам разъема Х1 платы клавиатуры ПК8000

Х3.1 = X1:1 +5V
Х3.2 = X1:1 +5V
Х3.3 = X1:8 KD00
Х3.4 = X1:7 KD01
Х3.5 = X1:9 KD02
Х3.6 = X1:12 KD03
Х3.7 = X1:11 KD04
Х3.8 = X1:13 KD05
Х3.9 = X1:10 KD06
Х3.10 = X1:14 KD07
Х3.11 = X1:4 KA00
Х3.12 = X1:5 KA01
Х3.13 = X1:3 KA02
Х3.14 = X1:2 KA03
Х3.15 = X1:6 GND
Х3.16 = X1:6 GND

Нумерация разъема Х1 приводится в соответствии с принципиальной схемой
платы клавиатуры, которую в форуме выкладывал Mick

Error404
23.01.2009, 12:46
Прошивка контроллера клавиатуры позволяет работать по двум таблицам клавиш. Это задумано для удобства работы как с PC-раскладкой QWERTY, так и с ЙЦУКЕН-раскладкой при наборе русских сиволов (т.к. на матрице РК-86 расположение букв русского и латинского регистров отличается от того, как это сделано на РС). Т.е. чтобы достичь как для латинских (что уже есть по дефолту), так и для русских букв эффекта "на экране печатается то же, что и нажато/нарисовано на клавиатуре".

Я отредактировал вторую таблицу (работает когда включен ScrollLock), чтобы она соответствовала ЙЦУКЕН в понятии ПО Ориона. Поправленные файлы во вложении. Подключение новой таблицы клавиш к коду прошивки описано в файле orion_kb.txt в архиве в загравном посте.

caro
23.01.2009, 13:35
Я отредактировал вторую таблицу (работает когда включен ScrollLock), чтобы она соответствовала ЙЦУКЕН в понятии ПО Ориона.Молодец, отлично.
Для владельцев ПК8000 - тоже самое надо будет сделать с таблицей раскладки клавиш для ПК8000.

Error404
10.02.2009, 13:42
Пионерский вопрос. :)
Чтобы одновременно пользовать контроллер ps/2 и механическую (матричную) клавиатуру что нужно сделать? Развязать на диодах по "ИЛИ"?

caro
10.02.2009, 15:04
Чтобы одновременно пользовать контроллер ps/2 и механическую (матричную) клавиатуру что нужно сделать? Развязать на диодах по "ИЛИ"?Да.

sergey2b
23.08.2009, 01:50
Подскажите пожалуйста можно ли в контролери использовать atmega8 ?

caro
23.08.2009, 18:09
Подскажите пожалуйста можно ли в контроллере использовать atmega8 ?Нет.
В ATMega8 не реализована функция прерывания по изменению состояний входных линий портов МК,
которая используется в контроллере для отслеживания сканирования адресных линий матрицы клавиатуры.

sergey2b
23.08.2009, 22:24
В ATMega8 не реализована функция прерывания по изменению состояний входных линий портов МК, которая используется в контроллере для отслеживания сканирования адресных линий матрицы клавиатуры.

скажите пожалуйста можноли использовать ATMega16 или ATMega32 или какую либо другую
у нас доступны только модификации ATMega старше ATMega8

caro
24.08.2009, 07:08
скажите пожалуйста можноли использовать ATMega16 или ATMega32Не подходят по той же причине, что и ATMega8

или какую либо другую
у нас доступны только модификации ATMega старше ATMega8Подходит без переделки прошивки ATMega88.
Для ATMega168 и ATMega328 прошивку надо перекомпилировать.
Есть более старшие модели, в которых реализована функция прерывания по изменению состояния портов,
но в этом случае надо будет адаптировать прошивку под конкретный МК.

PS. Зайдите на efind.ru, предложений по нужным МК достаточно много.

sergey2b
03.09.2009, 13:57
>PS. Зайдите на efind.ru, предложений по нужным МК достаточно много.
я временно живу в африке здесь с atmega туго, выбора нет atmega8/16/32 заказывал в UK

нашел схему на pic16F84 пытаюсь сейчас с ней разобраться, pic что удивительно у нас есть

sergey2b
04.09.2009, 08:39
У PIC16F84 не достаточно портов ввода/вывода (18 ног в корпусе).

в моем случаи достаточно. Я делаю свой контролер с PC клавиатурой

sergey2b
04.09.2009, 13:27
я дулаю терминал, к которому подключина клавиатура и rs232

за основу я думал взять вашу схему и прошивку. Изменение прошивки меня не смущает. Так как я не нашел atmega48 решил сделать pic16F84 обслуживает клавиатуру и передает скан коды в atmega8 которая делает все остальное. Пока не могу придумать как связать pic and atmega (это мой первый проект на микроконтролерах)

sergey2b
04.09.2009, 13:51
как я понял вас
ATMega8 не имеет прерываний по изменению какого либо порта и это причина почему надо использовать atmega48, если я не прав поправте меня пожалуйста. Для меня это критично тогда мне не надо использовать pic все будет на atmega

caro
04.09.2009, 14:16
как я понял вас
ATMega8 не имеет прерываний по изменению какого либо порта и это причина почему надо использовать atmega48, если я не прав поправте меня пожалуйста. Для меня это критично тогда мне не надо использовать pic все будет на atmegaВ Вашем случае не требуется опрос контроллера через 8-ми битный порт,
как это нужно в контроллере для того же Ориона.
Поэтому и такая функция не требуется.
Я же написал выше, подключаете к ATmega8 PS/2 клавиатуру, для чего достаточно 2-х выводов.
Для реализации RS232 нужно от 2-х до 6-ти выводов.
Всё, больше в Вашем случае ничего не надо, если иметь ввиду простой терминальный режим:
прием скан-кода символа от PS/2 клавиатуры и трансляция его кода в RS232.

PS. Предлагаю перейти в личку, а то это уже не касается темы данной ветки.

Gryphon
13.03.2010, 15:29
Сделал сегодня этот контроллер клавы в Орион. Все вроде нормально работает, тока вот не хочет от питания компа работать. Да и отдельно с АТшным БП не работает (МК не стартует, иногда бывает мигают все три лампочки на клаве). Тока через телефонный зарядник работает. Замерял напряжение-вроде тоже самое, с другим АТ БП тоже самое. Единственное, что я не сделал по схеме-не припаял AVCC и AREF (они вроде как отвечают за АЦП). Или их обязательно соединять? Наверное, придется использовать мегу48L....

caro
13.03.2010, 15:37
Сделал сегодня этот контроллер клавы в Орион. Все вроде нормально работает, тока вот не хочет от питания компа работать. Да и отдельно с АТшным БП не работает (МК не стартует, иногда бывает мигают все три лампочки на клаве). Тока через телефонный зарядник работает. Замерял напряжение-вроде тоже самое, с другим АТ БП тоже самое.Странно. Проверь установку FUSES. Можно попробовать включить схему контроля питания BOD.
И еще вариант - попробуй включить с другой клавиатурой.


Единственное, что я не сделал по схеме-не припаял AVCC и AREF (они вроде как отвечают за АЦП). Или их обязательно соединять?Не обязательно, поскольку АЦП отключен.


Наверное, придется использовать мегу48L....Ни какой разницы.

Gryphon
13.03.2010, 15:40
Ни какой разницы.
Ну, она же вроде как работает с пониженным питанием. А вообще, я завтра попробую другую мегу прошить, может глюк в этой. А так, контроллер просто супер! Работает нормально, все вводиться хорошо, без глюков.

caro
13.03.2010, 15:48
Кстати об индикаторах клавиатуры:
При включении питания на клавиатуре зажигаются все три индикатора, затем они гаснут.
Это работает внутренний тест контроллера, встроенного в клавиатуру.
Затем зажигается индикатор Num Lock, который гаснет через 0.5 сек.
Это работает процедура инициализации контроллера - тесть Меги.

Gryphon
13.03.2010, 15:51
Да, я это заметил, но когда индикаторы то зажигаются, то гаснут и так до бесконечности, это наводит на мысли...

caro
13.03.2010, 15:55
Ну, она же вроде как работает с пониженным питанием.У тебя же питание +5V я надеюсь?

А вообще, я завтра попробую другую мегу прошить, может глюк в этой.Маловероятно это.

---------- Post added at 17:55 ---------- Previous post was at 17:53 ----------


Да, я это заметил, но когда индикаторы то зажигаются, то гаснут и так до бесконечности, это наводит на мысли...На вывод /RES Меги повесь конденсатор на 0.1 мкф.

PS. Я надеюсь вывод 1 (/RES/PRG) Меги не соединен с сигналом /RES, который идет на сброс компьютера?

Gryphon
14.03.2010, 03:42
PS. Я надеюсь вывод 1 (/RES/PRG) Меги не соединен с сигналом /RES, который идет на сброс компьютера?
Не, все нормально. Да я почти сразу вчера его запустил-что-то я не подумал про аппаратный детектор недопустимого уровня. Отключил и теперь все ОК!

Павел Рябцов
14.03.2010, 08:24
caro, Камиль,я к тебе с просьбой,ты случаем не сможешь переделать контроллер на Специалист?

caro
14.03.2010, 15:24
переделать контроллер на Специалист?Я уже пробовал это сделать, но там есть сложности связанные с хитрым опросом матрицы, то по строкам, то по столбцам.
В принципе сделать всё таки можно. Я еще раз гляну.

fifan
20.03.2010, 16:43
Как успехи по контроллеру на Специалист? Продвижения есть?

caro
20.03.2010, 17:49
Как успехи по контроллеру на Специалист? Продвижения есть?Нет, пока не занимался. Как будут подвижки, сообщу.

Gryphon
08.05.2010, 00:38
caro, я что забыл спросить: какие соответствие системных клавиш на PS2 клавиатуре, там УС, СС и проч. В архиве вроде такого нет.

caro
08.05.2010, 18:31
...какие соответствие системных клавиш на PS2 клавиатуре, там УС, СС и проч.На этот вопрос наверное лучше ответит Error404.
У меня нет реального Ориона.

Error404
08.05.2010, 19:11
Ctrl, shift, caps

Gryphon
09.05.2010, 11:41
Error404, а по-точнее? Нужно соответствие всех клавиш(исключая символы и цифры).

Error404
09.05.2010, 19:31
:) Ну, сейчас все брошу, пойду соответствие протоколировать.
В архиве в исходниках есть таблица и описание.

Gryphon
10.05.2010, 04:14
Пардон, нашел в исходнике TABKBD_O.asm :v2_blush:

Gryphon
10.06.2010, 06:14
Подскажите, пожалуйста, соответствие клавиш УС ПС СС. Я их не нашел в исходниках.

caro
10.06.2010, 07:04
Подскажите, пожалуйста, соответствие клавиш УС ПС СС. Я их не нашел в исходниках.Клавиши УС и СС не входят в матрицу клавиатуры, поэтому их и нет в исходнике раскладки.
Они жестко привязаны к клавишам Ctrl и Shift соответственно.
Клавиша ПС находится на пересечении линий A1 и D1 матрицы и обозначена в исходнике как Kl_LF.
К сожалению я не знаю назначения этой клавиши, которая судя по всему должна выдавать код 10 (Перевод Строки),
поэтому не стал ее привязывать ни к одной из клавиш IBM-ской клавиатуры.
Можете сами это сделать, если у вас есть какие-то мысли на этот счет.

АлександрПП
05.10.2011, 10:36
Есть ли разница между Mega48PA-PU и Mega48-PU?

caro
05.10.2011, 11:12
Есть ли разница между Mega48PA-PU и Mega48-PU?Если говорить о применимости этих модификаций МК для контроллера клавиатуры, то разницы нет.

palsw
05.10.2011, 14:22
Если говорить о применимости этих модификаций МК для контроллера клавиатуры, то разницы нет.

Подскажите чем же они отличаются ?в прайсе у них разные цены.

PS:Я заказал ATmega168-20PU DIP28 -единственная которая была в наличии :)

caro
05.10.2011, 14:47
Подскажите чем же они отличаются ?в прайсе у них разные цены.Имеется 5 модификаций этих контроллеров:
ATMega48
ATmega48V
ATMega48A
ATmega48P
ATmega48PA
Буква V - пониженное напряжение питания;
Буква A - микросхема имеет расширенный диапазон питания от 1.8 до 5.5 Вольт;
Буква P - PicoPower - пониженное потребление;
Цены могут зависить не только от типа МК, но и от цен при поставке от производителя.


PS:Я заказал ATmega168-20PU DIP28 -единственная которая была в наличии :)Пойдет. Только прошивку нужно будет перекомпилировать.
Кому надо, скажите, сделаю версию прошивки для ATMega168/328

RUSSIABEAR
05.10.2011, 15:47
Мне надо, я еще давно купил ATmega168-20PU DIP28 .(48й не было)

palsw
05.10.2011, 15:53
Пойдет. Только прошивку нужно будет перекомпилировать.
Кому надо, скажите, сделаю версию прошивки для ATMega168/328


и мне нужно :)

caro
05.10.2011, 16:30
Мне надо, я еще давно купил ATmega168-20PU DIP28 .(48й не было)Вот вариант прошивки для ATMega168 или ATMega328:

Error404
24.11.2011, 15:10
Вот вариант прошивки для ATMega168 или ATMega328:

Подскажите пожалуйста, если сравнивать варианты с ATMega168/ATMega328 и ATMega48 - какой из них более быстродействующий (какой более подойдет для "разогнанного" компутера)?
Или одинаково?

caro
24.11.2011, 15:13
Подскажите пожалуйста, если сравнивать варианты с ATMega168/ATMega328 и ATMega48 - какой из них более быстродействующий (какой более подойдет для "разогнанного" компутера)?
Или одинаково?Все они по Datasheet имеют одинаковую максимальную частоту 20 MHz.
Так что всё равно.

Error404
24.11.2011, 16:02
Все они по Datasheet имеют одинаковую максимальную частоту 20 MHz.
Так что всё равно.

Но ведь у нас они работают без кварца, т.е. от встроенного тактового источника? 8МГц ЕМНИП? Он одинаковый у всех или отличается? Или для ATMega168/ATMega328 в схему добавляется кварц?

caro
24.11.2011, 20:41
Но ведь у нас они работают без кварца, т.е. от встроенного тактового источника? 8МГц ЕМНИП? Он одинаковый у всех или отличается? Или для ATMega168/ATMega328 в схему добавляется кварц?Я имел ввиду, что по быстродействию они не отличаются.
Встроенный генератор у них у всех на 8 МГц.

zx-kit
03.02.2012, 17:15
На базе разработки caro из данного топика скомплектованы конструкторы для самостоятельной пайки KEYB&SINC-2 для Орион и Радио-86РК (http://zx.pk.ru/showthread.php?t=14757).

vinxru
18.03.2012, 23:03
Попробую завтра сделать на ATMega8.

У ATMega8 есть 2 ноги (INT0, INT1), изменение напряжения на которых генерирует прерывание. Я подам на ножку INT0 сигнал с 36-ой ноги ВВ55 (это WR). Туда приходит сигнал, когда программа выбирает ряд для сканирования клавиатуры.

P.S. Это проще, чем найти нужный микроконтроллер мне.

caro
19.03.2012, 06:20
Попробую завтра сделать на ATMega8.

У ATMega8 есть 2 ноги (INT0, INT1), изменение напряжения на которых генерирует прерывание. Я подам на ножку INT0 сигнал с 36-ой ноги ВВ55 (это WR). Туда приходит сигнал, когда программа выбирает ряд для сканирования клавиатуры.Желательно добавить к WR/ сигнал CS/ (ножка 6 ВВ55),
иначе придется отрабатывать все сигналы записи и в память и во все порты ввода/вывода.
Для этого нужен один элемент ИЛИ, например из КР1533ЛЛ1.
А еще лучше сформировать сигнал записи в порт B PPI (A0=1, A1=0, WR/=0, CS/=0),
поскольку адрес сканирования изменяется именно после записи в этот порт.


P.S. Это проще, чем найти нужный микроконтроллер мне.Прошивку надо будет адаптировать под этот вариант схемы.

vinxru
19.03.2012, 11:07
Тут четыре варианта.

1) Это делаешь ты :)

2) Ты даешь исходники, и я первый раз в жизни сажусь на AVR ассемблер.

3) Ты не даешь исходники, и я дизассемблирую их. Но это маловероятно

4) Я пишу на си вот такую программу



// Рассчитанный заранее ответ на все 256 комбинаций входного регистра
unsigned char matrix[256];

// При получении сигнала WR сразу же меняем данные на выходе.
interrupt [INT_EXT0] onWrChanged() {
PIND = matrix[(unsigned char)PORTB);
}

// Нажатые клавиши PS/2 клавиатуры
const int pressedMax = 8;
int pressedCnt = 0;
unsigned char pressed[pressedMax]; // Расширенные коды не учитываем. итого 255 возможных сканкодов.

// Пиемник PS/2. Выполяется в основном коде, что бы прерывание могло максимально быстро отработать.
void ps() {
// Контроллируем на входе PS2 CLOCK изменение сигнала. Собираем принятые биты в пакет,
// проверяем где начинается пакет и заполняем/очищаем массив pressed[]
}

unsigned char decodeR[256]; // Таблица соответствия, если горит индикатор РУС.
unsigned char decodeE[256]; // Таблица соответствия, если не горит индикатор РУС.

void mainLoop() {
while(1) {
// Выбранная таблица.
unsigned char* decode = (PINC&4) ? decodeR : decodeE;
// Рассчитываем ответ для 256 комбинаций входного регистра
for(int i=0; i<256; i++) {
unsigned char d=0;
for(int j=0; j<pressedCnt; j++) {
char x = decode[pressed[j]]; // В битах 0..2 зашифрован ряд, в 3..5 столбец.
if(i & (1<<(x&7)) d |= 1<<((x>>3)&7);
ps(); // Обрабатываем PS/2
}
matrix[i] = d;
// Обновляем выход даже без сигнала WR
if(POTRB==i) PINB = d;
}
// Рассчитываем клавиши СС, УС, РУС и СБРОС
unsigned char d=0;
for(int j=0; j<pressedCnt; j++) {
char x = decode[pressed[j]]; // В битах 6..7 зашифрованы эти кнопки
d |= 1<<(x>>6);
ps(); // Обрабатываем PS/2
}
PINC = d;
}
}

// Еще надо поджечь на клавиатуре светодиод в соответствии RUS/LAT


Итого за 1-2 часа справлюсь.

caro
19.03.2012, 11:21
Тут четыре варианта.

1) Это делаешь ты :)Да не проблема.

2) Ты даешь исходники, и я первый раз в жизни сажусь на AVR ассемблер.
3) Ты не даешь исходники, и я дизассемблирую их. Но это маловероятноВремени потратишь значительно больше, чем по 4-му варианту.


4) Я пишу на си вот такую программу
.......
Итого за 1-2 часа справлюсь.Здорово, мне пожалуй исправить схему и доработать прошивку за такое время не удастся.
Попробуй, может у тебя действительно быстрее получится :)

PS. Сигналом /RES на выходе контролллера клавиатуры придется пожертвовать, иначе не хватит ножек у МК.

vinxru
19.03.2012, 12:02
PS. Сигналом /RES на выходе контролллера клавиатуры придется пожертвовать, иначе не хватит ножек у МК.

D2 - Вход WR.
D0-D1,C0,D3-D7 - Выход данных на клавиатуру.
B0-B7 - Вход данных с клавиатуры.
С1 - Вход светодиода РУС/ЛАТ.
С2,С3,С4 - кнопки клавиатуры РУС, СС, УС.
С5 - Сброс.

Еще две ноги под порт PS/2 не хватает.

Подумаю, как регистр/мультиплексор прицепить.

caro
19.03.2012, 12:18
D2 - Вход WR.Еще раз говорю, чистый WR не рекомендую, а то на каждую операцию записи придется отвечать.


D0-D1,C0,D3-D7 - Выход данных на клавиатуру.На выход лучше порт B, данные можно выдать одной командой.


B0-B7 - Вход данных с клавиатуры.Вход адреса сканирования лучше с порта D, и с одной из линий порта C.

С1 - Вход светодиода РУС/ЛАТ.Не обязательно, поскольку можно задействовать один из индикаторов клавиатуры, например Scroll Lock.


С2,С3,С4 - кнопки клавиатуры РУС, СС, УС.
С5 - Сброс.
Еще две ноги под порт PS/2 не хватает.Или одной ноги.


Подумаю, как регистр/мультиплексор прицепить.Можно мультиплексировать адреса и данные, тогда всё влезет, да еще останется :)
Но это уже другая схема и прошивка.

vinxru
19.03.2012, 12:26
Еще раз говорю, чистый WR не рекомендую, а то на каждую операцию записи придется отвечать.

Это понятно.


На выход лучше порт B, данные можно выдать одной командой.
Вход адреса сканирования лучше с порта D, и с одной из линий порта C.

Лучше так сделать. Но это не сильно критично. Сканирование клавиатуры производится минимум двумя командами процессора 8080. Запись адреса, чтение данных. Это достаточно большой промежуток времени.

---------- Post added at 11:23 ---------- Previous post was at 11:22 ----------

Мне вот интересно, если я поставлю сдвиговый регистр на сигналы СС, УС, РУС, СБРОС. То заметит ли компьютер момент загрузки новых значений в регистр? Выходные сигналы можно затормозить конденсаторами.

---------- Post added at 11:26 ---------- Previous post was at 11:23 ----------

Я в вашей схеме не заметил входа сигнала РУС/ЛАТ. И в прошивке не заметил разницы между раскладками РУС/ЛАТ.

А сделать хочется. Это очень хорошая идея, менять прошивки в зависимости от светодиода.

Error404
19.03.2012, 12:27
С1 - Вход светодиода РУС/ЛАТ.

Не обязательно, поскольку можно задействовать один из индикаторов клавиатуры, например Scroll Lock.

Это очень хорошая идея, менять прошивки в зависимости от светодиода.


Это неважная идея. Орионовский клавиатурный светодиод (атавизм от РК) вообще не надо эмулировать в виду того, что он включается программно, и при этом крайне слабо поддержан в драйверах, отличных от дефолтового (весьма примитивного) драйвера экрана от Монитора F800.
К примеру, в CP/M многие драйвера с поддержкой не двух регистров как у КОИ7 (РУС-ЛАТ), а четырех регистров как у АЛЬТ или КОИ8 (РУС-рус-ЛАТ-лат) отображают состояние не светодиодом, а формой курсора.

b2m
19.03.2012, 12:28
Мне вот интересно, если я поставлю сдвиговый регистр на сигналы СС, УС, РУС, СБРОС. То заметит ли компьютер момент загрузки новых значений в регистр? Выходные сигналы можно затормозить конденсаторами.
Может лучше выход данных на клаву сделать сдвиговым регистром? Всё равно там должно быть достаточно времени после вывода в порт.

vinxru
19.03.2012, 12:38
Может лучше выход данных на клаву сделать сдвиговым регистром? Всё равно там должно быть достаточно времени после вывода в порт.

А в этом случае я могу и не успеть. Надо повторить 8 раз эту программу:

// Заносим очередной бит в сдвиговый регистр
PORTC.0 = 0;
data >>= 1;
ADC PORTC;
// Тактовый вход сдвигового регистра
PORTC.1 = 1;
PORTC.1 = 0;

b2m
19.03.2012, 12:46
Критический случай: STAX B/MOV A,M, между выводом и вводом 7 тактов, если мега только в 4 раза быстрее, то получится 28 тактов меги. Да, не успеваем. Меня просто смутил СБРОС через сдвиговый регистр. Хотя можно данные клавиш чередовать нулевыми битами, а для сброса две еденицы подряд предусмотреть. Правда, лишний элемент И ...

vinxru
19.03.2012, 12:56
Меня просто смутил СБРОС через сдвиговый регистр.

Может и ничего, если конденсатор пожирнее поставить.

---------- Post added at 11:56 ---------- Previous post was at 11:53 ----------

А еще можно перейти на ATMega16

b2m
19.03.2012, 12:59
А ещё можно сброс сделать как И нескольких выходов на клавиатуру. Типа Ctrl+Alt+Del :)

vinxru
19.03.2012, 13:09
Для ATMega16 получается

D2 - Вход WR
A0..A7 - Вход данных с клавиатуры
С0..C7 - Выход данных на клавиатуру
D3,D4,D5,D6 - Выход РУС, УС, СС, Сброс
D7 - Вход светодиода РУС/ЛАТ
D0,D1 - Вход PS/2 клавиатуры
B0 - Вход светодиода МАГНИТОФОН

И еще две линии клавиатуры, которые есть на разъеме, на всякий случай подключу.

Вообще шикарно встает.

---------- Post added at 12:02 ---------- Previous post was at 12:00 ----------

Вот и решил :)

http://s019.radikal.ru/i621/1203/8c/a162aa0eeecb.jpg

---------- Post added at 12:09 ---------- Previous post was at 12:02 ----------


Это неважная идея. Орионовский клавиатурный светодиод (атавизм от РК) вообще не надо эмулировать в виду того, что он включается программно, и при этом крайне слабо поддержан в драйверах, отличных от дефолтового (весьма примитивного) драйвера экрана от Монитора F800.
К примеру, в CP/M многие драйвера с поддержкой не двух регистров как у КОИ7 (РУС-ЛАТ), а четырех регистров как у АЛЬТ или КОИ8 (РУС-рус-ЛАТ-лат) отображают состояние не светодиодом, а формой курсора.

Сделаем кнопку для отключения тогда.

Vladimir_S
19.03.2012, 14:15
Не очень понятно где будет стоять клавиатурный светодиод и зачем он нужен если клава будет PS/2? Вот на ней при смене регистра и надо засвечивать.

vinxru
19.03.2012, 14:23
Не очень понятно где будет стоять клавиатурный светодиод и зачем он нужен если клава будет PS/2? Вот на ней при смене регистра и надо засвечивать.

Светодиод будет стоять в PS/2 клавиатуре (точнее он там и так стоит, аж 3 штуки). Я хочу вывести светодиод компьютера (который был на стандартной клавиатуре, которой больше не будет) на PS/2 клавиатуру. Для этого в микроконтроллере предусмотрен вход (а не выход). Когда компьютер захочет помигать светодиодом, на PS/2 клавиатуре будет мигать Caps Lock (или SL).

Кстати, а зачем на клавиатуре Ориона 3 светодиода? Один питание, один РУС/ЛАТ. А еще один?

---------- Post added at 13:23 ---------- Previous post was at 13:19 ----------

Ага. Индикатор чтения магнитофона.

Vladimir_S
19.03.2012, 14:26
Кстати, а зачем на клавиатуре Ориона 4 светодиода? Один питание, один РУС/ЛАТ. А еще два?
Не знаю, у меня было два. А из предыдущего ответа я понял, что клавиатур будет две:
PS/2 и родная? Не очень понятно зачем.

vinxru
19.03.2012, 14:32
Не знаю, у меня было два. А из предыдущего ответа я понял, что клавиатур будет две:
PS/2 и родная? Не очень понятно зачем.

Видно я по русски говорить разучился совсем :)

Клавиатура будет одна - PS/2.

То что я писал о светодиодах, значит только одно: Орион 128 сможет управлять светодиодами PS/2 клавиатуры.

АлександрПП
19.03.2012, 15:44
Кстати, а зачем на клавиатуре Ориона 3 светодиода? Один питание, один РУС/ЛАТ. А еще один?
Клавиатура делалась для "Радио-86РК". Третий светодиод был задуман авторами для последующих расширений.

aviator
19.03.2012, 15:47
Кстати, у самого всю жизнь клавиатура была от Радио-86РК на "Орионе". Так вот, косяк был в том, что CP/M драйвер KOI8-R не хотел переключать рус/лат. Помню еще, что все клавиши перепробовал и сочетания УПР+клавиша. А как дело с этим с клавиатурой МСчего-то-там, от УКНЦ, в общем которая?

Error404
19.03.2012, 16:55
Кстати, у самого всю жизнь клавиатура была от Радио-86РК на "Орионе". Так вот, косяк был в том, что CP/M драйвер KOI8-R не хотел переключать рус/лат. Помню еще, что все клавиши перепробовал и сочетания УПР+клавиша. А как дело с этим с клавиатурой МСчего-то-там, от УКНЦ, в общем которая?

Зависит от драйвера.
На той версии CP/M что пользуюсь я (у нее драйвер, ноги которого растут от 480r.sys), переключается нормально на обеих клавиатурах. В обоих случаях кнопкой РУС/LAT

vinxru
19.03.2012, 20:46
Прототип контроллера готов, целый час проводки припаивал. Программу буду завтра писать.

http://s019.radikal.ru/i603/1203/b5/2df6ee76beea.jpg

Vladimir_S
19.03.2012, 20:57
целый час проводки припаивал.
А не подскажешь где СНП берешь.

vinxru
19.03.2012, 20:59
Неа. Эти в комплекте с компьютером были.

Vladimir_S
19.03.2012, 21:02
Эти в комплекте с компьютером были.
Везет, а тут ни комплекта....

---------- Post added at 20:02 ---------- Previous post was at 20:01 ----------

А кстати, от полосы на экране не избавился?

aviator
19.03.2012, 21:40
А не подскажешь где СНП берешь.
На чипдипе есть DINовские трёхрядники, китайские. По негуманной цене, правда, но заказал пару. Есть и угловые и прямые.

vinxru
19.03.2012, 21:56
А кстати, от полосы на экране не избавился?

Пока нет.

Vladimir_S
20.03.2012, 02:07
vinxru, еще осенью 90г собрал Орион и решил убрать эту полосу методом "ползучего эмпиризма при полном отсутствии теории", он же в простонародье "метод тыка". И вот 3-4 раза тыкнул и чисто случайно попал куда надо. На фото твоей платы на месте преобразователя стоят два электролита, а рядом с раз'емом третий. Так вот совсем рядом с ним переход с одной стороны на другую куда очень удачно встает конденсатор 300 пикушек. Вот как сейчас помню у меня стояла маленькая зеленая КМка. Проверено на нескольких Орионах.

Error404
20.03.2012, 09:54
vinxru, еще осенью 90г собрал Орион и решил убрать эту полосу методом "ползучего эмпиризма при полном отсутствии теории", он же в простонародье "метод тыка". И вот 3-4 раза тыкнул и чисто случайно попал куда надо. На фото твоей платы на месте преобразователя стоят два электролита, а рядом с раз'емом третий. Так вот совсем рядом с ним переход с одной стороны на другую куда очень удачно встает конденсатор 300 пикушек. Вот как сейчас помню у меня стояла маленькая зеленая КМка. Проверено на нескольких Орионах.

"Картинку в студию!"

Vladimir_S
20.03.2012, 10:51
"Картинку в студию!"
Картинку чего?

Error404
20.03.2012, 11:25
Картинку чего?

Ну, вы написали длинное (и в то же время нечеткое описание) ссылаясь на некую картинку (хз какую), из которого совершенно не понятно куда ставить конденсатор (думаю, там этих переходных отверстий около преобразователя не одно и не два).

Куда понятнее было бы тупо вырезать в Paint кусок фотки, на которую ссылаетесь, нужное отверстие обвести в кружочек (или пририсовать указывающую стрелочку) и результат художеств сюда запостить.

Vladimir_S
20.03.2012, 11:36
Куда понятнее было бы тупо вырезать в Paint кусок фотки, на которую ссылаетесь, нужное отверстие обвести в кружочек (или пририсовать указывающую стрелочку) и результат художеств сюда запостить.

Понятно. Картинка на Орион:разное #322 (http://zx.pk.ru/showpost.php?p=481587&postcount=322). А вот насчет нужного отверстия - дак ведь больше 20 лет прошло. И хоть у меня в удостоверении написано " должность - электроник", но я ведь не тот электроник, уже точно не помню.

vinxru
23.03.2012, 15:50
Я вчера сел писать прошивку и заглох в самом начале. Читать данные с клавиатуры получается (я это делал раньше), а вот с отправкой команд проблемы.

В 80% случаев клавиатура не принимает команду. Я уже и задержки разные делал везде. И из интернета программы запускал. Всё одно и то же.



void send(char data) {
setClock0();
delay_us(200);
setData0();
delay_us(20);
setClock1();
waitClock0(); // Ждем 0
char parity=0;
for(char i=0; i<8; i++) {
if(data&1) { setData1(); parity++; } else setData0();
data >>= 1;
waitClock(); // Ждем сначала 1, потом 0 (виснет в 80% тут)
}
// Бит четности
if(parity&1) setData0(); else setData1();
waitClock();
// Стоповый бит
setData1();
waitClock();
// Пропуск ACK
waitClock1(); // Ждем 1
}

void setData1() { DDRC &= ~1; PORTC |= 1; }
void setData0() { PORTC &= ~1; DDRC |= 1; }


Я вчера даже дизассемблировал прошивку caro, что бы понять, почему оно не работает. Но пока её не запускал.



send: rcall setClock0
rcall delay2
cbi PORTC, DATA_LINE ; setData0();
sbi DDRC, DATA_LINE ; выход данных
rcall delay1
cbi DDRC, CLOCK_LINE ; setClock1();
rcall delay1
ldi r19, 8
clr r2 ; parity = 0;
loc_162: sbic PINC, CLOCK_LINE ; for(8..1) {
rjmp loc_162 ; waitClock0();
ror r21 ; data >>= 1;
brcs loc_168 ; if(carry) { setData1(); parity++; } else setData0();
cbi PORTC, DATA_LINE
rjmp loc_16A
loc_168: sbi PORTC, DATA_LINE
inc r2
loc_16A: sbis PINC, CLOCK_LINE ; waitClock1();
rjmp loc_16A
dec r19
brne loc_162 ; }
loc_16E: sbic PINC, CLOCK_LINE ; waitClock0();
rjmp loc_16E
sbi PORTC, DATA_LINE ; if(parity&1) setData0(); else setData1();
sbrc r2, 0
cbi PORTC, DATA_LINE
loc_173: sbis PINC, CLOCK_LINE ; waitClock1();
rjmp loc_173
loc_175: sbic PINC, CLOCK_LINE ; waitClock0();
rjmp loc_175
sbi PORTC, DATA_LINE ; setData1();
loc_178: sbis PINC, CLOCK_LINE ; waitClock1();
rjmp loc_178
cbi DDRC, DATA_LINE ; вход данных
loc_17B: sbic PINC, CLOCK_LINE ; waitClock0();
rjmp loc_17B
loc_17D: sbis PINC, CLOCK_LINE ; waitClock1();
rjmp loc_17D
ret


Тут отличие в том, что установка setData1() выполняется без изменения DDR... но вроде бы я так пробовал.

void setData1() { PORTC |= 1; }
void setData0() { PORTC &= ~1; }

vinxru
24.03.2012, 21:37
Я нашел проблему. Подтягивающих регистров внутри МК не хватает. :v2_dizzy_wall: И еще я провода data и clock местами перепутал, но вроде я их не один раз уже менял.

vinxru
25.03.2012, 21:14
Написал первую версию прошивки для ATMega16 на Си. Отлично работает, даже если прерывание вызывать при каждой записи на шине.

Пошел делать плату.

vinxru
25.03.2012, 22:20
http://s12.radikal.ru/i185/1203/c0/81bae15077ac.png

Пилить текстолит сегодня уже поздно. Плату буду делать завтра.

Делаю плату точно такого же размера, как плата ROM-диска. Разъем клеится на термоклей.

http://s019.radikal.ru/i602/1203/c4/2a417eb19c2a.jpg

vinxru
26.03.2012, 14:38
Что то, внезапно, написал программу, что бы удобно настраивать таблицу преобразования 86РК / Орион -> PC.

Работает в окне браузера. (Написано на HTML и JS.)
http://tmaplatform.ru/vinx_home_page/86rk2.html

(Версия 2 от 27-03-2012)



---------- Post added at 14:12 ---------- Previous post was at 13:36 ----------

У ATMega16 еще осталось несколько свободных ног. Добавлю еще порт джойстика.

И еще я не нашел Ъ

---------- Post added at 14:38 ---------- Previous post was at 14:13 ----------

По умолчанию раскладки будут такие. Вы их можете поменять.

Версия 6

http://s019.radikal.ru/i633/1203/38/ed735049b850.png
UPD: На клавишу [' " Э] в английской раскладке повесил SHIFT+2

Английская раскладка

80,88,96,104,112,120,83,68,119,0,0,0,2048,
0,4096,0,99,74,82,90,98,106,114,122,67,75,
66,107,91,89,73,64,342,0,123,595,107,65,78,
126,108,86,102,79,110,77,125,70,95,111,81,0,
72,348,122,67,75,603,1024,76,94,100,116,124,69,
85,93,101,83,594,103,98,106,114,512,87,71,92,
118,84,117,109,99,115,123,512,105,74,82,90,81,
256,0,0,127,0,0,0,256,97,121,113,66,115

Русская раскладка

80,88,96,104,112,120,83,580,631,0,0,0,2048,
0,4096,0,99,74,82,90,98,106,114,122,67,75,
66,107,91,89,73,64,342,0,123,595,107,65,85,
92,110,93,108,117,124,95,111,87,69,71,81,0,
72,348,122,67,75,603,1024,116,79,126,76,70,86,
125,101,100,118,103,615,98,106,114,512,78,119,94,
109,77,102,71,84,68,115,512,105,74,82,90,81,
256,0,0,127,0,0,0,256,97,121,113,66,115

Редактор: http://tmaplatform.ru/vinx_home_page/86rk2.html

Vladimir_S
26.03.2012, 14:46
vinxru, Хотелось бы соответствия с надписями на клавишах.

vinxru
26.03.2012, 14:58
vinxru, Хотелось бы соответствия с надписями на клавишах.

Я к этому максимально стремлюсь. Но есть две проблемы.

Комбинации с шифтами работают совсем не так, как на PC. То есть SHIFT+6 не даст двоеточие (в русской раскладке). Двоеточие на 86РК - это отдельная кнопка, на PC такой кнопки нет. Поэтому я перенес : на кнопку MENU.

Аналогично в русской раскладке PC нет <. Вообще нет, не нажать. А в РК86 можно нажать, поэтому я засунул его на клавишу ~.

Vladimir_S
26.03.2012, 15:02
vinxru, Я имел ввиду полное соответствие т.е. латинское А и русское Ф и.т.д.

vinxru
26.03.2012, 15:11
Если не рассматривать комбинации с SHIFT-ом, то все клавиши соответствуют названиям.

Кроме ~=<, MENU=:, INS=СТР, HOME=ВлевоВвех, PGUP=ПС, RPGUP=СТР, ESC=АР2.

С нажатым шифтом соответствуют надписям только кнопки 1,2,3,5. И в английской раскладке клавиша /?.

SHIFT у буквенных клавиш переключают русский-английский.


vinxru, Я имел ввиду полное соответствие т.е. латинское А и русское Ф и.т.д.

В русской раскладке Я соответствует Я. В английской Z соответствует Z.

Причем, раскладку можно выбирать вручную клавишей Scroll Lock. Так же она может выбираться автоматически индикатором РУС/ЛАТ.[COLOR="Silver"]

---------- Post added at 15:11 ---------- Previous post was at 15:08 ----------

Наверное надо еще SHIFT перехватить...

Vladimir_S
26.03.2012, 15:17
Я не очень понял зачем менять раскладки. На PS/2 клаве все кнопки промаркированы и нажимать на B чтобы в итоге получить Б

vinxru
26.03.2012, 15:34
Если на орионе включен английский язык, нажимая на кнопку [B И] мы получим на Орионе английскую B.
Если на орионе включен русский язык, нажимая на кнопку [B И] мы получим на Орионе русскую Б. Понятно? На клавиаше написана русская И, а мы получим русскую Б. Это особенность Ориона.

А я еще добавил опциональный режим, в котором нажимая на кнопку [B И] мы получим на Орионе русскую И.

Vladimir_S
26.03.2012, 15:40
А я еще добавил опциональный режим, в котором нажимая на кнопку [B И] мы получим на Орионе русскую И.
Я это и имел ввиду, что на кнопках, то и в результате. И чтобы доп.поле переключалось через NumLoock и сброс Ctrl & Alt & Del.

vinxru
26.03.2012, 15:41
А для сброса F12 вообще не катит?

Ок, переключение раскладок сделаю на NumLock. Каждое нажатие по кругу переключает ражим 0->1->2.

Режим 0 - раскладка выбирается автоматически в зависимости от индикатора РУС/ЛАТ. Индикатор NumLock погашен.
Режим 1 - английская раскладка. Индикатор NumLock горит.
Режим 2 - русская раскладка. Индикатор NumLock горит.

Индикатор CapsLock - это индикатор РУС/ЛАТ ориона. Кнопка CapsLock - это кнопка РУС/ЛАТ. И получается, что в консоли/бейсике CapsLock будет поджигать индикатор CapsLock. Получается складно.

(И более того, Shift+буква переключает раскладку. Поэтому CapsLock в качестве переключения раскладки идеологически подходит)

Индикатор ScrollLock - это индикатор загрузки с магнитофона. Как и CapsLock - это отдельный вход микроконтроллера, и его можно припаять хоть к дианмику или дисководу. При этом ScrollLock будет подмигивать дисководу или звуку.

Vladimir_S
26.03.2012, 15:48
Индикатор ScrollLock - это индикатор загрузки с магнитофона
А оно нам надо? Я думаю загрузится и без индикатора. А впрочем никого не слушай и делай как самому нравится.

vinxru
26.03.2012, 15:54
А оно нам надо? Я думаю загрузится и без индикатора. А впрочем никого не слушай и делай как самому нравится.

Этот индикатор есть в Орионе 128. Почему бы его не вывести на клавиатуру. Это всего одна строка в программе, почти такая же, как для индикатора CapsLock.

---------- Post added at 15:54 ---------- Previous post was at 15:49 ----------

Когда то давным давно, я делал подобную клавиатуру для Спектрума.

Я повесил на кнопку F12 функцию, которая вводит с клавиатуры игру и запускает её :)

Только ввод был разбит на две части: сначала ввод маленькой программы на Бейсике, а потом эта программа быстро принимала игру в двоичном виде через порт клавиатуры.

caro
26.03.2012, 15:55
Ок, переключение раскладок сделаю на NumLock.Небольшое замечание:
У малогабаритных клавиатур не имеющих цифровое поле, клавиша Num Lock и соответствующий индикатор определяют назначение правой половины алфавитного поля, что может создать неудобства при использовании таких клавиатур с контроллером.
Лучше всё таки для переключения РУС/LAT использовать клавишу и индикатор Scroll Lock.

Vladimir_S
26.03.2012, 16:18
Лучше всё таки для переключения РУС/LAT использовать клавишу и индикатор Scroll Lock.
А почему не CapsLoock? Или это как в эмуляторе?

vinxru
26.03.2012, 16:21
А почему не CapsLoock? Или это как в эмуляторе?

Кнопка CapsLock - будет эмулировать кнопку РУС/ЛАТ ориона.
Индикатор CapsLock - будет привязан к индикатору РУС/ЛАТ ориона.

Кнопка ScrollLock - будет переключать раскладки клавиатуры: Авто/Русская/Английская.
Индикатор ScrollLock - будет отображать выбранную раскладку. Авто-не горит. Русская/Английская-горит.

Кнопку NumLock - на вскяий случай не трогаю.
Индикатор NumLock - будет привязан к индикатору МАГНИТОФОН ориона. Который почти не используется. Если эту ножку МК не припаивать, то индикатор никогда светится не будет.

Vladimir_S
26.03.2012, 16:27
vinxru, Одобрям!

---------- Post added at 15:27 ---------- Previous post was at 15:24 ----------

А кстати хотел узнать - есть ли какой то Орионовский софт который сам опрашивая клавиатуру допускает опрос более одной кнопки одновременно?

caro
26.03.2012, 16:31
Кнопку NumLock - на вскяий случай не трогаю.
Индикатор NumLock - будет привязан к индикатору МАГНИТОФОН ориона. Который почти не используется. Если эту ножку МК не припаивать, то индикатор никогда светится не будет.На вякий случай еще раз:
Именно состояние индикатора NumLock определяет для mini-клавиатур привязку цифрового поля.
Если индикатор не горит, цифрового поля нет, иначе оно отображается на правую часть алфавитной клавиатуры.
Лучше всего сделать так, чтобы клавиша NumLock просто инвертировала состояние этого индикатора.

vinxru
26.03.2012, 16:32
На вякий случай еще раз:
Именно состояние индикатора NumLock определяет для mini-клавиатур привязку цифрового поля.
Если индикатор не горит, цифрового поля нет, иначе оно отображается на правую часть алфавитной клавиатуры.

Да, я понял. Спасибо.

Error404
26.03.2012, 18:11
А кстати хотел узнать - есть ли какой то Орионовский софт который сам опрашивая клавиатуру допускает опрос более одной кнопки одновременно?

Игры. Большинство игр (практически все из играбельных) опрашивают по несколько клавиш одновременно.

Vladimir_S
26.03.2012, 18:15
Игры. Большинство игр
А PS/2 потянет такой режим?

aviator
26.03.2012, 18:25
Клавиатура PS/2 посылает различные префиксы к сканкодам по нажатию и отпусканию клавиш. Нужен буфер клавиатуры в микроконтроллере и матрица состояния клавиш в текущий момент времени. Тогда можно будет синтезировать сигналы матрицы 8x8 с несколькими нажатыми клавишами.

Vladimir_S
26.03.2012, 18:29
vinxru,

Клавиатура PS/2 посылает различные префиксы к сканкодам по нажатию и отпусканию клавиш. Нужен буфер клавиатуры в микроконтроллере и матрица состояния клавиш в текущий момент времени. Тогда можно будет синтезировать сигналы матрицы 8x8 с несколькими нажатыми клавишами.
А как у тебя с этим?

vinxru
26.03.2012, 18:35
Так и сделано. Есть буфер на 16 нажатых клавиш, на основе его формируется матрица 8x8 (плюс 4 отдельных кнопки), затем на основе её формируется матрица 256x8.

vinxru
26.03.2012, 23:41
Слегка ошибся в плате. А в остальном, работает!

http://s019.radikal.ru/i644/1203/41/e6762206494b.jpg

http://s019.radikal.ru/i606/1203/2c/9282af9f99c8.jpg

Завтра кое что в прошивке поправлю. Хочу сделать так, что бы в бейсике буквы печатались всегда и не дублировались. То есть попробую выровнять время нажатия.

vinxru
27.03.2012, 03:03
Переписал программу так, что она не использует стек. То есть все переменные глобальные. Поэтому освободилась регистровая пара R28:R29, которую я использовал для ускорения прерывания. Теперь обработчик прерывания отдает данные на 3-тьей команде или 8-ом такте или через 1 мкс.

IN R28, PINA
LD R19, Y
OUT PORTC, R19
RETI

Завтра-послезавтра выложу архив со всеми файлами для сборки и забуду про него.

vinxru
27.03.2012, 12:24
Еще странность. На клавиатуре нет кнопки F5. И соответствующий скан код KEY(0, 7) в схеме не используется.

Vladimir_S
27.03.2012, 13:02
На клавиатуре нет кнопки F5
Точно, зажилили кнопочку. Поле 8х8, а кнопок 63.

---------- Post added at 12:02 ---------- Previous post was at 11:56 ----------

И скорее всего с кодом 4, т.е. - F5.

vinxru
27.03.2012, 13:03
Загрузил новую программу настройки раскладок. На этот раз рабочую, надеюсь, что без ошибок.

Подправил раскладки.

Всё в прошлом посте http://zx.pk.ru/showpost.php?p=484947&postcount=89

Error404
27.03.2012, 14:03
PGUP=ПС, RPGUP=СТР, [COLOR="Silver"]



Конечно, кнопки - вопрос вкусов и религиозных предпочтений (мне например пофиг до некоторых различий подписей кнопок и реального набора - привыкаешь уже на второй день, а вот символы на альте и винде - полный оксюморон), но касательно PgUp и PgDn (не имевших прямых аналогов на РК86) я бы посоветовал назначить на них коды соответствующие ctrl+C и ctrl+R. Это коды "страница вверх","страница вниз" в самых распространенных редакторах CP/M. Я еще и код удаления символа в позиции курсора назначал на Del, тоже удобно. Остальные (Ins Home End) уже реже употребимые и туда пофиг чего назначать. Также мне казалось удобным чтобы цифровое поле было именно цифрами. Нафига удваивать ПС, стрелки курсора и т.п.? А вот цифры набивать на поле цифр гораздо удобнее, чем на верхнем ряду пишмашки - это аксиома, не раз подтвержденная наблюдениями за животными в природе{зачеркнуто} девочками-операционистками в банке (я работал там некоторое время). :)

vinxru
27.03.2012, 14:33
вот символы на альте и винде - полный оксюморон

Под эти три символа ( @ ^ : ) не осталось кнопок. Вот куда их впихнуть?

Ок. Убрал с Win, Alt, Menu эти символы и засунул их на F6, F7, 4F8.

В английской раскладке на клавишу [; :] повесил [:] вместо [;]. (Двоеточие важнее, а точка с запятой во всех раскладках есть на плюсе в верхнем ряду).

Причем в русской раскладке совместил его с SHIFT-ом.


Также мне казалось удобным чтобы цифровое поле было именно цифрами. Нафига удваивать ПС, стрелки курсора и т.п.? А вот цифры набивать на поле цифр гораздо удобнее, чем на верхнем ряду пишмашки - это аксиома, не раз подтвержденная наблюдениями за девочками-операционистками (я работал в банке некоторое время).

Да, я так то же думаю. И сразу хотел забить туда цифры. Засунул только что:

PgDn = Ctrl + C
PgUp = Ctrl + R


Я еще и код удаления символа в позиции курсора назначал на Del, тоже удобно

Какая комбинация?

---------- Post added at 14:33 ---------- Previous post was at 14:15 ----------

Версия 6

http://s019.radikal.ru/i633/1203/38/ed735049b850.png
UPD: На клавишу [' " Э] в английской раскладке повесил SHIFT+2

Английская раскладка

80,88,96,104,112,120,83,68,119,0,0,0,2048,
0,4096,0,99,74,82,90,98,106,114,122,67,75,
66,107,91,89,73,64,342,0,123,595,107,65,78,
126,108,86,102,79,110,77,125,70,95,111,81,0,
72,348,122,67,75,603,1024,76,94,100,116,124,69,
85,93,101,83,594,103,98,106,114,512,87,71,92,
118,84,117,109,99,115,123,512,105,74,82,90,81,
256,0,0,127,0,0,0,256,97,121,113,66,115

Русская раскладка

80,88,96,104,112,120,83,580,631,0,0,0,2048,
0,4096,0,99,74,82,90,98,106,114,122,67,75,
66,107,91,89,73,64,342,0,123,595,107,65,85,
92,110,93,108,117,124,95,111,87,69,71,81,0,
72,348,122,67,75,603,1024,116,79,126,76,70,86,
125,101,100,118,103,615,98,106,114,512,78,119,94,
109,77,102,71,84,68,115,512,105,74,82,90,81,
256,0,0,127,0,0,0,256,97,121,113,66,115

Редактор: http://tmaplatform.ru/vinx_home_page/86rk2.html

zx-kit
27.03.2012, 17:41
vinxru, можете переделать свой адаптер так, чтобы можно было использовать плату адаптера KEYB&SINC с вашей прошивкой ?

СХЕМА АДАПТЕРА KEYB&SINC:

http://s018.radikal.ru/i508/1201/94/91c640b90a9ct.jpg (http://s018.radikal.ru/i508/1201/94/91c640b90a9c.png)

caro
27.03.2012, 17:47
vinxru, можете переделать свой адаптер так, чтобы можно было использовать плату адаптера KEYB&SINC с вашей прошивкой ?Вопрос скорее должен звучать так: не можете ли вы написать прошивку для указанного адаптера?

zx-kit
27.03.2012, 17:54
Вопрос скорее должен звучать так: не можете ли вы написать прошивку для указанного адаптера?

Ваша прошивка подходит для него, так как сделана по вашей схеме. Товарищ, видимо хочет написать подобную. Тогда зачем плодить разные схемы ?
А если адаптировать под готовую плату, то можно будет прошивать разные прошивки. Может...

vinxru
27.03.2012, 18:32
Вопрос скорее должен звучать так: не можете ли вы написать прошивку для указанного адаптера?

Да, сделаю.

---------- Post added at 17:58 ---------- Previous post was at 17:55 ----------


Ваша прошивка подходит для него, так как сделана по вашей схеме. Товарищ, видимо хочет написать подобную. Тогда зачем плодить разные схемы ?

Схемы одинаковые. Микроконтроллеры разные. Там ATMega48, а у меня ATMega16.

(В нашем городе сложно найти другие AVR-микроконтроллеры)

---------- Post added at 18:00 ---------- Previous post was at 17:58 ----------

Ну и прошивки слегка отличаются. У ATMega16 больше ножек, и это позволило добавить больше фишек. В частности завести светодиоды из Ориона на клавиатуру.

---------- Post added at 18:04 ---------- Previous post was at 18:00 ----------

Нашел у себя ATMega328 в Ардуино. Можно будет проверить сразу.

---------- Post added at 17:32 ---------- Previous post was at 17:04 ----------

Схема для ATMega16. Осталось еще 2 вывода для расширения.

http://s019.radikal.ru/i611/1203/80/d602ac1ffd0f.png

Ewgeny7
27.03.2012, 18:33
vinxru, а один из самых "народных" контроллеров - Мега8 QFP теоретически пригодна для подобного контроллера?

vinxru
27.03.2012, 18:35
vinxru, а один из самых "народных" контроллеров - Мега8 QFP теоретически пригодна для подобного контроллера?

Да. Только придется пожертвовать двумя светодиодами на клавиатуре (и следовательно автопереключением раскладок) и кнопкой сброс.

Либо ставить еще два регистра на плату.

Error404
27.03.2012, 19:36
Да. Только придется пожертвовать двумя светодиодами на клавиатуре (и следовательно автопереключением раскладок) и кнопкой сброс.

Либо ставить еще два регистра на плату.

Светодиоды и сброс - вполне премлимая жертва (тем более что их всегда можно разместить в корпусе системного блока отдельно от клавиатуры - так часто делалось в вариантах с выносной клавиатурой).

Ewgeny7
27.03.2012, 22:08
Просто у нас эти контроллеры продаются по вполне вменяемым на сегодня ценам, а их крошечный размер доставляет.


ATMEGA8A-AU AVR 8KFLASH 512EEPROM ISP 1024RAM TQFP32 60.20

vinxru
27.03.2012, 22:20
Просто у нас эти контроллеры продаются по вполне вменяемым на сегодня ценам, а их крошечный размер доставляет.

Я тоже купил 20 штук таких год назад. Осталось всего две штуки.

Vladimir_S
28.03.2012, 05:34
vinxru, JoyUp и JoyDown это что?

vinxru
28.03.2012, 09:02
Джойстик. Замыкаешь эту ногу на землю и микроконтроллер нажимает кнопку "вниз"

Vladimir_S
28.03.2012, 09:07
vinxru, а когда все материалы выложишь, ато очень хочется погрызть.

vinxru
28.03.2012, 09:52
Мне сегодня приехали на работу люди из центрального офиса, поэтому доделаю только на выходных.

vinxru
29.03.2012, 23:30
Сел немного прибрать программу. И продумал...

Может быть добавить в программу функцию настройки привязки клавиш?

Нажимаем какую либо клавишу, затем не отпуская её жмем BREAK и клавиатура переключается в режим настройки. А там вводим код клавиши РК к которой мы хотим привязать этот код и жмем Enter.

Например, я хочу привязать клавишу F12 к комбинации 4 строка + 4 столбец. Код клавиши = строка*8 + столбец + 64 = 4+4*8+64 = 100. Я нажимаю: F12, BREAK, 1, 0, 0, F12, CTRL+SCROLLLOCK.

Настроенная раскладка будет храниться в энергонезависимой памяти атмеги (EEPROM 512 байт).

vinxru
01.04.2012, 01:04
Выложил 2-ую версию прошивки с исходниками для ATMega16 и свою печатную плату.

Эта прошивка может изменять привязку клавиш РС к 86РК во время работы. Для этого надо нажать на нужную кнопку (или повернуть ручку джойстика) и нажать BREAK. Светодиоды должны последовательно мигнуть. Затем набираете цифрами код клавиши РК86 и нажимаете ENTER. То есть, можно по ходу работы привязывать джойстик к любым клавишам.

При нажатии на кнопку одновременно привязанную к нескольким клавишам Ориона (например SHIFT+; ), нажатие кнопки задерживается на 20 мкс относительно шифта.

Данные хранятся в EEPROM. При первом запуске контроллера необходимо инициализировать EEPROM. Как это сделать написано в файле в архиве.

Прошивка будет поддерживать микроконтроллеры ATMega16, ATMega8, ATMega48 и т.д. Но пока работает только ATMega16. Есть еще небольшие косяки, но уже работать можно :) С меня еще таблица кодов клавиш РК86. И в этой программе http://tmaplatform.ru/vinx_home_page/86rk2.html я добавлю настройку джойстика.

Ewgeny7
01.04.2012, 12:48
Прошивка будет поддерживать микроконтроллеры ATMega16, ATMega8, ATMega48 и т.д.
А может быть, для Мега8 просто не использовать джойстик? Немногим он нужен ИМХО. А ноги освободятся.

vinxru
01.04.2012, 13:14
А может быть, для Мега8 просто не использовать джойстик? Немногим он нужен ИМХО. А ноги освободятся.

А там и так джойстика нет.

У ATMega8 22 ноги.

19 ног занимает клавиатура РК86
1 ногу занимает сигнал WR
2 ноги занимает PS/2 клавиатура.

Если пожертвовать ножкой сброса (то есть лишиться возможности перепрошивки), то освободившуюся ногу можно использовать под сброс или вход светодиода РУС/ЛАТ.

---

У ATMega16 аж 32 ноги.

19 ног занимает клавиатура РК86
1 ногу занимает сигнал WR
2 ноги занимает вход светодиодоа
1 ногу занимает сигнал сброса
2 ноги занимает PS/2 клавиатура.
5 ног занимает джойстик.

И еще 2 ножки свободно.

---

У микроконтроллера ATMega48 то же 22 ноги. Но ему не нужен сигнал WR, то есть одна дополнительная нога.

19 ног занимает клавиатура РК86
2 ноги занимает PS/2 клавиатура.
1 ногу занимает сигнал сброса

Если пожертвовать ножкой сброса, то можно подключить вход светодиода РУС/ЛАТ.

Ewgeny7
01.04.2012, 16:00
Если пожертвовать ножкой сброса (то есть лишиться возможности перепрошивки), то освободившуюся ногу можно использовать под сброс или вход светодиода РУС/ЛАТ.
не надо, лесом его (светодиод).

Error404
01.04.2012, 16:02
не надо, лесом его (светодиод).

+1

Vladimir_S
01.04.2012, 16:05
не надо, лесом его (светодиод).
Мне кажется, что смена уровня на светодиоде Рус/Лат указывает, что п/п опроса клавиатуры переключилась в другой регистр.А это наверное нужно?

vinxru
01.04.2012, 16:42
Мне кажется, что смена уровня на светодиоде Рус/Лат указывает, что п/п опроса клавиатуры переключилась в другой регистр.А это наверное нужно?

Ага. Есть такой режим, когда зажигается светодиод, автоматически включается русская раскладка.

Но русскую раскладку можно включить и клавишей SCROLL LOCK.

Ewgeny7
01.04.2012, 20:34
Мне кажется, что смена уровня на светодиоде Рус/Лат указывает, что п/п опроса клавиатуры переключилась в другой регистр.А это наверное нужно?
Если бы софт соблюдал все правила... Обычно это не делается, проку от такой аппаратной фичи почти не будет :(

vinxru
01.04.2012, 22:12
Выложил 2-ую версию прошивки с исходниками (http://zx.pk.ru/showpost.php?p=487994&postcount=132).

Уже можно нормально работать. Есть небольшой косяк с сохранением состояния клавиши Scroll Lock в энергонезависимой памяти. Но он не мешает жить.

Вставил быстрый обработчик прерывания. Я не стал вставлять этот обработчик прямо в таблицу прерываний (по адресу 2). Так как это пришлось бы делать каждый раз руками в HEX-файле. То что сделал я - это лишняя команда JMP, которая чуть-чуть увеличивает время реакции микросхемы. Но запас времени там большой.

Народ хочет ATMega8 ? Я на этой неделе сделаю отладочную плату для ATMega8 и проверю прошивку на ней. (Мне эта плата все равно нужна, что бы делать эмулятор FDD для БК0010)

Vladimir_S
02.04.2012, 01:16
Но русскую раскладку можно включить и клавишей SCROLL LOCK.
Я имел ввиду п/п опроса в Орионе.

vinxru
02.04.2012, 02:34
Я имел ввиду п/п опроса в Орионе.

Не понял

Vladimir_S
02.04.2012, 02:57
Не понял
Я себе представляю алгоритм смены регистра так:
1. нажимаем, а потом отпускаем CapsLock.
2. Орион это расценивает как нажатие Рус/Лат и меняет уровень на светодиоде
Рус/Лат.
3. контроллер в зависимости от этого уровня предпринимает нужные действия.
Или не надо никаких подтверждений? Я думаю для надежности не помешает.

Error404
02.04.2012, 09:11
Я себе представляю алгоритм смены регистра так:
1. нажимаем, а потом отпускаем CapsLock.
2. Орион это расценивает как нажатие Рус/Лат и меняет уровень на светодиоде
Рус/Лат.
3. контроллер в зависимости от этого уровня предпринимает нужные действия.
Или не надо никаких подтверждений? Я думаю для надежности не помешает.

Как вам такой вариант:
2. Орион это расценивает как нажатие Рус/Лат, меняет регистр и НЕ меняет уровень на светодиоде Рус/Лат.

Такое может быть сплошь и рядом

Vladimir_S
02.04.2012, 09:25
Как вам такой вариант:
2. Орион это расценивает как нажатие Рус/Лат, меняет регистр и НЕ меняет уровень на светодиоде Рус/Лат.

Такое может быть сплошь и рядом
Смена уровня - подтверждение смены регистра.
Получается контроллер поменяет свой регистр без подтверждения?
А если Орион по каким то причинам не поменял регистр?

Ewgeny7
02.04.2012, 10:53
А если Орион по каким то причинам не поменял регистр?
...то просто "съедет" раскладка кнопок на клавиатуре. Нажимая "W", к примеру, напечатается "D".

Vladimir_S
02.04.2012, 10:57
..то просто "съедет" раскладка кнопок на клавиатуре. Нажимая "W", к примеру, напечатается "D".
Ничего страшного конечно, но не люблю я когда железо живет своей жизнью.

Ewgeny7
02.04.2012, 11:08
Vladimir_S, эта клавиатурная проблема уже жутко обмусоливалась. когда мы делали ОРИОН-2010. В результате пришлось оставить только одну раскладку, ЯВЕРТЫ. Поскольку выяснить, когда Орион захочет переключиться на другую раскладку невозможно, то и вариант с "подсовываемой" ЙЦУКЕНГ отвалился.

Vladimir_S
02.04.2012, 11:12
Vladimir_S, эта клавиатурная проблема уже жутко обмусоливалась. когда мы делали ОРИОН-2010. В результате пришлось оставить только одну раскладку, ЯВЕРТЫ. Поскольку выяснить, когда Орион захочет переключиться на другую раскладку невозможно, то и вариант с "подсовываемой" ЙЦУКЕНГ отвалился.
Как это невозможно, для того и светодиод стоит.

Error404
02.04.2012, 11:17
Подсовывать раскладку надо только по желанию пользователя, нажатием спецклавиши обрабатываемой прошивкой конвертора(адаптера PS2).
Светодиод РУС\ЛАТ зажигается не Орионом (совокупностью железячек-микросхем), а управляющей этими микросхемами программой при помощи вывода в порт F40x некоего значения командой LD (STA). А программы на Орионе писались как попало. Поэтому в половине орионовских драйверов светодиод не поддерживается. Нормально работать светодиод будет только в Ордосе c Moнитором-2 и только с штатным KOI-7.

vinxru
02.04.2012, 11:38
Подсовывать раскладку надо только по желанию пользователя, нажатием спецклавиши обрабатываемой прошивкой конвертора(адаптера PS2).

Да да. Есть три режима переключаемые Scroll Lock

1) Русская раскладка (Scroll Lock горит)
2) Английская раскладка (Scroll Lock горит)
3) Автоматическая раскладка (Scroll Lock не горит)

Если в исходниках закомментировать строку #define LED_RUSLAT, то будет всего два режима. По умолчанию для ATMega8 и 48 эта строка закомментирована.

---------- Post added at 11:38 ---------- Previous post was at 11:35 ----------

В начале исходников идет привязка к ножкам для любых МК.

#ifdef ATMEGA16
#include <mega16.h>

// Настройка отдельных кнопок
#define OUT_PORT PORTD // Порт к которому подключены входы светодиодов
#define OUT_DDR DDRD
#define OUT_RESET 0 // Вывод порта для кнопки сброса
#define OUT_US 4 // Вывод порта для кнопки УС
#define OUT_SS 5 // Вывод порта для кнопки СС
#define OUT_RUSLAT 6 // Вывод порта для кнопки РУС/ЛАТ

// Настройка светодиодов
#define LED_PIN PIND // Порт к которому подключены входы светодиодов
#define LED_RUSLAT 1 // Вывод порта для вход индикатора РУС/ЛАТ
#define LED_TAPE 3 // Вывод порта для входа индикатора МАГНИТОФОН

// Настройка подключения клавиатуры
#define PS2_PORT PORTB // Порт к которому подключена клавиатура
#define PS2_PIN PINB
#define PS2_DDR DDRB
#define PS2_CLOCK 3 // Вывод порта для линии данных
#define PS2_DATA 4 // Вывод порта для тактового входа

// Настройка джойстика
#define JOY_PIN PINB // Порт к которому подключен джойстик
#define JOY_UP 0 // Вывод порта для кнопки вверх
#define JOY_DOWN 1 // Вывод порта для кнопки вниз
#define JOY_LEFT 5 // Вывод порта для кнопки влево
#define JOY_RIGHT 6 // Вывод порта для кнопки вправо
#define JOY_FIRE 7 // Вывод порта для кнопки выстрел

// Подключение матрицы
#define DECODE_DDR DDRC
#define DECODE PORTC = data[(unsigned char)PINA];
#endif

//---------------------------------------------------------------------------

#ifdef ATMEGA8
#include <mega8.h>
// Биты порта D
#define OUT_PORT PORTC // Порт к которому подключены перечисленные ниже кнопки
#define OUT_DDR DDRC
#define OUT_US 3 // Вывод порта для кнопки УС
#define OUT_SS 4 // Вывод порта для кнопки СС
#define OUT_RUSLAT 5 // Вывод порта для кнопки РУС/ЛАТ

// Настройка подключения клавиатуры
#define PS2_PORT PORTC // Порт к которому подключена клавиатура
#define PS2_PIN PINC
#define PS2_DDR DDRC
#define PS2_CLOCK 1 // Вывод порта для линии данных
#define PS2_DATA 2 // Вывод порта для тактового входа

// Подключение матрицы. Порт A - вход. Порт D - выход. Только линия D2 перенесена на С0.
#define DECODE_DDR DDRD
#define DECODE PORTD = data[(unsigned char)PINB]; PIND.6=0; if(PORTD.2) PINC.0 = 1; else PINC.0 = 0;
#endif

Ewgeny7
03.04.2012, 08:40
vinxru, а будетли работать контроллер с Z80 с частотой процессора 5 и 10Мгц?

vinxru
03.04.2012, 09:15
ATMega16 с внешним кварцем на 20 Мгц может быть.

А ATMega8 нет. Темболее на стандартных 8 Мгц. В ней данные надо выводить в два порта.

HardWareMan
03.04.2012, 09:29
А ежели ATXMega32A4 и PLL запущенной на 32МГц? Их есть у меня пару десятков. :3

vinxru
03.04.2012, 10:43
Я ничего не знаю об этом МК. Но если ATMega16 20 Мгц тянет, то вероятно, что ATXMega32 32 Мгц то же потянет :)

HardWareMan
03.04.2012, 15:59
Я ничего не знаю об этом МК. Но если ATMega16 20 Мгц тянет, то вероятно, что ATXMega32 32 Мгц то же потянет :)
ATXMega32A4 (http://www.atmel.com/devices/ATXMEGA32A4.aspx) Исходников не дают, чтобы попробовать заточить?

vinxru
03.04.2012, 18:19
ATXMega32A4 Исходников не дают, чтобы попробовать заточить?

Я исходники в архиве выложил в этой теме.

HardWareMan
03.04.2012, 21:59
Я исходники в архиве выложил в этой теме.
А... Тут? (http://zx.pk.ru/showpost.php?p=487994&postcount=132) Спасибо. Я думал в первом сообщении темы. Попробую применить к АТХмеге.

vinxru
03.04.2012, 22:40
ага

vinxru
07.04.2012, 20:16
Идея!

У ATMega8 есть два дополнительных вывода ADC6, ADC7

http://320volt.com/wp-content/uploads/2009/03/atmega8-microdenetleyici-bacak-baglanti-semasi-tqfp.png

Их можно использовать как цифровые входы. То есть (с большой вероятностью) можно сделать поддержку светодиода РУС/ЛАТ и кнопки сброса.

vinxru
24.04.2012, 14:46
Собрал я контроллер клавиатуры на ATMega8. Давно собрал. Только обнаружилась одна проблема.

Когда нажимаешь две кнопки одновременно, или почти одновременно, или последовательно, клавиатура посылает два (или четыре байта) нормально. Но когда отпускаешь две кнопки почти одновременно (с запаздыванием ~0.1 сек), то код второй отжатой кнопки теряется. То есть вторая кнопка залипает. Баг стабильный на всех клавишах.

Я уже это проверил без Ориона (без тормозящих прерываний) на маленькой демо программе.

После приема каждого байта я прижимаю линию Clock. То есть подаю на неё ноль, обрабатываю данные и отпускаю Clock. Собственно так же сделано и у caro.

Я пробовал зажимать Clock сразу после приема, во время приема, спустя 10-1000 мкс. Пофиг.

И мне кажется, что клавиатура продолжает передавать данные, когда я зажимаю Clock. Но при этом, я ни разу не принял хвост пакета. Моя программа бы заметила ошибку приёма и перезагрузила МК. Клавиатура бы мигнула светодиодами.

Либо в программе есть ошибка, которую я не заметил. В общем пока х.з. Я неспешно думаю над этой проблемой.

Пока писал, у меня появилась идея не трогать Clock, если принимается посылка из трёх и более байт.

tihsasha
09.01.2013, 20:44
Может кому пригодится разводка платы под SprintLayOut. Микроконтроллер
стоит ATmega48V-10AU. Спасибо всем за хорошую разработку.

Error404
09.01.2013, 21:14
Может кому пригодится разводка платы под SprintLayOut. Микроконтроллер
стоит ATmega48V-10AU. Спасибо всем за хорошую разработку.

А что за комп на втором фото?

perestoronin
09.01.2013, 21:18
Собрал я контроллер клавиатуры на ATMega8. Давно собрал. Только обнаружилась одна проблема.

Когда нажимаешь две кнопки одновременно, или почти одновременно, или последовательно, клавиатура посылает два (или четыре байта) нормально. Но когда отпускаешь две кнопки почти одновременно (с запаздыванием ~0.1 сек), то код второй отжатой кнопки теряется. То есть вторая кнопка залипает. Баг стабильный на всех клавишах.

Я пробовал зажимать Clock сразу после приема, во время приема, спустя 10-1000 мкс. Пофиг.

Либо в программе есть ошибка, которую я не заметил. В общем пока х.з. Я неспешно думаю над этой проблемой.

Пока писал, у меня появилась идея не трогать Clock, если принимается посылка из трёх и более байт.

Думаю эту проблему без замены клавиатуры на игровую не решить никак.
Необходима для отработки залипших клавиш использовать клавиатуры с фичей N-Key Rollover (NKRO) http://stenoknight.com/wiki/N-key_rollover#How_do_I_know_if_my_keyboard_has_N-Key_Rollover_.28NKRO.29.3F

Попробуйте исследовать специальные игровые клавиатуры допускающие и корректно обрабатывающие зажатия (залипания) до 6 клавиш (те что подешевле), только все такие клавиатуры usb и на контроллер их надо будет цеплять через универсальный переходник PS/2 - USB (такими раньше первые USB мыши и USB клавиатуры комплектовались, но их и сейчас можно найти от 30 до 50р). Можно начать с такой клавиатуры http://www.microsoft.com/hardware/ru-ru/p/sidewinder-x4-keyboard/JQD-00012#details (Одновременное корректное нажатие до 26 клавиш — результат точно соответствует нажатым клавишам!)

Также видел проекты по модернизации (глубокой с перерезанием дорожек, к пленочным это не применимо, только к механике) обычных (не игровых) клавиатур, чтобы они могли корректно обрабатывать зажатия нескольких произвольных клавиш. N-Key Rollover (NKRO) - фича у игровых клавиатур - позволяющая держать зажатыми несколько клавиш и при этом контроллер корректно обрабатывает зажатия и отпускания других клавиш корректно.

Есть более дешевые клавиатуры, но и фича эта применима у них к ограниченному набору клавиш http://www.defender.ru/products/keyboard/game/warhead-gk-1100/ (Распознает нажатие до 7 клавиш одновременно. Обычная клавиатура не в состоянии корректно обработать одновременное нажатие на несколько клавиш. Поэтому, если пользователь сразу нажмет на 3 и больше клавиш, то клавиатура будет заблокирована и сигнал от нажатых клавиш не поступит в компьютер. С Defender Warhead GK-1100 можно не бояться, что случайное нажатие испортит игру и не позволит выполнить нужные действия - геймер никогда не потеряет контроль над управлением. Функция доступна для клавиш: A, S, D, J, K, L, «Пробел».)

И еще про возможные проблемы при подключении клавиатуры не через usb к контроллеру http://www.gamedev.ru/code/forum/?id=134105&page=2#m19 (... была протестирована клавиатура, которая по словам производителя единственная в мире умеет распознавать нажатия всех 104 клавиш одновременно.
И да это действительно так. Правда только при подключении к PS/2 (переходник в комплекте), при подлючении к USB максимум 6 клавиш одновременно. Якобы из-за ограничений HID протокола. Встречайте: SteelSeries 6Gv2)

Последняя проблема вроде бы решается применением самодельного переходника согласно такого проекта https://github.com/tmk/tmk_keyboard/tree/master/converter/ps2_usb

А вот эта клавиатура (DasKeyboard Ultimate S) наверное свободна ото всех проблем http://habrahabr.ru/post/132977/

tihsasha
09.01.2013, 21:36
А что за комп на втором фото?

Как чувствовал этот вопрос. Это мой РК86. С VGA выходом (идея Rokl).

http://narod.ru/disk/65303474001.a2ef577a54db3ec6eca208a1d905349e/RK86.jpg.html

http://narod.ru/disk/65303574001.a19accac90138996e948f367a7794912/RK86%20_2.jpg.html

Думаю открыть по нему тему в соответствующем разделе или нет. Это не все фотки. Плоский кабель там не просто так стоит. Простите за оффтоп.

vinxru
10.01.2013, 01:06
Я как раз сейчас занимаюсь доработкой прошивки. Думаю, что могу победить залипания.

caro
10.01.2013, 15:18
Собрал я контроллер клавиатуры на ATMega8. Давно собрал. Только обнаружилась одна проблема.

Когда нажимаешь две кнопки одновременно, или почти одновременно, или последовательно, клавиатура посылает два (или четыре байта) нормально. Но когда отпускаешь две кнопки почти одновременно (с запаздыванием ~0.1 сек), то код второй отжатой кнопки теряется. То есть вторая кнопка залипает. Баг стабильный на всех клавишах.Я не понял, это на какой прошивке наблюдается?

vinxru
10.01.2013, 15:28
Моей. Если нажать две кнопки, а потом отпустить их с интервалом в 0.1 сек, то МК не получает код второй отжатой кнопки. Иногда.

Я думаю это из за того, что после приема каждого байта я включаю режим "передачи к клавиатуре". Клавиатура при этом должна прервать передачу, и повторить её, когда её будет разрешено отправлять данные.

Я поменял обработчик прерывания, и этот МК теперь работает на Специалисте. Там матрица 6x13, причем входом может быть как горизонталь, так и вертикаль.

caro
10.01.2013, 15:42
Я думаю это из за того, что после приема каждого байта я включаю режим "передачи к клавиатуре". Клавиатура при этом должна прервать передачу, и повторить её, когда её будет разрешено отправлять данные.
Думаю это может не понравится контроллеру, встроенному в PC-клавиатуру.
Судя по всему это сделано, что бы до прихода следующего кода от PS/2 успеть выполнить обработку предыдущего кода, я прав?
Я читал твою информацию о контроллере для Специалиста.
Мне кажется не следует экономить на цене МК, а лучше поставить что-нибудь более подходящее, наример ATMega164/324/644
Работать на максимальной частоте 20 Мгц и иметь большой резерв по выводам.

vinxru
10.01.2013, 15:51
Думаю это может не понравится контроллеру, встроенному в PC-клавиатуру.

Я припаял CLOCK от клавиатуры на прерывание. А прерывание в свою очередь будет обрывать расчет и далее программа будет переходить к приему следующего байта.

Переключать прием-передачу все равно придется, что бы зажечь лампочку. Но я сделаю очистку буфера нажатых клавиш при этом. Пользователь этого вообще не заметит.

---------- Post added at 14:51 ---------- Previous post was at 14:49 ----------


Работать на максимальной частоте 20 Мгц и иметь большой резерв по выводам.

Есть вероятность, что придется переходить на ATMega16. Там и кварц можно подключить. И целиком три порта отдать для подключения компьютера, повесив неиспользуемые линии на землю. Тогда можно сэкономить на командах ANDI, которые отсекают не относящееся к сканированию.

А к свободным линиям еще и SD карту подключить (и грузить через собственное расширение BIOS файлы)

caro
10.01.2013, 16:09
Я припаял CLOCK от клавиатуры на прерывание. А прерывание в свою очередь будет обрывать расчет и далее программа будет переходить к приему следующего байта.Использовать аппаратное прерывание от PS/2 клавиатуры не самое верное решение, особенно если расчитывать на без WAITовую обработку запросов от процессора Специалиста.


Переключать прием-передачу все равно придется, что бы зажечь лампочку.Какую лампочку?

vinxru
10.01.2013, 16:11
Светодиоды

Scroll Lock отражает выбранную раскладку.
Caps Lock выведен прямо с Ориона 128. В одной из режимов он меняет автоматом раскладку.

И в режиме программирования контроллера светодиоды последовательно мигают.

caro
10.01.2013, 16:25
Светодиоды
Scroll Lock отражает выбранную раскладку.
Caps Lock выведен прямо с Ориона 128. В одной из режимов он меняет автоматом раскладку.
И в режиме программирования контроллера светодиоды последовательно мигают.Управлять состоянием светодиодов клавиатуры конечно требуется, но думаю это надо делать в то время, когда от самой клавиатуры не ожидается например код отжатой клавиши.

Error404
10.01.2013, 18:07
Caps Lock выведен прямо с Ориона 128. В одной из режимов он меняет автоматом раскладку.


С Ориона выведен светодиод "рус/лат" - это атавизм (как и клавиатура РК и совместимые п\п Монитора), ввести который требовал от авторов ж-л Радио для "сохранения совместимости" (это между совсем непохожими компьтерами).

Использовать этот светодиод для синхронизации каких-то режимов контроллера клавиатуры - ошибка. Очень немногие драйверы клавиатуры из существующих на Орионе этот светодиод правильно выставляют, т.к. (как видимо казалось авторам тех драйверов) одним светодиодом все равно никак не отобразить четыре(!) регистра клавиатуры существующие в 256-символьных кодовых таблицах (KOI-8, CP866 и подобных), а в клавиатуре МС7007 и вообще нет такого светодиода (его линия порта на Орионе занята матрицей клавиатуры).
Т.о. делать переключения QWERTY-ЙЦУКЕН надо так как делал caro - выделенной кнопкой.

vinxru
10.01.2013, 18:24
Т.о. делать переключения QWERTY-ЙЦУКЕН надо так как делал caro - выделенной кнопкой.

И так и так есть.

Scroll Lock последовательно переключает три режима
1) QWERTY
2) JCUKEN
3) автоматический выбор исходя из светодиода рус/лат

kovdry
10.01.2013, 18:45
Думаю открыть по нему тему в соответствующем разделе или нет.


tihsasha, конечно открывайте новую тему про новый РК!
Я думаю, многим будет интересно.
Сейчас происходит реинкарнация РК. Я, например, в свое время не смог изготовить РК самостоятельно, а просто купил его в магазине. Так вот сейчас хочу познать муки сборки и настройки. Конечно, изготавливаю его в несколько измененном виде. Вот моя тема http://zx.pk.ru/showthread.php?t=19685 . Ваша разработка будет интересна и мне, и другим любителям РК.
Так, что выкладывайте, не сомневайтесь.

На этом прекращаю свой оффтоп.
Извините.

Ратмир
19.08.2013, 18:59
Всем привет!
У кого к РК-86 (в оригинальной версии) получилось подключить PS/2?

Vladimir_S
19.08.2013, 21:59
У кого к РК-86 (в оригинальной версии) получилось подключить PS/2?
Контроллер PS/2 работает на РК86 вне зависимости от версии.Если конечно 'монитор' не модифицирован в области опроса клавиатуры.

newold86
28.10.2013, 13:47
Всем здравствуйте !

Очень надеюсь, что кто-то подскажет, в каком направлении копать, а то, взявшись за паяльник и осциллограф первый раз за 20 лет, сразу сложно настроиться на соответствующий лад…

Итак, есть собранный МГТФ’ом 86РК/SRAM по схеме http://radio86rk.pbworks.com Практически все, как в оригинале, только питание от http://www.chipdip.ru/product/ep3041203/

Микросхемы – все отечественные, кроме ROM/RAM/DMA Вроде работает нормально, картинка на телевизоре просто идеальная. Единственное, по питанию заметил осциллографом «шум» с амплитудой около 0.5В, это вообще нормально для такого ?

Теперь о проблеме. Собирать оригинальную клавиатуру было лень, решил использовать завалявшуюся с PS/2 разъемом, плюс интересно было посмотреть на ATMega – в мое время такого не было :)

С вытащенной ATMega все вроде нормально PA0 – PA7 опрашивают клавиатуру, как и положено. Со вставленной ATMega при включении питания тоже сначала все выглядит нормально – светодиоды на клавиатуре загораются и гаснут первый раз, потом проделывают это еще раз. Правда, где-то я встречал упоминание, что это должно происходить с интервалом 0.5 с, у меня же интервал заметно больше (наверное, секунды 3). Мало того, и дальше все еще не окончательно плохо – в принципе, клавиатура даже работает, но частично – работают те кнопки, которые в оригинальной клавиатуре висят на PA7. Также работает reset (через PrtScn). Нажатие на ScrLk и NumLock переключает соответствующие светодиоды на клавиатуре, но больше никакой реакции на них не заметил (правда, пока даже не стал смотреть, что именно они делают).

Странное обнаружилось, когда я начал смотреть, что же происходит на PA0 – PA7. Со вставленной ATMega после ее инициализации эти линии сбрасываются в 0 (написал – засомневался, так как смотрел в 3 часа ночи, и сейчас думаю – 0, или все-таки 1 ? Уточню только вечером) и больше на них ничего не происходит. Такое впечатление, что соответствующие выводы ATMega работают не в режиме ввода, а в режиме вывода, и устанавливают соответствующий уровень, который ВВ55 «прокачать» уже не может.

Еще более странное (на мой взгляд) то, что если нажать любую клавишу на клавиатуре, то линии PA0 – PA7 начинают работать ! Но при этом, как уже говорил раньше, все равно компьютер видит только кнопки с линии PA7.

Еще нюанс – даже частично работает не всегда. Иногда после включения питания не работает вообще (хотя светодиоды на клавиатуре мигают во время инициализации нормально), иногда перестает работать после нескольких нажатий на клавиши.

Посмотрел fuses – вроде все нормально, на всякий случай поигрался с DIV и BOD. Особой разницы вроде нет, хотя с некоторыми значениями BOD вроде перестает работать вообще. Сменил ATMega – разницы нет.

Как говорится, и фары протер, и колеса попинал, а она все равно не едет. Может, подскажете какие-нибудь идеи, буду очень благодарен !

caro
28.10.2013, 15:24
С вытащенной ATMega все вроде нормально PA0 – PA7 опрашивают клавиатуру, как и положено. Со вставленной ATMega при включении питания тоже сначала все выглядит нормально – светодиоды на клавиатуре загораются и гаснут первый раз, потом проделывают это еще раз. Правда, где-то я встречал упоминание, что это должно происходить с интервалом 0.5 с, у меня же интервал заметно больше (наверное, секунды 3).Похоже CLKDIV8 не сброшен (установлен в 0) тоесть контроллер работает на частоте 1 МГц.

newold86
28.10.2013, 15:32
Похоже CLKDIV8 не сброшен (установлен в 0) тоесть контроллер работает на частоте 1 МГц.

У самого такая первая мысль была (когда прочитал, что такое fuses), поэтому первым делом попробовал и сбрасывать, и ставить обратно...

caro
28.10.2013, 15:52
У самого такая первая мысль была (когда прочитал, что такое fuses), поэтому первым делом попробовал и сбрасывать, и ставить обратно...
Не надо перебирать все возможные значения FUSES.
Ставить надо так.

FUSES для ATMega48
в контроллере PS/2 клавиатуры для Ориона:
-------------------------------------
Name ! Default ! SET ! MODE
-------------------------------------
CKSEL0 ! on ! on !\
CKSEL1 ! off ! off ! > - внутренний генаратор 8 Мгц.
CKSEL2 ! on ! on ! /
CKSEL3 ! on ! on !/
SUT0 ! on ! on !
SUT1 ! off ! off !
CKOUT ! off ! off ! Выход Clk отключен
CKDIV8 ! on ! off ! Делитель на 8 отключен
BODLEVEL0 ! off ! on !\
BODLEVEL1 ! off ! on ! > - 4.3 V
BODLEVEL2 ! off ! off !/
EESAVE ! off ! off !
WDTON ! off ! off ! Watch Dog отключен
SPIEN ! on ! on ! Всегда должен быть '0'
DWEN ! off ! off ! Отладка отключена
RSTDISBL ! off ! off ! Вход /RST как СБРОС
SELFPRGEN ! off ! off !
---------------------------------------
Надо учесть, что off означает "1" on "0".

newold86
28.10.2013, 16:03
Наверное, я не совсем ясно выразился. Я не перебирал все значения fuses :), изначально выставил именно так, как было указано в комментариях к Вашей прошивке. Просто потом еще немного поэкспериментировал с BODLEVEL, заодно и с CKDIV8 (меня немного смутила логика моего программатора, где указано, что "галочка" - это ноль, так что хотел быть уверен, что это проверено).

newold86
28.10.2013, 20:48
Что-то я совсем в растерянности... Посмотрел - как и говорил, линии PA0 - PA7 устанавливаются в 0, и начинают работать только при нажатых клавишах.

Время между миганиями светодиодов на клавиатуре - около 3.5 - 4.0 с, причем не зависит от того, выставлен или нет CKDIV8. На всякий случай, попробовал другую ATMega - никакой разницы в поведении...

newold86
29.10.2013, 00:06
Блин !!! После нескольких часов разбирательств, перепайки ВВ55 (показалось, что все-таки проблема там), я обнаружил, что просто не умею пользоваться программатором !!! Просто увидел его (этот программатор) только вчера, и это был мой первый опыт работы с ATMega. Оказалось, что fuses нужно программировать отдельно от основной прошивки. А я считал, что кнопка "Программирование" прошивает сразу все, что я установил (и прошивку, и fuses).

caro был совершенно прав, когда первым делом предположил, что дело в частоте тактового генератора. У меня тоже такие мысли были - много чего на это наталкивало, но я смотрел на fuses и видел, что там все правильно (на самом деле, смотрел не на считанное из микросхемы, а на то, что до этого сам установил - считывать их тоже нужно отдельно).

Так что извините за беспокойство, все работает !

caro
29.10.2013, 09:11
Так что извините за беспокойство, все работает !Поздравляю!

andykarpov
12.11.2014, 01:06
Господа, а это только у меня на Радио-86РК не работают курсорные кнопки, функциональные и ESC, или у всех так ?
У меня вместо курсора нажимаются 2,4,6,8.

Клавиатура - Genius KB-220e.
Вроде самая обычная.

Контроллер - Atmega48PA, прошивка - из первого поста orkb_01d.zip.
Фьюзы правильные.

caro
12.11.2014, 09:35
Господа, а это только у меня на Радио-86РК не работают курсорные кнопки, функциональные и ESC, или у всех так ?
У меня вместо курсора нажимаются 2,4,6,8.

Клавиатура - Genius KB-220e.
Вроде самая обычная.

Контроллер - Atmega48PA, прошивка - из первого поста orkb_01d.zip.
Фьюзы правильные.Раскладка клавиатуры настраиваемая.
Можешь сделать раскладку так, как тебе желательно.
Посмотри, отредактируй и скомпилируй файл TABKBD_O.ASM
Пришей получившийся файл к прошивке (он текстовый) и наслаждайся :)
Или спроси, может кто-нибудь уже сделал это.

Error404
12.11.2014, 10:00
Господа, а это только у меня на Радио-86РК не работают курсорные кнопки, функциональные и ESC, или у всех так ?
У меня вместо курсора нажимаются 2,4,6,8.

Клавиатура - Genius KB-220e.
Вроде самая обычная.

Контроллер - Atmega48PA, прошивка - из первого поста orkb_01d.zip.
Фьюзы правильные.

Не припоминаю такого поведения.
Хотя у меня прошита другая прошивка - с правленой русской раскладкой (http://zx-pk.ru/showpost.php?p=178897&postcount=9) (во вложении)

Единственный недочет на ней был - какая-то клавиша была незамаплена (ПС вроде), остальные все были на правильных местах.

andykarpov
12.11.2014, 17:09
Не припоминаю такого поведения.
Хотя у меня прошита другая прошивка

Странно. Влил эту новую прошивку - поведение не изменилось.
Попробую ее на другой железке, например на maximite или на speccy2010, отпишусь о резульататах. Но все же есть подозрение на какую-то кривость моей имплементации на Atmega48..

---------- Post added at 16:09 ---------- Previous post was at 14:57 ----------

С клавой все ок, на остальном железе работает как надо...

caro
12.11.2014, 19:53
С клавой все ок, на остальном железе работает как надо...Кажется я знаю в чем проблема. Всё таки попробуй поменять клавиатуру.
У меня с одной клавой такая же проблема была, связанная с неполной реализацией в ней режима Scan code 3, в который переключается клава.

andykarpov
12.11.2014, 21:01
Кажется я знаю в чем проблема. Всё таки попробуй поменять клавиатуру.
У меня с одной клавой такая же проблема была, связанная с неполной реализацией в ней режима Scan code 3, в который переключается клава.

Лучше я попробую новую прошивку для контроллера написать :)))
Клавы другой нету чтобы проверить, сорри. Только USB с USB-хабами, она в режиме PS/2 не работает :(

Вопрос: а чем было вызвано использование именно ScanCode Set 3, а не 2 ?
Тут читаю http://www.win.tue.nl/~aeb/linux/kbd/scancodes-10.html, пишут то, что многие клавы просто не поддерживают 1 и 3 или имеют баги в этих set'ах, а вот ScanCode Set 2 поддерживают большинство на ура :)

caro
12.11.2014, 21:15
Лучше я попробую новую прошивку для контроллера написать :)))
Клавы другой нету чтобы проверить, сорри. Только USB с USB-хабами, она в режиме PS/2 не работает :( Желаю успеха.


Вопрос: а чем было вызвано использование именно ScanCode Set 3, а не 2 ?В однозначном соответствии нажатой клавиши её скан-кода.


Тут читаю http://www.win.tue.nl/~aeb/linux/kbd/scancodes-10.html, пишут то, что многие клавы просто не поддерживают 1 и 3 или имеют баги в этих set'ах, а вот ScanCode Set 2 поддерживают большинство на ура :)Мне в основном попадались клавиатуры с правильной поддержкой Scan code 3.
Только одна попалась кривая.

Vasil
17.11.2014, 18:19
Последняя прошивка версии 01d работает как надо (меня пока все устраивает). Не говорю "идеально" чтобы не сглазить. :v2_biggr:

Камиль, еще раз спасибо! :v2_cheer:

На моей страничке в разделе "Картинки" краткий фотоотчет о проделанном. :)
Кстати, вот может кому-то понадобится, кто будет к реальному Ориону подключать:



Соотвествие контактов разъема X3 схемы адаптера PS/2 клавиатуры
контактам разъема Х4 (ППА клавиатуры) Ориона-128.


Х3.1 = X4.C10
Х3.2 = X4.C10 (рекомендую вывести на С9, который включить параллельно С10)
Х3.3 = X4.B1
Х3.4 = X4.B2
Х3.5 = X4.B3
Х3.6 = X4.B4
Х3.7 = X4.B5
Х3.8 = X4.B6
Х3.9 = X4.B7
Х3.10 = X4.B8
Х3.11 = X4.A1
Х3.12 = X4.A4
Х3.13 = X4.A3
Х3.14 = X4.A4
Х3.15 = X4.A10
Х3.16 = X4.A10 (рекомендую вывести на A9, который включить параллельно A10)
Х3.17 = X4.A5
Х3.18 = X4.A6
Х3.19 = X4.A7
Х3.20 = X4.A8
Х3.21 = X4.B9
Х3.22 = X4.C7
Х3.23 = X4.C8
Х3.24 = X4.C6

Нумерация разъема Х4 приводится в соответствии с принципиальной схемой Ориона-128, опубликованной в журнале Радио N1 за 1990г.


А есть в природе отдельная схемка контроллера ps2-клавы для подключения к орион-про (порт X2) ? Или может распределение пинов от ps2-платы к вышеназванному порту X2 ?. А то достал на днях свой "ПРО" понастальгировать и на МС7007 часть клавиш уже не работает (от времени наверно, покупал ее еще для орион-128 в году этак 91-92-м).

Error404
18.11.2014, 00:27
А есть в природе отдельная схемка контроллера ps2-клавы для подключения к орион-про (порт X2) ? Или может распределение пинов от ps2-платы к вышеназванному порту X2 ?. А то достал на днях свой "ПРО" понастальгировать и на МС7007 часть клавиш уже не работает (от времени наверно, покупал ее еще для орион-128 в году этак 91-92-м).

Хм, к Ориону-ПРО полностью аналогично подключали как и к Ориону-128, к тем же выводам ВВ55 (а уж по линиям порта - тут не помогу, плату нового ПРО разводили сразу с адаптером PS2, без разъема X2). Вариант РК-86, естественно.

Vasil
18.11.2014, 12:13
Хм, к Ориону-ПРО полностью аналогично подключали как и к Ориону-128, к тем же выводам ВВ55 (а уж по линиям порта - тут не помогу, плату нового ПРО разводили сразу с адаптером PS2, без разъема X2). Вариант РК-86, естественно.

Сейчас на работе перепаял три проводка, что идут от клавы на порт "C" ВВ55, были неверно распаяны - теперь все клавиши на клаве работают :)
А до этого, даже рабочие, некоторые клавиши выдавали неверный код, что и натолкнуло меня на проверку распайки порта X2. Разъем у клавы был когда-то отрезан, поэтому распаивал неделю назад (после 20-ти летнего перерыва).

makaroff
14.02.2015, 17:57
А-А-А-а-а-а!!! Помогите!! Весь моск поломал! Не могу понять что за хрень творится. Вроде всё правильно спаял. Тестером прозвонил - всё как по схеме. Залил HEX c помощью SinaProg через ArduinoISP. Верефи ОК! Фьюзы поменял. Включаю 86РК - на клаве загораются все 3 светика, затем два гаснут, а намлок горит ещё полсекунды. Вроде всё ок. Но не печатает!

ЗЫ клава прекрасно работает на Leningrad-2012 через "KEYB&SINC"

makaroff
26.02.2015, 19:41
В общем интересная петрушка... PC-клавиатура криво, но заработала. А точнее... чтобы клаву запусить нужно провести шаманский обряд:
1. Включаю РК с подключенной через адаптер клавой. На клаве загараются и тухнут светодиоды; намлок естественно с задержкой.
2. Далее вытаскиваю клаву из разъёма и вставляю назад. Ещё раз и ещё, до момента пока светодиоды опять невспыхнут. Если вспыхнули на одном из переподключений, то с вероятностью 80% клава будет работать вплоть до следующего обесточивания РК.

Подскажите люди добрые - чего телать то? Куды копать?

andykarpov
26.02.2015, 21:48
В общем интересная петрушка... PC-клавиатура криво, но заработала. А точнее... чтобы клаву запусить нужно провести шаманский обряд

А клава случайно не USB-шная через USB-to-PS/2 переходник ?
У меня такая же фигня есть с одной такой вот USB клавиатурой, нужно дергать разъем туда-сюда, пока на ней светодиоды не мигнут, что означает то, что она наконец-то проинициализировалась :)

Ewgeny7
26.02.2015, 23:23
Подскажите люди добрые - чего телать то? Куды копать?
После подачи питания ПС/2 клава ДОЛЖНА моргнуть светиками. Отсюда и копаем, что там с питанием? Шинку потолще проложить? Напругу померить?

makaroff
27.02.2015, 13:48
нужно дергать разъем туда-сюда, пока на ней светодиоды не мигнут, что означает то, что она наконец-то проинициализировалась :)

После подачи питания ПС/2 клава ДОЛЖНА моргнуть светиками. Отсюда и копаем, что там с питанием? Шинку потолще проложить? Напругу померить?
Дак в том то и дело! После включения компа клава моргает, но на кнопки не реагирует. А начинает работать, только если её попередёргать 3-4 раза. При этом на Leningrad2012 c переходником ZX-kit эта клава работает прекрасно.
Собран переходник целиком и полностью по схеме Caro. Единственно вместо электролита запаял выводной тантал. Но подвешивал поверх него электролит - ситуация, понятно, не менялась.

Ewgeny7
28.02.2015, 19:39
Подтяжка сигналов клавиатуры в порядке? (два резистора).
Нога микроконтроллера RESET подтянута к + питания?

andykarpov
13.03.2015, 22:23
В общем интересная петрушка... PC-клавиатура криво, но заработала. А точнее... чтобы клаву запусить нужно провести шаманский обряд:
1. Включаю РК с подключенной через адаптер клавой. На клаве загараются и тухнут светодиоды; намлок естественно с задержкой.
2. Далее вытаскиваю клаву из разъёма и вставляю назад. Ещё раз и ещё, до момента пока светодиоды опять невспыхнут. Если вспыхнули на одном из переподключений, то с вероятностью 80% клава будет работать вплоть до следующего обесточивания РК.

Подскажите люди добрые - чего телать то? Куды копать?

Вопрос: а туда, куда клава втыкается, стоят подтяжки на линиях PS2_CLK и PS2_DATA ? Буквально сегодня столкнулся с этой проблемой опять, когда USB клавиатура не хотела запускаться в режиме PS/2 через переходник. Оказывается подтяжек не было, а они нужны контроллеру клавиатуры определиться, в каком режиме ей работать - в USB или PS/2 :)

Stampmaker
11.10.2015, 12:15
При вставленном контроллере не идет тест озу 256к и не работает чтение с магнитофона.
При вытащенном контроллере тест проходит.
Так и должно быть или у меня на плате косяк?

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

HardWareMan
11.10.2015, 19:36
Клавиатура Vinxru? Если да то она магнитофон занимает вроде.

Stampmaker
11.10.2015, 22:54
Нет, контроллер от Caro

Denn
25.01.2016, 13:49
Доброго времени суток!

Пытаюсь осваивать клавиатуру PS/2 через МК в качестве РК86'ой. Такой вариант у меня на Орионе-ПРО.
Столкнулся с некоторыми непонятками. Может кто-то сможет прояснить.

1). Наибольшее недоумение вызвал код, который возвращает п/п Монитора при нажатии на клавишу "Page UP" - 12h. Среди управляющих кодов такой не используется в Орионе. Но наверняка он туда повешен с каким-то смыслом... с каким?

2). Клавиша "Page Down" по смыслу должна выполнять функцию, аналогичную клавише "СТР"... но у меня она почему-то выдаёт код 03h - код клавиши "F4" (выход из программ). С какой целью? Или у меня что-то неверно работает?

3). Клавиша "Delete". По смыслу она должна выполнять то, что происходит по нажатию клавиши "Ф2" на клавиатуре РК86 - удаление символа под курсором. По факту у меня высекается код 07h (Bell, aka "звонок"). Какова цель? Озвучка нажатий этим Bell'ом и так есть по-умолчанию..

4) Клавиша "*" на дополнительной клавиатуре выдаёт ";". Это у всех так?

П.С. проверить коды, выдаваемые клавиатурой проще всего можно в популярной утилите M128$ - выбрать пункт "HEX", затем нажать нужную клавишу и "Enter".

caro
25.01.2016, 15:27
Никакого тайного смысла нет. Я же писал в первом посте,
что раскладка была сделана предварительная.
Я рассчитывал, что реальные владельцы Орионов, РК86 и других компов сами отредактируют
раскладку для удобства работы. У меня этих компов нет :)

cy6
29.01.2016, 12:59
Добрый день!

У меня заводской клон РК - КР02/03, с клавиатурой МС7007. Матрица у этой клавиатуры 11 * 8 (плюс Reset отдельно), а не 8 * 8 + УС + СС + РУСЛАТ. Как я поняла, текущая прошивка несовместима с этой матрицей. Номер строки (d5..d3) занимает три бита, и выходы УС/СС/РУСЛАТ работают как отдельные кнопки, а не как дополнительные линии считывания.
Теоретически наверное возможно сделать номер строки четыре бита, и выходы УС/СС/РУСЛАТ сделать KD08/KD09/KD10, без серьезных переделок? Кроме того, с клавишей "Scroll Lock" интересный момент. Производители любят на эту кнопку что то вешать, у меня подсветка клавиатуры включается аппаратно этой кнопкой. Неплохо бы иметь возможность заменить в прошивке сканкод "Scroll Lock" на любую похожую. Хотя, это не так критично.

Исходник прошивки я не нашла. Редактирование файла TABKBD_O.ASM как я поняла, мне не поможет (для совместимости с МС7007). Помогите пожалуйста. :)

Error404
29.01.2016, 16:08
cy6, переделать прошивку для матрицы 11 * 8 (если это возможно), сможет только автор адаптера - caro. Редактировать матрицу кнопок тут действительно бессмысленно, а исходников прошивки он не раскрывал. Как вариант - использовать в КР02 Монитор от РК-86 и подключить адаптер к ВВ55 совместимо с РК-86. Если конечно такое возможно. Использование параллельно адаптера и клавишей от MC7007 в этом случае, понятно, исключено (для РК/РК - возможно, с развязкой на диодах).

cy6
29.01.2016, 17:46
переделать прошивку для матрицы 11 * 8 (если это возможно), сможет только автор адаптера - caro. Редактировать матрицу кнопок тут действительно бессмысленно, а исходников прошивки он не раскрывал.
Насколько я поняла, Камиль читает эту тему. Писала как раз для него. Видела много вариантов его прошивки для самых разных клавиатур (Сура, MSX).
Совсем отказываться от МС7007 (или иными способами ломать работающий заводской компьютер) не вариант. Я знаю про возможность использовать другой монитор, использую свой собственный мод-монитора.
Есть еще прошивка Алексея с исходниками (для Mega16), но сигнал WR пока боязно использовать. Буду ждать и надеяться. :)

Error404
29.01.2016, 18:33
У меня у самого на Орионе образца 90х клавиатура МС7007 (в корпусе от УКНЦ). Клавиатура пленочная, давно окислилась и не работает. Но поскольку всегда была подключена к матрице 8х8(+3ctrl) аналогичной PK по линиям порта ВВ55 (только программно сканировалась чуть сложнее - кнопок же больше), то переделка с адаптером Камиля не составила проблем. Была на Орионе и схема с 8х11, но у меня она не прижилась.

caro
29.01.2016, 19:05
Буду ждать и надеяться. :)Хотелось бы схему подключения получить. И желательно процедуру опроса клавиатуры.

cy6
31.01.2016, 06:08
Вот, пожалуйста.

Схема подключения к DD20
http://c6lab.org/caro/kr03-dd20.jpg
Матрица клавиатуры MC7007
http://c6lab.org/caro/kr03-kbd_ms7007.jpg
Подпрограммы чтения клавиатуры МС7007 из монитора
http://c6lab.org/caro/kr03kbd_prog.asm

На схеме заводской есть ошибки, на самом деле ноги DD20 - PC5, PC6, PC7 никуда не подключены (в отличии от оригинального РК, в котором это УС, СС, РУСЛАТ). Шина адреса (порт A) восемь линий, шина данных (порт B) 11 линий, но используется 8 битов порта B и все.
С 1-8 линии все стандартно, как я понимаю. Далее, идет комбинация: 9 линия (PB0 + PB1), 10 линия (PB0 + PB2), 11 линия (PB0 + PB1 + PB2).
Защита на последних диодами. Если я не ошибаюсь, можно смело игнорировать эту особенность и рассматривать шину как полноценную 8 * 11, п/п в мониторе сама разберется.

DDp
31.01.2016, 11:51
Матрица клавиатуры MC7007
Вот, та же информация, в другом виде Keyboard_MC7007_*.* (https://yadi.sk/d/wOQtf702iUHWt/Elektronika%20KR-02%20%28Ul%27yanovsk%29)

использую свой собственный мод-монитора.
Hint: клавиша [ Ъ _ ] выдает пробел. Если заменить в мониторе код 20h на 5Fh по адресу FEE6h, то будет генерироваться подчёркивание.

.DB 036H, 047H, 04FH, 058H, 02EH, 05FH, 02DH, 037H

cy6
01.02.2016, 13:48
Хороший сборник информации. :)
П/п ввода с клавиатуры я не меняла, все как было из коробки.

Подытожив всю собранную информацию (включая результат разбора кодов п/п), получила вот такую матрицу:
55825

caro
01.02.2016, 17:11
Подытожив всю собранную информацию (включая результат разбора кодов п/п), получила вот такую матрицу:
55825Вот за это спасибо, а то я по выложенным картинкам с трудом пытался собрать такую таблицу.

Denn
17.02.2016, 11:47
caro, доброго дня.
Пытаемся с товарищем переделать раскладку, столкнулись с трудностью. Возможно ли переопределять т.н. "прямопроводные" клавиши: "РУС/LAT", "УС" и "СС" ?
А именно, требуется вот что сделать: повесить "РУС/LAT" на клавиши "Alt" (обе, правую и левую), а клавиша CapsLock чтобы имитировала одновременное нажатие "СС" и "РУС/LAT". Возможно такое сделать?

П.С. "СС" - это которая "шифт" :) (в терминах клавы РК86)

caro
17.02.2016, 13:20
Возможно ли переопределять т.н. "прямопроводные" клавиши: "РУС/LAT", "УС" и "СС" ?
А именно, требуется вот что сделать: повесить "РУС/LAT" на клавиши "Alt" (обе, правую и левую), а клавиша CapsLock чтобы имитировала одновременное нажатие "СС" и "РУС/LAT". Возможно такое сделать?Сделать это можно только модификацией кода прошивки, что мне не очень нравится, поскольку
не ясно, нужно ли это остальным потенциальным пользователям прошивки.
Давайте так, я сейчас выложу переделанную под ваши пожелания прошивку, только скажите под какой МК она нужна.
И подумаю, как сделать вариант прошивки с настройкой т.н. "прямопроводных" клавиш: "РУС/LAT", "УС" и "СС"

Denn
17.02.2016, 13:31
поскольку не ясно, нужно ли это остальным потенциальным пользователям прошивки

Идея как раз в том, что со старым вариантом конфликтов нет! Для стандартного софта РК86 и Ориона CapsLock по-прежнему будет переключать язык (добавка "СС" этому не помешает), просто появится дополнительная возможность переключать язык альтами (они никак не задействованы, т.е. конфликта также не будет).

П.С. в симуляторах на писи "РУС/LAT" также повешен на Alt, это как-то логично, имхо ;)



Давайте так, я сейчас выложу переделанную под ваши пожелания прошивку, только скажите под какой МК она нужна.

ATmega48-20PU, вот такой - http://www.chipdip.ru/product/atmega48-20pu/



И подумаю, как сделать вариант прошивки с настройкой т.н. "прямопроводных" клавиш: "РУС/LAT", "УС" и "СС"

Это было бы хорошо!

caro
17.02.2016, 14:31
ATmega48-20PUВот качай и пробуй, мне к сожалению не на чем:
56059
В архиве только кодовый блок, не забудь к нему добавить блок раскладки клавиатуры.

Denn
17.02.2016, 17:09
Камиль, огромное спасибо! Оперативно и всё в лучшем виде!

DIMKA55
17.02.2016, 17:50
Камиль, если не трудно, можно и под атмегу328 скомпилировать?

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

Камиль, можно и под атмегу328 скомпилировать? Если не трудно...

caro
17.02.2016, 21:05
можно и под атмегу328 скомпилировать? Если не трудно...Не трудно:
56065
Подходит под ATMega168/328
И тоже не забудьте добавить блок раскладки клавиатуры.

Stampmaker
18.02.2016, 06:07
DIMKA55, вот полная прошивка для 328 56066

DIMKA55
18.02.2016, 06:15
Благодарю

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



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

Спасибо,;)

Denn
18.07.2016, 12:15
caro, доброго дня.

В процессе активной эксплуатации последней прошивки возникли некоторые вопросы:

1) Нестабильная работа в ПРК "ОРИОН-ПРО" (тактовая частота ЦПУ - 10 МГц, обращения к порту клавиатуры аппаратно вэйтятся).
У меня проявляется следующим образом. Если зажать клавишу "стрелка вверх" (код 19h) или "стрелка вниз" (код 1Ah), и держать некоторое время неотпуская, т.е. пользоваться автоповтором, то иногда срабатывают нажатия "левых" клавиш. Например, мне надо переместиться вверх по тексту, зажимаю стрелку вверх, курсор бежит по строкам и в случайном месте в текст вставляется цифра "7". Заметил, что в основном "глюк" проявляется именно на стрелках, и фантомные символы обычно "7" или "9".
Иногда наблюдается ложное срабатывание автоповтора. Стандартно, когда зажимаем надолго клавишу, то сперва печатается один символ, а автоповтор начинает работать через некоторое время. Когда случается глюк, то после нажатия на клавишу моментально начинается автоповтор.
Тот же самый МК с той же самой прошивкой в Орионе-128 (CLK=2,5 МГц) работает нормально, вышеуказанных глюков не наблюдается.

2) У коллеги на Орионе-ПРО данная прошивка вообще не заработала (нет реакции на нажатия клавиш), при этом старая работает нормально. Физически чип МК один и тот же, пробовал несколько раз прошивать старую/новую/etc. каждый раз старая работает ок, новая - нет. Перевод клока ЦПУ на 5 МГц никак не влияет на ситуацию ((

3) "Залипание" шифта. Данный баг проявляется на любом Орионе, независимо от ЦПУ и его клока. Суть проблемы: в новой раскладке мы используем сочетания клавиш вида Shift+<клавиша>, комбинация отрабатывается корректно, но после такого нажатия в МК как бы залипает Shift, т.е. мы уже отпустили все клавиши, а последующие нажатия на символьные клавиши выдают код, как будто мы удерживаем Shift. Нажатие и отпускание клавиши Shift устраняет залипуху.

Возможно это исправить?

Дмитрий2012
18.07.2016, 18:18
У коллеги на Орионе-ПРО данная прошивка вообще не заработала (нет реакции на нажатия клавиш), при этом старая работает нормально.
Уточню, на четыре клавиши реакция все-же есть. При нажатии CapsLock, ScrollLock, NumLock светодиоды на клаве загораются и тухнут, при нажатии PrintScreen как и положено происходит сброс компьютера.

Stampmaker
18.07.2016, 20:10
Уточню, на четыре клавиши реакция все-же есть. При нажатии CapsLock, ScrollLock, NumLock светодиоды на клаве загораются и тухнут, при нажатии PrintScreen как и положено происходит сброс компьютера.

эти нажатия к прошивке не привязаны. они в клавиатуре работают сами по себе (достаточно подать на неё питание).

Denn
19.07.2016, 13:20
эти нажатия к прошивке не привязаны. они в клавиатуре работают сами по себе (достаточно подать на неё питание).

Всё же не так. Управление светодиодами клавиатуры осуществляется с помощью команд от МК, а имитация аппаратного сброса ПРК также выполняется МК. Т.е. работа четырёх клавиш говорит о том, что МК прошит корректно и программа в нём работает (обрабатываются SCAN-коды от клавы, выдаются коды управления в клаву и по нажатию PrnScr коротится линия /RESET). А вот с обработкой шин матрицы эмулируемой клавиатуры какие-то проблемы ((

Trol73
24.07.2016, 14:28
Да простит меня уважаемый caro, но я начал потихоньку дизассемблировать его прошивку контроллера. Подключил один контроллер к пентагону и один к 86РК, заметил некоторые проблемы, причины которых трудно было понять без исходников.

Сейчас, посмотрев на код, в глаза бросилась следующее:
1. хорошо бы задействовать WDT
2. не все клавиатуры поддерживают скан-коды set 3, microsoft вообще удалила эту таблицу из своей документации объявив её поддержку для разработчиков клавиатур необязательной. хорошо бы сменить set 3 на 1 или 2 (а ещё лучше - иметь возможность выбора на этапе компиляции).
3. при работе с клавиатурой лучше проверять бит чётности

Буду потихоньку допиливать.
Исходники тут:
https://github.com/trol73/avr-86rk-ps2-keyboard-controller

bigmal
25.07.2016, 07:10
За выложенные исходники автор может законно осерчать. Мне так кажется. Хотя на его месте уже бы отдал он своё творение в свободное плавание :) :) :)

Denn
25.07.2016, 11:18
bigmal, тут скорее радоваться надо, а не серчать. Чтобы в наше время возникло желание хакнуть что-то от 8-биток, это "что-то" должно быть ну очень клёвое и как минимум интересное большому кол-ву народу.

OrionExt
25.07.2016, 22:59
Я так понял для Орион-128 рев. 512 схему брать из первого поста. А прошивку для mega48 то же от туда?

Denn
25.07.2016, 23:57
OrionExt, последний вариант со всеми "плюшками" тут - http://zx-pk.ru/threads/21984-dsdos-dlya-prk-quot-orion-128-quot.html?p=858035&viewfull=1#post858035

OrionExt
26.07.2016, 00:00
OrionExt, последний вариант со всеми "плюшками" тут ...
Вот спасибо. Будем тестить;)

OrionExt
30.07.2016, 18:49
Быстрый отчет. Прошивки проверялись в Монитор -1. Контроллер Atmega48PA-PU. Клавиатура Mitsumi KFK-EA4SA.

Прошивка orkb_021.hex.
Кнопка PrintScreen (Сброс) - работает. На нажатие клавиш не реагировала.

Прошивка orkb_01d.hex.
Кнопка PrintScreen (Сброс) - работает. При нажатии клавиш на экране появлялись соответственные символы.

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

Выложите, пожалуйста, orkb_021.hex в формате bin. Что-то мне hex файл не нравится. И программатор TL866A ругнулся при открытии hex-а. Похоже, таблица с привязками клавиш отвалилась при открытии файла в программаторе.

Stampmaker
30.07.2016, 19:32
Выложите, пожалуйста, orkb_021.hex в формате bin. Что-то мне hex файл не нравится. И программатор TL866A ругнулся при открытии hex-а. Похоже, таблица с привязками клавиш отвалилась при открытии файла в программаторе.

Не представляется возможным.
Caro дал только hex.

OrionExt
30.07.2016, 22:25
Освежил в голове информацию о формате hex. Подправил файл прошивки orkb_021.hex.
01 строка: 020000020000FC удалена. Для atmega48 избыточная информация о записи адреса сегмента.
54 строка: 00000001FF удалена. Преждевременная запись о конце файла.
Исправленный файл: 57690

Завтра проверю. Уверен все будет нормально.

Дмитрий2012
30.07.2016, 22:55
Исправленный файл: orkb_021.zip
Проверил:) У меня клавиатура с этой прошивкой заработала!!! Спасибо.

OrionExt
31.07.2016, 13:53
Исправленный файл: 57690

Проверил. Работает. Кнопки "жмакаются", как задумано в прошивке:)
Вот еще установка фьюзов для TL866A. Красным подчеркнуто то, что нужно изменить от дефолтных значений.

Error404
31.07.2016, 14:16
добавил в первый пост

cy6
07.10.2016, 01:27
Да простит меня уважаемый caro, но я начал потихоньку дизассемблировать его прошивку контроллера.


Чтобы в наше время возникло желание хакнуть что-то от 8-биток, это "что-то" должно быть ну очень клёвое и как минимум интересное большому кол-ву народу.

Действительно, клевое и качественное. Очень рада возможности узнать, как оно работает изнутри. Даже интерес к ассемблеру AVR появился. :)
Примеров в сети на Си полно, но тут случай особый.

А сканкоды клавиш "встроенных" (вне таблицы), любой желающий может изменить на свой вкус прямо в блокноте.
Нужно всего лишь список сигнатур составить по лист-файлу, для возможности правки hex файла. :)
И совсем необязательно разработчика (caro) из за такой мелочи беспокоить. :)

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

Вот простой пример.
Открываем в блокноте файл orion_kb.hex и ищем сигнатуру "5F3529F4". Меняем сканкод "5F" клавиши "Scroll Lock" на любой желаемый из таблицы AT Keyboard Scan Codes (Set 3) (http://www.computer-engineering.org/ps2keyboard/scancodes3.html). При замене сканкода 5F (Scroll Lock) на сканкод 62 (Pause), получим измененную сигнатуру "523629F4". Хотя, блин придется еще контрольную сумму блока пересчитать. :) Но эту проблему решает avr-objcopy, надо батник написать для простого использования, не требующего никаких знаний. :)

;Reversed by Trol73
.equ KEY_SCROLLLOCK = 0x5F
...
C:000062 355f cpi r21, KEY_SCROLLLOCK
C:000063 f429 brne check_code_6

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


Выложите, пожалуйста, orkb_021.hex в формате bin.
Это делается вот так.

avr-objcopy -I ihex -O binary orkb_021.hex orkb_021.bin

01 строка: 020000020000FC удалена. Для atmega48 избыточная информация о записи адреса сегмента.
54 строка: 00000001FF удалена. Преждевременная запись о конце файла.

Первая и последняя строки несут служебную информацию. Наличие первой строки необязательно. Система AVR Studio при трансляции программы всегда добавляет в hex-файл первую строку именно такого содержания. Последняя строка — это стандартный конец для любого hex-файла.

Утилиту avr-objcopy можно скачать например тут, в составе ардуино студии (https://www.arduino.cc/en/Main/Software). Или в составе продуктов Atmel. Ну или если совсем лень, то вот 58459. :)

cy6
24.11.2016, 01:06
Первый раз собирала этот замечательный контроллер на макетке.

http://c6lab.org/photos/rk/IMG_20160703_215159.jpg

http://c6lab.org/photos/rk/IMG_20160703_215208.jpg

Снова резать "весь этот мгтф" и опять держать все дорожки в уме, желания совсем не возникало. Но второй контроллер был нужен, и я нарисовала плату в Sprint Layout. Не только нарисовала, но и сделала. :) Заодно поучилась ЛУТу и приготовлению блюда из розе со вкусом лимона, на кухонной плите.

Может быть кому пригодится готовое работающее решение для односторонней платы с десятью перемычками. :)
Проект для SL6 keyb-mega48.rar (https://vk.com/doc-131665221_439123996)
Фото готовой платы (https://pp.vk.me/c836220/v836220851/d9fa/fqYkcrD8CcA.jpg)

tnt23
24.11.2016, 13:35
cy6, шикарно. Можно попросить выложить рисунок печатной платы в PDF?

Trol73
25.11.2016, 11:11
Вот ещё до кучи мой вариант платы.
Проект в EasyEDA: https://easyeda.com/editor#id=a808dbe09efb4b2186916eaf71b7b540

https://easyeda.com/normal/RK86_keyboard_controller-nNHZSa4KE.png

И в сборе
https://img-fotki.yandex.ru/get/28072/43858751.0/0_1c12fb_66d1ceb4_L.jpg

Только есть косяк в подписях выводов МК на шелкографии

cy6
25.11.2016, 13:18
Вот ещё до кучи мой вариант платы.
Под провода без разъема? Мне кажется, тем более можно было обойтись односторонней разводкой.
Маска и шелкография красивые. Как она наносилась, через сетку? Вроде бы, другие варианты приводят к неравномерному покрытию и пятнам.


Можно попросить выложить рисунок печатной платы в PDF?
Для распечатки под ЛУТ? 58811

P.S. Кстати, AVR-ICSP разъем внутрисхемного программирования не стала делать сознательно. При наличии панельки для меги (съемный чип), это не важно.

Trol73
25.11.2016, 16:37
Под провода без разъема? Мне кажется, тем более можно было обойтись односторонней разводкой.
Маска и шелкография красивые. Как она наносилась, через сетку? Вроде бы, другие варианты приводят к неравномерному покрытию и пятнам.
Всё гораздо проще - платы заказывались в Китае :) Кстати, если кому надо, они выложены на барахолке.
Один большой разъём делать не стал потому, что не представлял себе его распайку, если есть какой-то стандарт. Ну и не хотелось иметь дело с двурядными разъёмами (и, как следствие, шлейфами). Тем более. что платка задумывалась как полумакетная, на все случаи жизни (например, для адаптера PC клавиатуры в XT).
А ISP разъём - он очень нужен разработчику прошивок - постоянно втыкать-вытыкать AVR-ку - совсем не дело :) Обычному пользователю - да, скорее не нужен (особенно, если у него для этого вдруг заготовлен специальный адаптер).

ABRAMKA0
29.01.2017, 20:48
ткните носом в схему контроллера ps/2 клавиатуры, на плате орион-128.2 rev512.3 есть 4 резистора,конденсатор и диод.

Stampmaker
30.01.2017, 09:47
в самом первом посте этой ветки вложен архив orkb_01dr.zip в нём всё есть.