Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_2011.doc
Скачиваний:
64
Добавлен:
09.12.2018
Размер:
1.15 Mб
Скачать
  1. Программируемый контроллер прерываний

irq0 … irq7 – выводы запросов на прерывания для входных сигналов от внешних устройств

IRR – регистр фиксации запросов на прерывание от внешних устройств (соответствующий разряд регистра устанавливается в 1)

IMR –регистр маскирования прерываний от устройств, подключенных к контроллеру. Единицы, установленные в разрядах регистра, запрещают прерывания от соответствующих устройств.

PR – определяет приоритетность обслуживания одновременно поступивших запросов на прерывание

ISR – фиксирует уровень приоритета прерывания, которое в данный момент обрабатывается микропроцессором

Буфер – к нему подключаются входы/выходы системной шины. По ним передается номер вектора прерываний и принимается управляющая информация.

Таблица соответствия уровней irq , номеров прерываний и приоритетов:

Уровень

Приоритет

Номер прерывания

Таймер

irq0

2

8h

Клавиатура

irq1

3

9h

Выход INT ведомого

irq2

0Ah

Часы реального времени

irq8

4

70h

irq9

5

71h

irq10

6

72h

irq11

7

73h

irq12

8

74h

Ошибка процессора

irq13

9

75h

Контроллер жесткого диска

irq14

10

76h

irq15

11

77h

COM2

irq3

12

0Bh

COM1

irq4

13

0Ch

LPT2

irq5

14

0Dh

Контроллер гибкого диска

irq6

15

0Eh

LPT1

irq7

16

0Fh

Прохождение запроса на прерывание через контроллер

  • Сигнал запроса поступает на вход irqx и устанавливает соответствующий бит регистра IRR в «1».

  • Регистр маски IMR определяет, какие прерывания разрешены (0 – разрешены, 1- запрещены).

  • Если бит IMR=0, то сигнал поступает к регистру приоритета PR. Самый высокий приоритет у уровня irq0. Конфликт возникает, если на входах регистра PR одновременно несколько запросов.

  • Регистр PR выбирает запрос на прерывание с наивысшим приоритетом и предает сигнал на схему управления, которая формирует сигнал INT, поступающий на вход INTR микропроцессора.

  • Если прерывания разрешены (IF=1, TF=0), то микропроцессор сбрасывает флаг (IF=0) (запрещает аппаратные прерывания) и передает контроллеру сигнал подтверждения INTA.

При поступлении сигнала INTA контроллер выполняет следующее:

  1. Сбрасывает бит в регистре IRR,

  2. Устанавливает бит в регистре ISR, соответствующий входу irq (фиксирует факт обработки прерывания с данным приоритетом),

  3. формирует номер вектора прерываний в виде кода на выходах d0 … d7.

Далее происходит обработка прерывания.

Если во время обработки прерывания поступит другой сигнал запроса прерывания того же уровня, то обслуживание запроса будет отложено.

Если поступит запрос более высокого уровня, то текущая процедура обработки остановится, а поступивший запрос вызовет свою процедуру обработки.

Любая процедура, закончив работу, сбрасывает свой бит в регистре ISR, разрешая тем самым обработку прерываний с приоритетами ниже установленного.

Следует помнить, что при запуске обработчика флаг IF будет сброшен и аппаратные прерывания будут запрещены. Обрабатывающая программа должна сама определить, когда внешние прерывания не помешают ее работе. Она может разрешить внешние прерывания (sti) или вновь запретить (cli).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]