Лекция 2 Клавиатура и манипулятор
.docЛекция 2. Клавиатура. Манипуляторы-указатели.
Вопросы:
-
Общая характеристика клавиатуры.
-
Интерфейс клавиатуры и мыши.
-
Скан-коды и системная поддержка.
-
Манипуляторы-указатели
Литература: [1.] с. 546-562
1.Общая характеристика клавиатуры.
Клавиатура РС представляет собой унифицированное устройство со стандартным разъемом и последовательным интерфейсом связи с системной платой.
Датчики клавиш представляют собой механические контакты (открытые или герметичные в стеклянных колбах магнитоуправляемые – герконы) или кнопки на основе токопроводящей резины, или емкостные датчики или датчики Холла. Емкостные датчики и датчики Холла не имеют подвижных контактов и являются наиболее надежными для клавиатуры. Независимо от типа применяемых датчиков, все клавиши объединены в матрицу, рис.2.1.
1 2 3 4 5 6 7 8 9 10 ………
2 А
3
4 С
5 В
6
7
Рис. 2.1. Матрица клавиатуры
Место расположение букв А, В, С на данной матрице может быть описано соответствующим кодом (скан-код):
А – 23d ; В – 55d; С – 410d
Скан-коды передаются в компьютер по факту нажатия и отпускания клавиш:
при нажатии передается ее скан-код, т.е. номер идентифицирующий ее расположение на клавиатуре, после ее отпускания передаются 2 байта:
1-й байт – содержит признак отпускания – F0;
2-й байт – не модифицированный скан – код.
1-й байт (F0) 2-й байт
Для клавиш, генерирующих пару кодов (префикс и расширенный код) при отпускании сначала передается префикс (Е0 или Е1- верхний или нижний регистр, например) затем признак отпускания F0, а затем передается расширенный код.
Е0 (Е1) F0 расширенный код
Типовая клавиатура имеет внутренний контроллер, выполненный на микросхеме из семейства MCS – 48 фирмы Intel, осуществляющий контроль клавиш матрицы и управление индикаторами, внутреннюю диагностику и связь с системной платой последовательным интерфейсом по линиям КВ – Data и КВ – Cloсk.
В стандартном исполнении существуют 3 типа клавиатур:
-клавиатура ХТ – 83 клавиши без индикаторов, добавленных на более поздних разработках (Num Lock, Caps Lock);
- клавиатура АТ – 84 клавиши , отличающаяся появлением дополнительной клавиши SysRec и индикаторов Num Lock, Caps Lock, Scroll Lock, а также двунаправленным интерфейсом с системной платой, обеспечивающий программирование параметров клавиатуры и ее диагностику;
- расширенная клавиатура – 101/102 клавиши, используемая для моделей АТ и PS/2 и являющаяся современным стандартом. Другие расширенные клавиатуры могут иметь 104, 105 или 122 клавиши.
Расширенная клавиатура имеет следующие группы клавиш:
- основной клавиатуры;
- цифровые клавиши;
- функциональные клавиши;
- клавиши управления курсором и экраном;
- клавиши управления питанием;
- кнопки быстрого доступа к приложениям.
По электрическому интерфейсу Клавиатуры ХТ и АТ совпадают, а по логическому они не совместимы. Клавиатура PS/2 отличается от АТ только разъемом. В остальном - полное совпадение.
Современные клавиатуры работают в одном из трех наборов (таблиц) скан-кодов:
2. Интерфейс клавиатуры.
Подключение клавиатуры к системной плате осуществляется последовательным синхронным интерфейсом, состоящим из двух обязательных сигналов: КВ – Data и КВ – Cloсk. Контроллер интерфейса клавиатуры и его разъем расположены на системной плате. Разъем клавиатуры может быть двух типов:
- обычная 5 контактная розетка DIN, рис. 2.2;
- малогабаритная розетка mini-DIN, рис 2.3.
3 1 5
Ключи 6
5 4 4 3
2 2 1
Рис.2.2. Рис2.3.
Обозначение клемм на схемах:
Рис2.2. 1 – KB Clock; 2 – KB Data; 3 - КВ – Reset #;
4 – GND (общий – заземление);5 - +5В.
Рис.2.3. 1 - KB Data; 2 – пустой; 3 - GND (общий – заземление);
4 - +5В; 5 - KB Clock; 6 – Ключ.
Процессор общается с клавиатурой через контроллер интерфейса клавиатуры, используя порт 60h. Прием скан кодов осуществляется чтением этого порта. О необходимости чтения скан-кода контроллер сигнализирует процессору через аппаратное прерывание, сигнал которого вырабатывается по каждому срабатыванию клавиши. Кроме того, этот же контроллер транслирует команды, посылаемые к клавиатуре.
С использованием шины USB появились клавиатуры с контроллером 8042. они имеют и встроенный ХАБ для подключения мыши через USB. При этом со стороны BIOS для такой клавиатуры требуется специальная поддержка.
2.1. Контроллер интерфейса клавиатуры и мыши 8042/8242.
Программируемый микроконтроллер последовательных интерфейсов клавиатуры и мыши расположен в пространстве ввода-вывода CPU по адресам 060 RW и 064 RW через параллельный интерфейс, рис 2.4.
CPU
060 RW 064 RW
Рег.данных Рег. состояния Команды
и команд
контроллер
клавиатуры
Интерфейс Интерфейс
Мышь
Клавиатура р1 р2
Рис. 2.4. Структурная схема взаимосвязи контроллера
клавиатуры и мыши
Режим работы контроллера (разрешение работы клавиатуры и мыши, прерывания от них, трансляция скан-кодов и др.) задается командным байтом, посылаемым в контроллер по специальной команде и регистра команд. Контроллер имеет 2 внешних порта по которым реализует последовательные интерфейсы связи со всеми устройствами.
Регистр состояния порта 064 R
Биты регистра 064 R |
|||||||
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Полнота выходного буфера 1 - буфер полный (OBF) |
Наполнение входного регистра : 1 –полный 0 –готов к приему |
Системный флаг 0 - по вкл питания 1 - состояние сброса |
Признак записи
0 - данные |
Замок клавиатуры 0 – замок вкл 1 - откл |
Выходной буфер мыши Mouse_OBF |
Общий перерыв |
Ошибка четности при последнем обмене с клавиатурой |
2.2. Алгоритм работы контроллера с клавиатурой:
-
Скан – коды и системная поддержка.
З.1. Скан – коды
Скан –коды передаются от клавиатуры в компьютер по факткм нажатия и отпускания клавиш.
При нажатии к5лавиши передается ее скан-код, соответствующий номеру расположения клавиши на клавиатуре. Некоторые клавиши передают цепочку кодов, начинающихся с префикса Е0 или Е1, за которыми следуют байты расширенного кода.
Набор Set#1. Свойственн первым клавиатурам. При отпускании клавиша клавиатуры передает скан-код с инвертируемым битом 7. При этом префиксы передаются без изменений, а модифицированные расширенные скан-коды передаются в порядке обратном прядку передачи при нажатии. Принятый способ сигнализации отпускания не позволяет использовать скан-коды: 60h, 61h, 5A, 6E и больше 79h и 00.
Набор Set#2. Соответствует клавиатурам со 101/102 и более клавиш.
При отпускании передаются два байта:
Признак отпускания F0 |
Не модифицированный скан-код |
1-й байт 2-й байт
Клавиши, генерирующие пару кодов (префикс и расширенный код) при отпускании передается следующим образом:
Префикс Е0 (Е1) |
признак F0 |
расширенный скан-код |
Если клавиша генерирует пару кодов при нажатии, то при отпускании каждая пара кодов дает тройку кодов с обратным порядком их следования.
Набор Set#3. Существует но практически не используется.
Номер набора клавиатуре и ее контроллеру задается центральным процессором по команде F0. При включении питания у современных клавиатур устанавливается набор 0. Контроллер клавиатуры осуществляет трансляцию принимаемых кодов наборов Set#1 или Set#2 в набор Set#0, коды которого доступны процессору при чтении из порта 60h. Считыванием из порта и интерпретацией скан-кодов занимается программа центрального процессора, выполняемая обработчиком прерываний IRQ.
Автоповтор. При удержанной нажатой клавише котроллер клавиатуры выдает скан-код и далее через некоторое время контроллер клавиатуры генерирует серию посылок скан-кода, которые будут вызывать серию прерываний у процессора IRQ1 с передачей этого кода до тех пор, пока клавиша не будет отпущена. Если не отпуская этой клавиши , нажать другую, то будет передан скан код второй клавиши и при ее удержании автоповтор начнется для нее, т.е. автоповтором пе6редаются только последние байты из этих цепочек.
-
Системная поддержка.
Системная поддержка клавиатуры осуществляется на уровне BIOS. Коды, принятые от клавиатуры, считываются и обрабатываются обработчиком аппаратного прерывания IRQ1. Результат обработки помещается в клавиатурный буфер, из которого по программному прерыванию Int 16h этот результат может быть извлечен позже.
Начальное тестирование клавиатуры осуществляется процедурой POST, которая запускает диагностический тест. При обнаружении ошибки выдается сообщение с указанием скан-кода клавиши и для продолжения рекомендуют нажать клавишу F1, чтобы начальная загрузка не останавливалась по ошибке клавиатуры.
Русификация клавиатуры поддерживается на программном уровне с помощью загружаемого драйвера, который замещает обработчик IRQ1 драйвера BIOS, перехватывая вектор прерывания процессора Int 9h
Прерывания, вызванные приходом кодов нажатия и отпускания клавиш обрабатывает BIOS Int 9h.
Алгоритм обработки клавиш следующий:
Нажатие (отпускание) клавиши Специальные клавиши
Определение состояния флагов Модификация флагов
клавиатуры
Результат обработки в ОЗУ
Клавиатурный буфер
(Кольцо на 16 слов)
Буфер полный
Звуковой сигнал
Записи слова нет
Интерфейс прикладного уровня представляет BIOS Int 16h, основное назначение которого – извлечение слов из клавиатурного буфера
Функция задается в регистре АН при вызове.
Результата помещается в регистр АХ.
4. Манипуляторы-указатели
Устройство ввода мышь передает информацию в систему о своем перемещении по плоскости нажатии кнопок (от двух до трех и более). Обычная конструкция имеет в своем составе шарик, передающих вращение на два координатных диска с фотоэлектрическими датчиками. Датчики для каждой координаты имеют две открытые оптопары (светодиод-фотодиод) в оптический канал которых входит вращающийся диск с прорезями.
Оптическая мышь имеет встроенную видеокамеру с процессором, обрабатывающим полученное изображение.
3D – мышь . Кроме двух координат перемещения на плоскости позволяет задавать третью координату с дополнительного колесика, вращаемого пальцем.
Интерфейсы мыши. Различают несколько видов:
Bus Mouse – использование специализированной платы адаптера.
Serial Mouse – использует интерфейс RS 232C и двух полярный сигнал с уровнями +3В и – 3В.
PS/2- Mouse – использует однополярный сигнал с напряжением +5В
USB Mouse – обычный последовательный интерфейс
Совместимости этих интерфейсов нет и поэтому для различного способа подключения мыши имеются специальные переходники, позволяющие выбирать ее способ подключения. Причем эти переходники предназначены только для универсальных мышей, имеющих встроенный контроллер, который распознает к какому интерфейсу подключена мышь.
4.1. Bus Mouse это один из первых вариантов мыши. Эта мышь содержит только датчики и кнопки, а обработка их сигналов производится на специализированной плате адаптера. Для этой мыши используется 9 проводной кабель со специальным разъемом, внешне погожим на разъем мыши PS/2 Главный недостаток заключается в том, что адаптер занимает разъем системной шины, адреса ввода-вывода и прерывания.
-
Serial Mouse - мышь с последовательным интерфейсом, подключаемая через 9- или 25 контактный разъем СОМ-порта. Имеет встроенный контроллер, обрабатывающий сигналы координатных датчиков и кнопок. Каждое перемещении и нажатие кнопок кодируется двоичным сигналом по интерфейсу RS-232. Недостаток Serial Mouse является тол, что она занимает СОМ-порт и требует полного использования его штатной линии прерывания (IRQ4 для СОМ-1 и IRQ3 для СОМ-2).
Две основные разновидности мышей: MS Mouse и PC Mouse требуют различных драйверов и поэтому многие мыши имеют переключатель MS/PC.
MS Mouse – характеризуется 7 битными данными в трехбайтном пакете. Положительное перемещение по координате Х вправо, а по координате У – вниз. Для трехкнопочной мыши добавляется четвертый байт.
PC Mouse – характеризуется 8 битовыми данными при пяти байтовом пакете. Положительное перемещение по координате Х вправо, а по координате У – вверх.
-
PS/2- Mouse эта мышь появилась с компьютерами PS/2. Ее интерфейс и разъем аналогичен клавиатурному и реализуется тем же контроллером, что и клавиатуры. Отличие работы интерфейса мыши от клавиатуры заключается в том, что специальные команды каждого байта записываются в порт 64h, но перед записью каждого байта записывается код D4 h.
Мышь работает в трех режимах:
- токовом – посылает данные по любому изменению состояния;
- опросе – передает данные только по запросу процессора;
- диагностики – возврат эхом данных, посылаемым контроллером.
Мышь с этим интерфейсом имеет поддержку BIOS, обеспечивающую ее настройку. Драйвер мыши обеспечивает прерывания по вектору 74h от запроса IRQ12.