1 Отредактировано AlexBel (22-11-2017 08:50)

Тема: Адаптер клавиатуры с интерфейсом PS/2

Адаптер предназначен для подключения клавиатуры с интерфейсом PS/2 к ПЭВМ «Агат-7». На настоящий момент функционал адаптера ограничивается базовой эмуляцией клавиатуры "Агата". В будущем (после нового года) планирую расширить функционал - добавить оперативно переключаемые альтернативные раскладки, настраиваемую скорость повтора, индикацию режимов светодиодами клавиатуры, запоминание режимов в EEPROM. На данный момент индикация РУС-ЛАТ индицируется характером свечения светодиода адаптера.

РЕГ - Shift
УПР - Ctrl
ПВТ - Alt
Сброс - Ctrl + Shift + ScrollLock
РУС-ЛАТ - NumLock

Полный список соответствия кнопок клавиатуры PS/2 клавиатуре "Агата" будет позже.
К сообщению прикреплены файл со схемой, чертёж платы в графическом файле, формате PDF и в формате Altium Designer 16, файл с прошивкой контроллера ATmega8 и фотографии собранного устройства. Фьюзы для контроллера:

Low: 0xE4
High: 0xD9

Контроллер проверен совместно с системной платой "Агат-7". С "девяткой" адаптер не работает! В прошивке нет проверки на ошибки в передаче данных от клавиатуры PS/2, поэтому не подключайте её "на горячую", тем более, что она для этого не предназначена.

Agat_keyb_codes_RAW.jpg - "сырой" код, передаваемый клавиатурой "Агата" при нажатии кнопок без "УПР" и "РЕГ", снятый логическим анализатором. При передаче клавиатурой кода кнопки его старший бит всегда равен нулю - по низкому уровню клавиатурный интерфейс определяет начало передачи кода. После приёма старший бит аппаратно устанавливается в единицу схемой клавиатурного интерфейса - в таком виде его считывают из порта 0xC000.
Agat_PS2_NORM.png - Коды клавиатуры "Агата", соответствующие кнопкам клавиатуры PS/2 (пока что сделал только "чистое" нажатие, без "УПР" и "РЕГ").
PS2_keycodes.png - скан-коды клавиатуры PS/2, вдруг кому пригодятся.

Использованную картинку клавиатуры PS/2 со скан-кодами нашёл где-то в Интернет, т.е. её автором не являюсь.


              В Н И М А Н И Е !

Моя прошивка обеспечивает минимальный функционал и не совместима с "Агат 9". Дальнейшее её развитие не планируется.
Значительно более функциональны и совместимы с "Агат 7" и "Агат 9" прошивки от Владимира:
0.97 - http://forum.agatcomp.ru//viewtopic.php?pid=638#p638
0.98 - http://forum.agatcomp.ru//viewtopic.php?pid=832#p832

Конденсатор C5 в цепи сброса использовался для тестовых целей, при сборке его устанавливать не нужно!

Post's attachments

Attachment icon Agat_PS2_NORM.png 13.56 kb, 258 downloads since 2017-01-29 

Attachment icon Agat_keyb_codes_RAW.jpg 295.11 kb, 248 downloads since 2017-01-29 

Attachment icon PS2_keycodes.png 9.99 kb, 257 downloads since 2017-01-29 

Attachment icon S2500017.jpg 325.51 kb, 260 downloads since 2016-12-30 

Attachment icon S2500018.jpg 316.63 kb, 245 downloads since 2016-12-30 

Attachment icon agat_ps2_pcb.PDF 68.52 kb, 588 downloads since 2017-01-29 

Attachment icon agat_ps2_rev2.hex 8.26 kb, 514 downloads since 2016-12-25 

Attachment icon ps2agat_pcb2.PcbDoc 651 kb, 572 downloads since 2016-12-25 

Attachment icon ps2agat_pcb2.png 240.01 kb, 257 downloads since 2016-12-25 

Attachment icon ps2agat_sch2.png 53.55 kb, 286 downloads since 2016-12-25 

2 Отредактировано AlexBel (25-12-2016 19:51)

Re: Адаптер клавиатуры с интерфейсом PS/2

Wierzbowsky пишет:

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

У меня как раз такая ситуация и сложилась. Решил "тряхнуть стариной", сделать для "Агата" полезный девайс, какой - пока что не буду говорить :) Спасибо ребятам - помогли мне с платами "семёрки". А вот клавиатуры не нашлось. Та, которая у меня, в очень плохом состоянии. Поэтому решил сделать такой вот адаптер.
Насчёт потестировать - нет проблем, но все дела - уже после нового года :)

По вопросам адаптера пиши, пожалуйста, сюда, пусть в одном месте будет. Мне не сложно отвечать в двух местах одно и то же, но как-то глупо... :)

3 Отредактировано AlexBel (30-12-2016 21:03)

Re: Адаптер клавиатуры с интерфейсом PS/2

Wierzbowsky пишет:

хочу собрать Агат в "альтернативном" корпусе для тестов

Мой "альтернативный" корпус :)

Маленькие платы - кодер PAL и клавиатурный адаптер, ещё первой версии.

Post's attachments

Attachment icon S2500002.jpg 769.64 kb, 236 downloads since 2016-12-30 

Attachment icon S2500004.jpg 756.73 kb, 235 downloads since 2016-12-30 

Attachment icon S2500006.jpg 349.38 kb, 236 downloads since 2016-12-30 

4

Re: Адаптер клавиатуры с интерфейсом PS/2

Алексей привет!
В свое время тоже замутил похожий "девайс", но на PIC`е...как всегда не доделал (только вот сегодня полез в свои архивы наткнулся на него)...оказалось написал код на 60-70%.
Так что молодец ты.
А есть ли буфер в твоем девайсе? Я понимаю, что он есть в клаве ПС 0.5 а агату он нужен как ежу фотболка. Но как решил это?

5

Re: Адаптер клавиатуры с интерфейсом PS/2

x0Dh пишет:

Алексей привет!
В свое время тоже замутил похожий "девайс", но на PIC`е...как всегда не доделал (только вот сегодня полез в свои архивы наткнулся на него)...оказалось написал код на 60-70%.
Так что молодец ты.
А есть ли буфер в твоем девайсе? Я понимаю, что он есть в клаве ПС 0.5 а агату он нужен как ежу фотболка. Но как решил это?

Приветствую.

Я хотел использовать PIC, но для его программирования нужен специальный программатор, которым не каждый располагает. В этом плане AVR проще. К тому же из микрочиповских контроллеров под рукой не было ничего подобного ATmega8 - все мощнее и их использование для такой несложной задачи было бы нерационально.
Буфера нет. Сканкод с клавиатуры принялся, обработался, отправился. Автоповтор не используется, т.к. в агатовской клавиатуре его тоже нет.
Не совсем понял вопрос - решил что?

6

Re: Адаптер клавиатуры с интерфейсом PS/2

Сканкод с клавиатуры принялся, обработался, отправился. Автоповтор не используется, т.к. в агатовской клавиатуре его тоже нет.

Есть..кнопка ПВТ :-)....Но по привычки руки жмут текущую клавишу :-) Ладно, это так....мелочь.

Не совсем понял вопрос - решил что?

Тут у меня теоретическая "думка"...У Агата есть сигнал сброса строба C010. Пока его нет, данные сканированной клавиатуры (реальный агат) не "уступят" место новой нажатой клавиши...у ПиСюковой клавы все нажатые клавиши собираются в буфер...и они "забивают" буфер пока не будут считанны сканкоды (по правилам FIFO)...
Вот эту "синхронизацию" Агатовских сигналов C000 (считать) C010 (сбросить) <-> буфер PC-Key...
Какой символ (из буфера ПиСиКлавы) считается при C010если я фигарю по клаве с частотой больше чем С010? :-)

7 Отредактировано AlexBel (28-12-2016 07:49)

Re: Адаптер клавиатуры с интерфейсом PS/2

Wierzbowsky пишет:

Поофтоплю немного. Программатор для PIC сейчас стоит копейки. Тот же MiniPro. Он больше 13000 разных чипов поддерживает. Только что им зашил Атмегу 16 и 328. Так что рекомендую.

Сравним:

https://ru.aliexpress.com/item/USBasp-U … yId=400103

https://ru.aliexpress.com/item/Free-Shi … 4d2dc561d3

Разница более, чем 2000 рублей - не для всех "копейки". Для многих ощутимо - 100 рублей и более 2000 рублей. Особенно для тех, кому не нужно программировать кучу наименований.

Даже клон PICkit2 стоит 500 рублей (PICkit3 ещё дороже):

https://ru.aliexpress.com/item/Free-Shi … cee1e4b8e7

https://ru.aliexpress.com/item/FREE-SHI … 173ad20bc1

Не говоря уже об оригиналах.

Кстати, 13000 - не более, чем рекламный ход. Во-первых, существует множество одинаковых изделий (например, флэши 28Fxxx) у разных производителей под разными наименованиями. Но они в списке числятся отдельными чипами. Кроме того, чипы одной группы (скажем, ATmega8 и ATmega128) имеют одинаковый алгоритм и аппаратный протокол программирования и отличаются количеством переданных байтов. Так что если взять действительно уникальные микросхемы, поддерживаемые универсальным программатором, то их окажется намного, НАМНОГО меньше.

8 Отредактировано AlexBel (28-12-2016 08:15)

Re: Адаптер клавиатуры с интерфейсом PS/2

x0Dh пишет:

Сканкод с клавиатуры принялся, обработался, отправился. Автоповтор не используется, т.к. в агатовской клавиатуре его тоже нет.

Есть..кнопка ПВТ :-)....Но по привычки руки жмут текущую клавишу :-) Ладно, это так....мелочь.

Не совсем понял вопрос - решил что?

Тут у меня теоретическая "думка"...У Агата есть сигнал сброса строба C010. Пока его нет, данные сканированной клавиатуры (реальный агат) не "уступят" место новой нажатой клавиши...у ПиСюковой клавы все нажатые клавиши собираются в буфер...и они "забивают" буфер пока не будут считанны сканкоды (по правилам FIFO)...
Вот эту "синхронизацию" Агатовских сигналов C000 (считать) C010 (сбросить) <-> буфер PC-Key...
Какой символ (из буфера ПиСиКлавы) считается при C010если я фигарю по клаве с частотой больше чем С010? :-)

Клавиатура PC имеет автоповтор, включаемый автоматически при удержании кнопки определённое время. Клавиатура "Агата" повторно отправляет код нажатой кнопки при нажатии "ПВТ". У меня используется алгоритм клавиатуры "Агата", т.е. для повтора нужно нажимать дополнительно "ALT". Это есть в первом посте в кратком описании.

Что касается чтения из клавиатурного порта, то разницы между оригинальной агатовской клавиатурой и моим адаптером нет - читаться будет последний код, записанный в параллельный регистр. Это определяется не типом клавиатуры, а схемотехникой клавиатурного порта "Агата".

И что за "буфер ПиСиКлавы"? Клавиатура PS/2 передаёт данные по факту изменения состояния кнопок. Исключение - запрет хоста на передачу или прерывание во время передачи. В этом случае последние данные будут переданы при возобновлении обмена. И то - это просто передача последних кодов, а не накопительный буфер. Как и автоповтор. И запоминаются не все нажатые кнопки, а последние пять.

И ещё - что значит "C010 (сбросить) <-> буфер PC-Key"? Регистр по адресу 0xC010 для сброса доступен только процессору, со стороны клавиатуры на него никак нельзя повлиять. Как может его сбросить какой-то "буфер PC-Key"?

Я Вас очень прошу - формулируйте, пожалуйста, Ваши мысли так, чтобы они были понятны не только Вам, но и другим. А угадывать их - этим пусть занимаются во всяких сомнительных шоу. И почитайте описание работы клавиатуры PS/2 и клавиатурного интерфейса "Агата". По последнему - в книге Мымрина информации вполне достаточно. Сама книга есть на этом сайте.

9 Отредактировано AlexBel (29-12-2016 17:50)

Re: Адаптер клавиатуры с интерфейсом PS/2

У меня сейчас есть несколько чистых плат, после 9 января закажу ещё десяток. Считаю, что этого количества будет достаточно, чтобы хватило всем желающим. До 9 января заниматься этим вопросом не буду.

10 Отредактировано AlexBel (31-12-2016 10:42)

Re: Адаптер клавиатуры с интерфейсом PS/2

Wierzbowsky пишет:

Запишусь на одну. Фабричную или хотя бы фабричного качества. Платам, сделанным "утюжным способом" не доверяю.

Или соглашайтесь на то, что есть, или делайте сами. А то потом начнутся претензии - ещё качество для Вас окажется недостаточно фабричным...

11 Отредактировано Voldemar0 (31-12-2016 14:51)

Re: Адаптер клавиатуры с интерфейсом PS/2

Wierzbowsky пишет:

Запишусь на одну. Фабричную или хотя бы фабричного качества. Платам, сделанным "утюжным способом" не доверяю.

Гы :)) Уж лучше утюг, чем иной промышленный текстолит, у которого дороги облазят чуть задень.

Кстати, наши мосты ведь тоже утюжно делались, все 4 копии. Работают пока, несмотря на довольно мелкий рисунок.

12

Re: Адаптер клавиатуры с интерфейсом PS/2

Агатовская, если не перегревать - не теряет. Хотя это очень непросто...

13

Re: Адаптер клавиатуры с интерфейсом PS/2

наверное я совсем тупой, но распечатать плату не получается:( или только дорожки без дырок, или со всеми элементами и надписями. можете в .PDF выложить рисунок только платы, без элементов и позиционных обозначений? в натуральную величину.

14

Re: Адаптер клавиатуры с интерфейсом PS/2

Да ладно - не получается. Всё там получается:

Post's attachments

Attachment icon 111.jpg 56.84 kb, 242 downloads since 2017-01-07 

15 Отредактировано hantarex (08-01-2017 07:31)

Re: Адаптер клавиатуры с интерфейсом PS/2

тогда объясните, как настроить печать только необходимого?
отключаю все слои, кроме bottom, на печать выводятся все слои все равно.
юзаю altiumdesignerviewersummer09.

Post's attachments

Attachment icon kbd.jpg 412.45 kb, 253 downloads since 2017-01-08 

16

Re: Адаптер клавиатуры с интерфейсом PS/2

Что такое "altiumdesignerviewersummer09" - не знаю, пользуюсь AD16, о чём написал в первом посте.
Набрал в поисковике Google строку "altium designer вывести на печать плату с отверстиями" и получил первую же ссылку:
http://we.easyelectronics.ru/CADSoft/al … a-lut.html
Хорошая штука - поисковик. Позволяет сэкономить и своё время и чужое. Рекомендую.

Post's attachments

123.png, 27.57 kb, 726 x 631
123.png 27.57 kb, 459 downloads since 2017-01-08 

adlut.png, 21.87 kb, 704 x 417
adlut.png 21.87 kb, 441 downloads since 2017-01-08 

17 Отредактировано hantarex (08-01-2017 10:17)

Re: Адаптер клавиатуры с интерфейсом PS/2

если честно - вообще неохота разбираться с этой программой. качать 1Гб через юсб-модем, да еще триал на 15 дней всего. нет у меня проектов, которые требуют такой CAD. SP вполне хватает.
да, вы правы. что-то не допер спросить у гугля, думал - сам разберусь.
http://we.easyelectronics.ru/CADSoft/al … a-lut.html
пишут, что можно из альтиума сохранить сразу в .PDF, неужели так сложно было это сделать?

18 Отредактировано AlexBel (08-01-2017 10:46)

Re: Адаптер клавиатуры с интерфейсом PS/2

hantarex пишет:

если честно - вообще неохота разбираться с этой программой. качать 1Гб через юсб-модем, да еще триал на 15 дней всего. нет у меня проектов, которые требуют такой CAD. SP вполне хватает.
да, вы правы. что-то не допер спросить у гугля, думал - сам разберусь.
http://we.easyelectronics.ru/CADSoft/al … a-lut.html
пишут, что можно из альтиума сохранить сразу в .PDF, неужели так сложно было это сделать?

Сперва Вы не можете зайти в поисковик, чтобы за минуту найти ответ на вопрос. После того, как это было сделано за Вас, Вы предъявляете претензии - не выложили .pdf. Вам, видите ли, неохота разбираться! За всё это время можно было бы AD скачать и не один раз. И даже - открою секрет - не на 15 дней триал, а намного больше. С торрента. А можно за полчаса эту плату перерисовать в любой другой программе. Что помешало? Тоже неохота?

Да, кстати, я в PDF из AD никогда не сохранял - не было необходимости. И сейчас нет.

19

Re: Адаптер клавиатуры с интерфейсом PS/2

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

20 Отредактировано AlexBel (08-01-2017 11:08)

Re: Адаптер клавиатуры с интерфейсом PS/2

hantarex пишет:

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

И проект и плату я изначально делал для себя. После того, как устройство заработало с тем функционалом, который меня устраивает, я решил выложить его для всех - вдруг кому будет полезно. В том числе выложил файл печатной платы, используя который можно получить ЛЮБОЙ формат, поддерживаемый AD. Знаете поговорку о том, что ищет тот, кому не нужно? Сейчас Вам потребовался .pdf. Кому-нибудь потребуются гербера. Кому-то - ещё что-то. Мне что, сидеть и выводить всё это для тех, кому неохота разобраться с программой, скачав её и потратив минуту на поисковик?
Того, что я выложил, достаточно для производства платы.

Всё, написанное выше, не требует ответа. Это, скорее, для тех, кого ещё что-то не устроит. Поверьте, мне есть, чем заняться, кроме как ходить за других по поисковикам...

Post's attachments

Attachment icon Job1.PDF 68.52 kb, 498 downloads since 2017-01-08 

21 Отредактировано hantarex (08-01-2017 12:30)

Re: Адаптер клавиатуры с интерфейсом PS/2

Большое Вам спасибо! просто мне, как и Вам, не хочется тратить время на ненужные, на мой взгляд, вещи.:)
выше я писал, у меня USB-модем и ограниченный трафик. жаба душит качать 1Гб, чтобы плату напечатать:(
Вы уж извините:)

22 Отредактировано AlexBel (12-01-2017 17:30)

Re: Адаптер клавиатуры с интерфейсом PS/2

hantarex пишет:

Большое Вам спасибо! просто мне, как и Вам, не хочется тратить время на ненужные, на мой взгляд, вещи.:)
выше я писал, у меня USB-модем и ограниченный трафик. жаба душит качать 1Гб, чтобы плату напечатать:(
Вы уж извините:)

Да не за что. Пожалуй, я излишне резко отреагировал, но, честное слово, развелось такое количество "сделай за меня", что иной раз даже безобидная просьба вызывает раздражение. За своё раздражение приношу извинение, был неправ - нужно было сразу выложить файл для печати простыми средствами.

Большая просьба к тем, кто конструкцию повторит, оставить отзыв о её работе. В общем, жалобы и предложения.

23 Отредактировано hantarex (26-01-2017 22:29)

Re: Адаптер клавиатуры с интерфейсом PS/2

Собрал контроллер, не взлетел:( Светодиод мигает с частотой 8-10Гц, Агат на клаву не реагирует:(  Монтаж несколько раз проверил - вроде ошибок нет. Правда, теперь я не уверен, что моя машина полностью исправна:( 
Полевик не ставил, за неимением такового, но у меня прколхожена "железная" кнопка RESET.
А есть какая-нить комбинация клавиш, нажав которую по светодиоду будут изменения?

Post's attachments

Attachment icon IMAG0477.jpg 1.48 mb, 246 downloads since 2017-01-26 

24

Re: Адаптер клавиатуры с интерфейсом PS/2

Нажатие NumLock переключает "рус-лат", при этом изменяется характер мигания светодиода. Кроме того, изменяется логический уровень на соответствующем проводе - можно проверить мультиметром или даже просто светодиодом с резистором.
Все клавиатуры PS/2 при подаче питания мигают светодиодами - индикация сброса. Это происходит?
Ну, и классика - проверить качество пайки, отсутствие "соплей" и т.п.

25

Re: Адаптер клавиатуры с интерфейсом PS/2

Информация по платам и сборке адаптеров будет немного позже.