Что происходит при возникновении сигнала запроса на обработку прерывания

Допустим, на ПКП поступил сигнал irq0…irq7.

1. устанавливается соответствующий бит в регистре IRR.

2. анализируется регистр IMR, проверяется, разрешено ли данное прерывание (бит=0).

3. сигнал поступает к арбитру приоритетов (обычно, самый высокий приоритет у irq0, и далее по убывающей). Если конфликта нет…

4. сигнал поступает на схему управления ПКП, которая формирует сигнал на выводе INT.

5. процессор принимает сигнал через вход INTR.

6. процессор анализирует флаг IF, разрешены ли аппаратные прерывания (IF=1 – разрешены). Если запрещены – запрос «повисает» до момента установки флага в 1.

7. сброс флага IF в ноль.

8. формирование сигнала подтверждения INTA.

9. ПКП получает сигнал INTA.

10. ПКП сбрасывает соответствующий бит в регистре IRR.

11. устанавливает соответствующий бит в регистре ISR, фиксируя факт обработки прерывания этого уровня в МП.

12. формирует с помощью блока управления номер вектора прерывания, значение которого передается на шину данных и поступает в МП. В МП этот номер N используется для вызова соответствующей процедуры обработки прерывания.

МП теперь знает все об источнике прерывания и осуществляет процедуру его обработки. Если придет прерывание с более высоким приоритетом, то текущая процедура обработки будет приостановлена для вызова процедуры более приоритетного прерывания.

13. Содержимое PSW (регистр флагов, там есть флаг на маскирование/запрет прерываний IF, TF), а также CS,IP (адрес возврата), скорректированное с учетом сброса очереди помещается в стек;

14. Сбрасываются флаги IF (флаг разрешения прерываний) и TF (флаг трассировки), причем т.к. (IF) = 0 дальнейшие прерывания запрещаются;

15. В IP загружается содержимое двух байтов с начальным адресом 4*N, а в CS - содержимое следующих двух байтов . Эти 4 байта называются вектором (указателем) прерывания.

16. Начинает выполняться подпрограмма - обработчик прерывания.

INT_SUBR:

STI

PUSH AX

....; здесь

....; команды

MOV AL,5; обработчика

....; прерывания

POP AX

IRET

Если допускаются вложенные прерывания, то вначале помещается команда STI- разрешение преываний, запрещенных в п.5. Инструкции push и pop сохраняют и восстанавливают содержимое регистров фоновой задачи, если эти же регистры используются и обработчиком прерывания (в примере регистр AX).

17. Команда IRET извлекает из стека адрес возврата - IP,CS и содержимое PSW;

18. МП прдолжает работу с адреса возврата.

Важный момент связан с регистром ISR. Установленный бит в этом регистре блокирует прерывания, начиная с текущего и менее приоритетные. Бит устанавливется схемой ПКП после прихода сигнала INTA от МП. Однако, существует вероятность прихода прерывания того же уровня, который уже обрабатывается МП. В этом случае процедура обработки должна обладать свойством реентерабильности, то есть допускать повторное обращение к себе до завершения обработки предыдущего обращения.

Обработчики прерываний обычно пишутся таким образом, чтобы время их обработки было как можно меньшим, поскольку во время их работы могут не обрабатываться другие прерывания, а если их будет много (особенно от одного источника), то они могут теряться.

В скобках номера программного обработчика прерывания.

Приоритет прерываний:

Уровень (вход) Контроллер Источинк Проиритет уровня
irq0 Ведущий Таймер
irq1 Ведущий Клавиатура
irq2 Ведущий Выход INT ведомого  
irq8 Ведомый Часы реального времени (CMOS-блок)
irq9 Ведомый вход для устройства расширения
irq10 Ведомый вход для устройства расширения
irq11 Ведомый вход для устройства расширения
irq12 Ведомый вход для устройства расширения
irq13 Ведомый Ошибка сопроцессора
irq14 Ведомый Контроллер ЖД
irq15 Ведомый вход для устройства расширения
irq3 Ведущий вход для устройства расширения (последовательный порт COM2)
irq4 Ведущий вход для устройства расширения (последовательный порт COM1)
irq5 Ведущий вход для устройства расширения (параллельный порт LPT2)
irq6 Ведущий Контроллер гибкого диска
irq7 Ведущий вход для устройства расширения (параллельный порт LPT1)

Устройство и работа клавиатуры. Скан, ASCII и расширенный код. Работа буфера клавиатуры. Проверка и установка статуса клавиш-переключателей.

Устройства клавиатуры и их разновидности:

Существует четыре типа клавиатур, которые различаются механизмом работы клавиш:

- мембранные (самые распространенные, используется слой, изолирующий контакты, и резиновый купол возврата клавиш)

- полумеханические (вместо обычных контактов используются более долговечные металлические контакты)

- механические клавиатуры (за возврат клавиш отвечает пружина)

- клавиатуры с ножничным механизмом (используются, в основном, в ноутбуках. Клавиши закрепляются с помощью двух пластиковых креплений, образующих "ножницы")

Наши рекомендации