Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KOMAROV.DOC
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.32 Mб
Скачать

1.9. Система прерываний

1.9.1. Общие сведения

Контроллер прерываний (INTERRUPT CONTROLLER, см. рис. 1.9) обслуживает запросы на прерывания процессора. Одним из этапов обслуживания является передача управления на соответствующий вектор прерывания. Все вектора прерывания перечислены (в порядке понижения приоритета) в табл. 1.8.

Таблица 1.8

Источники прерываний и адреса векторов прерываний

Источник прерывания

Адрес вектора

прерывания

Тип

прерывания

RESET#

0х0000 (наивысший приоритет)

Внешний

Powerdown (немаскируемое)

0х002С

Внешний

IRQ2#

0х0004

Внешний

IRQL1# (чувствительное к уровню)

0х0008

Внешний

IRQL0# (чувствительное к уровню)

0х000С

Внешний

SPORT0 Передача

0х0010

Внутренний

SPORT0 Прием

0х0014

Внутренний

IRQE# (чувствительное к фронту)

0х0018

Внешний

Byte DMA

0х001С

Внутренний

SPORT1 Передача / IRQ1#

0х0020

Внутр/внеш

SPORT1 Прием / IRQ0#

0х0024

Внутр/внеш

Таймер

0х0028 (наинизший приоритет)

Внутренний

Эффективные стек и программный конвейер позволяют обслуживать незамаскированные запросы на прерывания без дополнительной задержки (за исключением задержки синхронизации) даже, когда прерываются циклы DO UNTIL. Вложение прерываний позволяет запросу с более высоким приоритетом прерывать обработчик прерывания с более низким приоритетом также без дополнительной задержки.

Для сохранения контекста прерываемой задачи можно использовать выбор вторичных регистров ALU, MAC и SHIFTER (см. пп. 1.5…1.7). Такое переключение выполняется за один машинный цикл.

1.9.2. Последовательность обслуживания прерывания.

Запрос на прерывание запоминается контроллером прерываний на время выполнения текущей команды. Далее проверяется соответствующий разряд регистра масок IMASK (см. п. 1.9.3).

Если прерывание не замаскировано, то программный конвейер загружает содержимое программного счетчика (который содержит адрес следующей команды) в стек РС. Это позволяет продолжить работу прерванной программы после выполнения обработчика прерывания.

Программный конвейер также загружает содержимое регистров ASTAT (см. п. 1.10), MSTAT (см. п. 1.10) и IMASK в стек состояния (STA­TUS STACK, см. рис. 1.9). Упомянутые регистры загружаются в стек состояния в том порядке, в котором они перечислены. Если бит разрешения вложенных прерываний в ICNTL (см. п. 1.9.3) установлен, то регистр IMASK загружается новым значением.

Далее процессор выполняет команду NOP и одновременно читает из памяти программ первую команду обработчика прерывания. После возврата из обработчика (с помощью команды RTI) стеки РС и статуса считываются и продолжается выполнение прерванной программы.

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