Ссылки не подскажу, но скажу о своих соображениях.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено rezident 06 октября 2004 г. 09:47
В ответ на: Господа, подскажите ссылки на описание алгоритмов работы клавиатурного интерфейса (+) отправлено Ralex 06 октября 2004 г. 09:10

По поводу сканирования все просто. Есть два способа устранения дребезга. Первый - подсчет количества совпадений состояния клавиши, второй опрос с периодом заведомо превышающим дребезг. В PS-ных клавиатурах по-моему используется первый способ. Хотя я чаще использую второй, т.к. мне он проще. Сканирую клавиатурную матрицу и держу в памяти два ее битовых образа - текущий и предыдущий. Затем делаю XOR этих образов и смотрю результат ноль или не ноль. Если изменений нет (результат - ноль), то считаю, что состояние клавиатуры устойчивое и считаю текущий образ "действительным". Далее точно также по XOR сравниваю два "действительных" (предыдущий и текущий) битовых образа матрицы клавиш и если есть изменения, то по таблице определяю код клавиши в соответствии с позицией бита в битовом образе. При необходимости генерации различных кодов одной и той же клавиши (например, когда одни и те же клавиши должны выполнять несколько функций) составляю несколько таблиц кодов клавиш, которые переключаю по условию. Поскольку результатом сравнения XOR является разница в состояниях битов, то обрабатывая оба их состояния в битовой матрице, можно генерировать как коды нажатия, так и коды отжатия. Повтор нажатых кнопок делается по таймеру. Точно также как и частота их поторения.
Про интерфейс PS/2 читал очень давно. Помню смутно. Там последовательная синхронная передача данных. Причем двунаправленная, т.е. не только клавиатура генерит данные, но и PS может программировать некоторые параметры клавитуры. Поэтому двупроводный интерфейс выполнен по типу I2C, т.е. монтажное ИЛИ с pull-up резисторами и выходами с ОК или общим стоком.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru