PS/2 Клавиатура и Siemens
PS/2 Клавиатура и Siemens
© Dimadze
Введение
В данной статье раскрывается как же подключить стандартную (или нет) QWERTY клавиатуру к телефону Siemens, в частности, к Siemens CX75. Обязательным требованием её работы будет для нас полная эмуляция стандартных клавиш телефона, введение новых сканкодов для телефона, ну и конечно же, ввод или набор текста.
Аппаратная поддержка
Да, без дополнительных железных дороботок ничего не сделаешь, по крайней мере, с известными знаниями о процессоре телефона S-Gold PMB887x. Сразу скажу, что есть программа-симулятор этого устройства через DCA-510 для тех, кто не может или не хочет собирать, об этом пониже. В качестве этой доработки является аппаратный конвертер интерфейcа PS/2 (Клавиатура / Мышь / Джойстик) в USART (заниженный COM для телефона). То есть никаких AT-команд не предполагается.
Я предлагаю здесь использовать в качестве базового элемента это программируемый микроконтроллер ATMEGA8A-PU (ATMEGA8-16PU) это 8-битный процессор AVR архитектуры компании ATMEL.
Схема сборки проста до безобразия:
[Не сохранилось изображение: atmega8a_pu_ps2_to_usart_converter_scheme.jpg]
Как видно, нужен дополнительный источник питания в 5 вольт. Светодиод D1, собственно, и не нужен, но он выполняет ф-ию индикатора ошибки принятия сканкода от PS/2 устройства. Если что-то не работает, то можно понять почему, может драйвер на телефоне глючит, а может сама клавиатура шлёт уже что-то не то, например, если источник питания низкий, или, наоборот, высокий. Момент по поводу штекера для Siemens, достаточно всего 3х проводов это TX, RX и GND (Смотрите на соотвествующие распиновки). При подаче питания на микроконтроллер, то всё это устройство определится как Boot-Box, если нет, вы где-то ошиблись. Недопустимо чтобы штекер определялся как USB устройство DCA-540. И не желательно чтобы определялся как DCA-510 или DCA-500. Лучше всего оставьте 3 провода, если есть причины, то можете оставить вариант с DCA-510 (-500). Тактовый генератор не нужен, в микроконтроллере есть встроенный. Надо выставить его в 8 МГц, с помошью так называемых FUSE бит (подробнее ниже). Далее прошивка разгонит его до 11 МГц сама, это нужно, чтобы подогнать баудрейт (скорость передачи USART) к 115200 бит/с.
В сборе, но без корпуса, это всё выглядит у меня вот так:
[Не сохранилось изображение: atmega8a_pu_ps2_to_usart_converter.jpg]
Собрать мало, надо прошить наш микроконтроллер, делайте самым удобным для вас способом. В интернете можно найти полно решений, лично я прошил через COM-программатор и программу UniProf, собрать его очень легко. Если есть LPT порт, то через него прошить самое простое решение.
Итак, как я уже упомянул надо выставить FUSE биты, так вот следует трогать следующие биты, другие не трогайте:
По стандарту (1 МГц):
СKSEL0 = 1 | СKSEL1 = 0 | СKSEL2 = 0 | СKSEL3 = 0
Выставляем (8 МГц):
СKSEL0 = 0 | СKSEL1 = 0 | СKSEL2 = 1 | СKSEL3 = 0
В используемой мною программе, это вот так:
[Не сохранилось изображение: fusebits_map.png]
Итак, собрали, прошили, устройство определилось, всё хорошо. Но так же могу дать программу-симулятор поведения этого устройства:
[Не сохранилось изображение: ps2_kbd_to_usart_simulator.jpg]
Программная поддержка
Это очень важный момент, ибо без дополнительной программы и патча на телефоне ничего не выйдет, ещё раз повторяю AT-команд наше устройство не посылает, чистые сканкоды. Итак, в качестве основной программы является эльф PS2 Driver, он обеспечивает полную работу с портом USART, при которой производится некоторая манипуляция с элементами операционной системы реального времени Nucleus PLUS. Он эмулирует стандартные клавиши, вводит в оборот новые сканкоды, которые определются другими программами и Java'ой. Обеспечивает набор текста в поле ввода с 2-мя раскладками, аналогично вводу на компьютере. Патч PS/2 Helper, помогает эльфу осуществить хоть какой-то ввод текста. При подключении / отключении устройства эльф оповещает всплывающим сообщением, при смене раскладки издаёт звуковой сигнал. Вообще эльф делает так что действие кнопки на внешней клавиатуре абсолютно идентично действию от кнопки клавиатуры стандартной. Даже издаётся щелчок или гудок при нажатии. Вы можете настроить кнопки на клавиатуре, которые будут эмулировать стандартные кнопки телефона. Не нажимайте кнопки относящиеся к вводу, если поля ввода нет! Чтобы кнопки ввода работали как пустые свободные включите NUM_LOCK. Сканкоды от клавиатуры для телефона (их производит сам эльф) выглядят следующим образом
0x8XX00 - обычный (без 0xE0), XX - сам сканкод
0xEXX00 - расширенный (с 0xE0), XX - сам сканкод
Весь софт на стадии альфа-тестирования ;)
Советую обновить библиотеку функций, для CX75v25 можете скачать с шапки этого сайта
Ну и все необходимые файлы:
Прошивка для ATMEGA8 BIN | HEX | SRC
Патч PS/2 Helper CX75v25 | C75v22 | C75v24 | SRC
Программа-симулятор PS/2 KeyBoard To USART Simulator EXE | SRC
Ваши вопросы сюда SieDevelop.
Предыдущая страница: GBS - Процессы
Следующая страница: *.mid мелодия из табов *.gt*
Источник страницы: 2014-06-25. Открыть в Wayback Machine