Доброго дня.
В данной теме вниманию общественности предлагаю вариант подключения к ПРК "Орион-128" альтернативных клавиатуры PS/2 и часов реального времени с СОЗУ на базе м/сх DS1307. Красота данного решения заключается в простоте и минимализме.
Оба устройства подключаются к существующему в любом Орионе самому главному порту #F4xx, параллельно штатной клавиатуре (или её эмуляции на МК). При этом функционал родной клавиатуры никак не нарушается, и она, в свою очередь, никак не влияет на работу подключенных новых устройств.
Принципиальная схема (v1.0):
На схеме не указан чип RTC DS1307 с кварцевым резонатором и распиновка разъёма клавиатуры PS/2, на данном этапе отображена только идея коммутации.
Принцип работы. В штатном режиме, порт #F4xx настроен следующим образом: линии "А" на вывод, а линии "В" на ввод. Для сканирования штатной клавиатуры (формат РК86) применяется т.н. "бегущий нолик", т.е. выходы порта "А" принимают только следующие состояния:
Код:
0 1 1 1 1 1 1 1
1 0 1 1 1 1 1 1
1 1 0 1 1 1 1 1
1 1 1 0 1 1 1 1
1 1 1 1 0 1 1 1
1 1 1 1 1 0 1 1
1 1 1 1 1 1 0 1
1 1 1 1 1 1 1 0
Т.о. одновременно двух лог."0" на выходах порта "А" не бывает. Эта особенность и используется для организации четырёх виртуальных выходов для управления новыми устройствами через занятые линии. Пары соседних линий порта с помощью элементов "ИЛИ" объединяются в одиночные, образуя новые виртуальные выходы. Для управления новыми устройствами достаточно одновременно выставлять лог."0" на соответствующих парах порта #F400. После сеанса связи с новым устройством, выходы порта "А" возвращаются в изначальное состояние (по-умолчанию, FEh), и Орион готов к работе со штатной клавиатурой, а новые устройства в режиме паузы/сна.
Для приёма сигналов используются линии порта "В", которые, согласно схемотехнике РК'шной клавиатуры, подтянуты резисторами 2 ком к шине питания, т.о. на них сформирована лог."1", а для выставления лог."0" достаточно коммутировать на землю через транзисторный ключ или ЛЭ с ОК на выходе. В режиме "спячки" новые устройства не должны выставлять лог."0" на линиях порта "В".
RTC изначально удовлетворяет этим условиям, а вот с клавиатурой пришлось "похимичить", сделав работу с линией CLK в инверсной логике. Дело в том, что в обычном режиме клавиатура PS/2 может сама в произвольный момент (относительно работы процедуры сканирования штатной клавиатуры) выдавать данные, и т.о. может возникнуть коллизия. Поэтому клавиатура PS/2 принудительно переводится в режим ожидания прижиманием линии CLK к земле, и только во время её опроса линия будет освобождаться драйвером и производиться обработка байтовых посылок.
Пока разработка на стадии идеи, макетирование и написание ПО будет позже
Конструктивно девайс можно оформить в виде переходника между штатной клавиатурой Ориона и материнской платой или наМГТФить непосредственно на выводах порта ВВ55.