Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Романов.Модуль2.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.88 Mб
Скачать
  1. Программируемый контроллер прерываний. Назначение. Рисунок, пояснение.

Не все ЦП имеют встроенную возможность определять приоритеты для обработки нескольких типов прерываний.

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

Схема платы подобных устройств похожа на схему, используемую процессорами, которые могут обрабатывать несколько прерываний (рис. 10.3).

Дополнительное оборудование включает специальные регистры, такие как регистр вектора прерывания, регистр состояния, и регистр маски. Вектор прерывания содержит идентификационные данные запроса на

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

Еще один специализированный регистр – регистр прерываний, который содержит битовую карту всех отложенных (зафиксированных, ждущих обработки) прерываний.

Программируемые контроллеры прерываний могут поддерживать большое количество устройств. Например, Intel 82093AA – усовершенствованный программируемый контроллер прерываний – поддерживает 24 программируемых прерывания.

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

Подпрограмма обработчика прерываний опрашивает ПКП и предпринимает соответствующие действия.

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

Для конфигурации, показанной на рисунке 10.4, ЦП с возможностью обрабатывать только одно прерывание, совместно с контроллером прерываний может обрабатывать несколько прерываний.

Шаг 1: закончить выполняющуюся в данный момент команду.

Шаг 2: сохранить содержание счетчика команд по адресу возврата из прерывания.

Шаг 3: загрузить адрес, сохраненный по адресу обработчика прерываний в счетчик команд.

Продолжить цикл выборки-выполнения.

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

Обработчик прерываний выполняется по получении определенного (некоторого) сигнала прерывания, который вызван (инициирован) уровнем. Первая инструкция подпрограммы должна очистить прерывание, стробируя 1й бит из сигнала очистки прерывания. Команда intclr является отображаемым в памяти адресом, чей бит младшего разряда соединен с сигналом очищения прерывания. Последовательная запись 0, 1 и 0 является стробированием бита.

Хотя контроллер прерываний автоматически отключает другие прерывания при получении прерывания, код сразу же повторно запускается для обнаружения ложных (побочных). Следующий фрагмент кода иллюстрирует этот процесс для 2-адресной архитектуры псевдоассемблерного кода: