|
|
|
Модульный проект GraniCubicle.
Блок 4 для 'PS/2'.
Рис. 1 Внешний вид универсального сэмпла.
Увеличить
Совместимого как с проектом IgorPlug2,
так и с Управляемым реле, а так же с
Блоком 4 для 'PS/2' проекта
GraniCubicle.
На тему PS/2 клавиатур подготовлено ещё два устройства:
Переходник из PS/2 в RS232 и в IRout
и
PS/2 система.
План.
1) Вступление.
2) Выбор интерфейса.
3) Немного истории.
4) А что у нас на шине необычного?
5) Создание системы.
6) Прошивки к модулю.
7) Методика прошивки и Fuse биты.
Описание блоков.
A) Общее описание. -
тут.
Б) Блок 1 для 'RS 232'. -
тут.
В) Блок 2 для 'IR'. -
В разработке.
Г) Блок 3 для 'LCD'. -
В разработке.
Д) Блок 4 для 'PS/2'. -
Эта страница.
Е) Блок 5 для 'USB HID'. -
тут.
Ж) Блок 6 для 'DAC/ADC'. -
В разработке.
З) Блок 7 для 'DISEqC'. -
тут.
И) Блок 8 для 'Print Server'. -
тут.
К) Блок 9 для 'Lan Bridge'. -
тут.
Соединение блоков в набор.
А) Набор "Panorama Sat Scaner". -
тут.
X) Обратная связь -
тут.
Вступление.
Часто мне приходят письма: "А нельзя ли организовать управление клавиатурой напрямик
без эмуляторов нажатия"?
После углубления в тему этого вопроса становится понятно, что некоторым пользователям
требуется создавать событие нажатия клавиши в нестандартных ситуациях. Например, в играх
или в экзотических операционных системах (или просто в сверх старых, например, MS DOS)
или операционных системах, к которым нет драйвера для системы IgorPlug2. Проще говоря,
возникали такие случаи, когда по каким - либо причинам не было возможности подключиться
по USB (например, не получалось подгрузить драйвер IgorPlug2 или не было доступа к
эмулятору USB HID клавиатуры, или вообще USB был недоступен).
В случае с использованием MS DOS, подключение нескольких USB устройств управления может
стать сильно проблематичным. А про отсутствие программ настройки и драйвера IgorPlug2
под MS DOS (или Linux, или MS Windows 64bit, или любую другую ОС, отличную от
MS Windows 32bit) я уже не вспоминаю (но в ветке IgorPlug2 есть
клавиатурная версия
которая после настройки работает везде где есть мышь или клавиатура).
Подводя краткий итог вышесказанному можно сказать, что в таких случаях требуется врезка
в какой - либо существующий интерфейс управления. С одной оговоркой, для использования
которого не требуется установка драйверов, прав администратора и программ контроля.
Выбор интерфейса.
Просмотрев интерфейсы компьютера, можно придти к выводу, что врезаться придётся в PS/2
интерфейс клавиатуры, так как другого, доступного интерфейса, просто нет.
К тому же существуют самодельные программно - технические комплексы*, ввод данных в
которые возможен ТОЛЬКО через PS/2 интерфейс, так как другие интерфейсы или не
документированы, или, в силу кустарности устройства, отсутствуют (не предусмотрены
разработчиком вовсе).
*- Самый распространённый пример - произведённая кустарным образом "бегущая строка"
на светодиодах, продаваемая умельцами на большинстве радиорынках.
И к тому же пульт дистанционного управления у таких устройств в 90% случаев
отсутствует, но иногда наличие пульта может оказаться очень полезным при проведении
презентаций... Например, в нужный момент вывести фразу: "Приветствуем спортсменов
спорткомплекса ХХХ".
Рис. 2 Универсальный сэмпл с коммуникационной платой.
Увеличить
Немного истории.
Стандарт РС/2 существует со времен 86 компьютеров (были до 286, 386 и задолго до
первых пентиумов).
Для удешевления расходных материалов в стандарт было заложено упрощение передающей
части (клавиатуры) за счет приемной (компьютера). Передающая часть тактировала передачу
данных в обе стороны и начинала передавать данные без предупреждения, а возможные
коллизии на шине решались ведомой частью (компьютером). Компьютер изредка проверял
наличие клавиатуры, а при необходимости настраивал ее характеристики (инициализация,
включение светодиодов и т.д.).
Коллизии происходили при одновременной попытке передать данные обоими устройствами,
но они были относительно редки, т.к. компьютер передавал данные только по
необходимости, а большую часть времени слушал клавиатуру.
Скорость опроса наличия клавиатуры и частота передачи домашних по интерфейсу
варьируется в зависимости от типа системы. Например, у первых пентиумов наблюдались
задержки до 0.1 сек между двухбайтовыми командами, а у допотопных клавиатур удавалось
засечь пару пауз до 0.05 сек. Проработав эти данные можно сделать вывод, что если в
течении 0.25 секунд шина свободна, то скорее всего все данные уже переданы, то есть
можно сделать вывод, что шина свободна (можно врезаться).
Но бывают и исключения. На одной из материнских плат Асус был замечен интересный
случай - передача данных от чипсета материнской платы к клавиатуре не прерывалась
даже на 0.25 сек.
Мы нашли его по свечению светодиода занятости, который должен отключатся по таймеру
через 0.25 секунды после последней передачи данных. И на этой материнской плате
светодиод не гас совсем. Автоматически уменьшить таймаут (который по умолчанию 0.25)
конечно можно, при этом система сможет врезаться в шину данных, но при данной
реализации, для эмуляции клавиатуры надо сидеть на шине и передавать данные.
Ресурсов одного МК может просто не хватить на клавиатуру и IR.
Если исходить из идеи делать на двух процессорах - один на ир, второй на РС/2, то
в принципе проблем никаких нет: один следит за ир, а второй за компьютером и
клавиатурой, но это ведёт к удорожанию конструкции в целом.
Свободность шины определяется документацией, т.к. при постоянных передачах со
стороны чипсета при нажатии на кнопку возможны коллизии, что приводит к
повторным пересылкам.
Рис. 3 Осциллограмма передачи клавиатурой "скан кода".
(кнопка "1") Данные полученные с логичекского анализатора.
Рис. 4 Осциллограмма снятая при нажатии но кнопку NumLock.
Данные полученные с логичекского анализатора.
Увеличить
И тут мы подходим к самому интересному вопросу:
"А где же эта документация спросите вы"?
Ответ ещё более интересен: "А её нет".
То есть, где то она конечно есть, но в свободный доступ в Интернет она
не выложена. И найти её там мне так и не удалось. В Интернете есть описания созданные пользователями, но они не
объясняют значения таймингов при передаче данных и таймингов дэдлайнов при инициализации.
Скажите, что слишком много хочу от самодельного описания?
Ну во первых - другого просто нет (хотя давно ищу), а во вторых -
в том что есть отсутствует даже элементарное. Например, расшифровка значения Keyboard ID, большой скважности
сигнала о "не готовности" на некоторых машинах, не говоря уже о всём прочем.
Рис. 5 Работаю с логическим анализатором.
(выясняю тайминги экспериментальным путём).
Увеличить
А что у нас на шине необычного?
Рис. 6 А такое выдаёт ноутбук Samsung Sens.
(отдалённо напоминает "Start условие")
Рис. 7 Постоянно повторяющийся сигнал "о не готовности".
(встречается не на всех машинах).
Рис. 8 А так прыгает сигнал на линии Data при тактировании.
(встречается не на всех машинах).
Рис. 9 А в редких случаях встречается и такое.
(не успел обработать - поймаешь мусор).
Рис. 10 Вариант А работает на всех машинах,
вариант В - местами.
Создание системы.
Идея врезки в PS/2 интерфейс уже не нова, однако нормальных многофункциональных
самонастраивающихся устройств, готовых к повторению пользователем на современной
элементарной базе в Интернете, практически нет.
Есть только пара платных конструкций, совместимых с одним единственным пультом,
причем недоступных для повторения радиолюбителями по определению (продаются
только в сборе).
Обдумывая функциональность данного устройства еще на первом этапе его разработки,
прорисовывается два варианта его применения:
1 - в качестве самостоятельного устройства.
2 - в качестве ведомого блока, управляемого ведущим блоком.
С реализацией ведомого решения всё относительно понятно - по любому, из доступных
аппаратно - реализованных интерфейсов (RS232, I2C, SPI) или реализованных программно,
но с потерей некоторой функциональности (например, USB), можно загружать или
выгружать принятые данные.
Как выяснилось, с помощью микросхемы электронных ключей (наш аналог К561КТ3А) МК
не обязан участвовать в пересылке данных от ПК к клавиатуре и обратно, а включаться
в обмен только при необходимости что - либо передать в компьютер по протоколу PS/2
(с эмулировать нажатие клавиши).
А в реализации самостоятельного блока всплывает море возможностей:
1 При использовании самостоятельного опроса клавиатуры блоком.
1.1 Переходник PS/2 <-> RS232
Для подключения стандартной PS/2 AT клавиатуры к карманным компьютерам,
не имеющим USB хоста, через RS232.
1.2.A Переходник PS/2 <-> IR
Тоже, что и в первом случае, но через IR интерфейс, оставляя RS232 свободным
для подключения сотового телефона (убыстряет написание и отправку SMS).
1.2.B Переходник PS/2 <-> IR
IR удлинитель PS/2 клавиатуры (эмуляция swk8630) позволяет использовать
стандартную PS/2 AT клавиатуру в качестве БОЛЬШОГО пульта дистанционного
управления со 101 кнопкой.
2 Врезка в существующий интерфейс.
2.1 Транслятор IR <-> PS/2
Для дистанционного управления компьютерами в случаях, когда использование
IgorPlug2 или эмуляторов USB HID клавиатур затруднено или по каким-либо
причинам невозможно.
2.2 Логер PS/2.
Ну логер он и в Африке логер, правда с припиской - ТОЛЬКО для
ознакомительных целей и ни в каких других. То есть, для создания макросов,
воспроизводимых устройством в PS/2 по внешнему событию (например, нажатию
кнопки на пульте).
2.3 Транслятор из PS/2 в RS232.
Это разновидность логера, но главное отличие заключается в возможности самостоятельного
декодирования устройством посылок на шине и отправкой в RS232 уже обработанного значения
(ну например с учётом состояния клавиши Shift).
А гибридная его версия при отсутствии компьютера может самостоятельно инициализировать
клавиатуру и полностью повторять функции переходника PS/2 клавиатура <=> RS232.
Проще говоря клавиатура может быть одна и для КПК и для настольного компьютера, а в
походных условиях устройство само переключается в режим переходника PS/2 клавиатура <=> RS232.
2.4 Программатор I2C
Просто применение в качестве IR приёмника воспроизведения макросов и PS/2
логера (для создания макросов) подразумевает хранение полученных данных во
внешнем I2C или внутреннем EPROM'е. Соответственно устройство должно уметь самообучаться,
а при смене прошивки становиться USB-I2C программатором.
2.5 Врезка нажатий клавиш, принятых извне.
Для эмуляции нажатия клавиш на клавиатуре от прихода внешних событий
(самая заоблачная - самодельная сигнализация проникновения или пожара в
серверной, для серверов домашних сетей) или по данным, пришедшим по
внешним интерфейсам.
Рис. 11 Пример работы транслятора из PS/2 в RS232.
(устройство включено в разрыв PS/2, а его RS232 подкл. к COM1)
Тоже, с аппаратной точки зрения, можно сказать, но в двух словах:
Данный блок включаем в разрыв между PS/2 приёмником (не обязателен) и
PS/2 клавиатурой.
Он служит для: Сохранения нажатых символов в Eprom, опрашивания
клавиатуры и передачи этих символов в RS 232 (или PS/2). Отправки по
PS/2 символов, пришедших из RS 232 (или PS/2), по командам из RS 232
(или PS/2), отправлять набор команд из Eprom в PS/2.
Из описанного железа, большая часть (Микропроцессор, IR приёмо-передатчик,
с распаянным интерфейсом USB) установлена на разработанной мной плате
для проекта IgorPlug2.
Иными словами, чтобы не изобретать велосипед заново, сделаем конструкцию
на двух платах: одна плата - это плата созданная мной для проекта IgorPlug2,
а вторая - интерфейсная плата, содержащая минимум деталей (одна микросхема
ключа и 5 резисторов к ней) для сопряжения с интерфейсом PS/2 клавиатуры.
Углубляясь в тему поиска деталей нами было замечено, что в китайской технике
встречаются разные модификации нумерации пинов разъёма PS/2. Определиться
относительно просто - по питанию. Цифровые пины над и под пином земли,
и они легко прозваниваются тестером.
Рис. 12 Гнездо для клавиатуры выглядит примерно так.
Универсальный вариант - перевёртыш.
(это схема стандартноой реализация проекта
IgorPlug2.)
для просмотра.
для печати.
При этом, для подключения внешнего I2C EPROM'а, из деталей требуется только
панелька под микросхему собственно EPROM'а.
Но многие переспрашивают: "А что из схемы можно не устанавливать для..."
...Для переходника PS/2 клавиатура <=> RS232 схему можно упростить до такого состояния:
для просмотра,
для печати.
Но универсальный вариант
хорош именно универсальностью и пластичностью, то есть упрощённый вариант потом переделать улучшить уже
неполучится.
"Прошивка для переходника из PS/2 в Newton Codes, для PDA" написана для работы с КПК. Она опрашивает клавиатуру,
переводит номер кнопки по таблице Code-Set2 c't6/88 s.152 (Newton Codes) и передаёт результат в RS232(UART) со
скоростью 115 кбод, а по IRDA со скоростью 9600 бод.
Прошивки к модулю.
Тестовая прошивка для "Транслятора IR <-> PS/2".
для процессора ATMega48 и кварца 11-12 Mhz.
Прошивка для переходника "PS/2 клавиатура<=>RS232".
для процессора ATMega88 и кварца 11,0592 Mhz.
Прошивка для транслятора из PS/2 в RS232.
для процессора ATMega88 и кварца 11,0592 Mhz.
Прошивка для переходника из PS/2 в Newton Codes, для PDA.
для процессора ATMega88 и кварца 11,0592 Mhz.
Методика прошивки и Fuse биты.
В комплекте с прошивкой идёт файл автоматизированной прошивки для PonyProg. Если вы пользуетесь другим
программатором - напомню у Atmel "1" это НЕ запрограммировано, а у PonyProg наоборот, так-что будьте внимательны...
(в случае использования PonyProg необходимо только запустить файл и ответить "OK" для LPT-SPI программатора).
Как работать с программатором под управлением PonyProg. - тут.
А как с USB программатором 'AvrUsb500 by Petka' -
тут.
Ну вот, пока ВСЁ!!!
Быстро, просто, максимально понятно и унифицировано.
Ограничения.
Устройство разработано по принципу КАК ЕСТЬ и автор не несёт ответственности за явный (или не явный) ущерб,
причинённый в результате повторения.
То есть все эксперименты вы делаете на свой страх и риск.
Если у вас возникли вопросы и предложения - пишите мне по адресу внизу страницы
Если вы нашли на моём сайте что-либо интересное или полезное для себя и хотите видеть
на этом сайте новые интересные проекты, а также поддержку, доработки существующих проектов,
то все желающие могут поддержать данный проект, частично покрыть оплату хостинга,
затраты на разработку и переделку проектов.
Кошелёк для оплаты накладных расходов на сайт
Z158779319858 в системе WebMoney.
Принимаю только
безвозмездную помощь :)
Все статьи, опубликованные на этом сайте защищены
Частью 4 Гражданского Кодекса Российской Федерации.
Запрещено полное или частичное копирование материалов без согласия их авторов.
Незаконное использование материалов сайта влечет за собой административную ответственность в виде
компенсации в размере от 10.000 рублей до 5.000.000 рублей [Ст.
1301,
1250,
1252,
1253 ГК РФ].
При согласованном использовании материалов сайта обязательна активная ссылка на
www.mindrunway.ru и указание авторства.

|
Copyright© 2007-2012 QuickWitted
|
Почта
grani
СОБАКА
mindrunway
РУ
|
|
|
|
|
|