Здавалка
Главная | Обратная связь

Режим распознавания запроса на прерывание



Для контроллера 8259А существует два способа распознавания активного запроса на прерывание: распознавание запроса по уровню и распознавание запроса по фронту. Выбор способа осуществляется при инициализации 8259A. В архитектуре PC AT используется распознавание запроса на прерывание по фронту, а в архитектуре PS/2 - по уровню.

При распознавания запроса по уровню 8259A распознает любой активный (высокий) уровень на входе IRQ как запрос прерывания. Если вход IRQ остается активным после выполнения команды EOI, будет сгенерировано еще одно прерывание. Если не требуется повторного генерирования прерывания, перед выдачей команды EOI в программе-обработчике прерывания соответствующий вход IRQ должен стать неактивным (низким). Однако снятие активного уровня IRQ не должно происходить достаточно быстро, чтобы не нарушались необходимые требования к синхронизации, показанные на рис. 6.29.

 
 

Рис. 6.29. Временная диаграмма снятия активного уровня IRQ

 

Заметим, что запрос на входе IRQ должен длиться до заднего фронта первого импульса INTA. Если на каком-либо из входов IRQ запрос будет отменен до первого импульса INTA, 8259A будет действовать так, словно был активным IRQ7. Во всех системах, где подобное может случиться, установку IRQ7 по умолчанию можно использовать в качестве меры безопасности. Это достигается использованием программы-обработчика по IRQ7 в качестве программы "подчистки", которая может перепроверить сосотояние 8259A или просто возвратить выполнение программы из прерывания.

При распознавания запроса по фронту 8259A будет распознавать прерывания только тогда, когда они генерированы путем перехода входа IRQ от низкого к высокому уровню. Режим запуска по фронту включает в себя метод блокировки фронта. Это значит, что после переднего фронта запроса прерывания и после подтверждения прерывания положительный уровень входа IRQ не будет генерировать последующих прерываний. Пользователю не нужно беспокоиться о том, чтобы быстро снять запрос после подтверждения из опасений генерирования последующих прерываний, как в режиме запуска по уровню.

Как и в режиме распознавания по уровню, в режиме распознавания по фронту запрос на входе IRQ должен оставаться активным вплоть до заднего фронта первого импульса INTA для данного прерывания. Однако в отличие от режима распознавания по уровню после подтверждения запроса на прерывание его защелка в IRR блокируется. Только после того, как вход IRQ станет низким, защелка IRR снова будет готова к приему нового запроса на прерывание (в режиме распознавания по уровню защелка IRR всегда подготовлена). Исходя из особенностей функционирования режима распознавания по фронту, целесообразно для запуска запросов использовать положительный уровень IRQ с отрицательным импульсом. При входе такого типа задний фронт импульса возбуждает прерывание, а оставшийся положительный уровень удовлетворяет требованиям синхронизации (т.е. остается высоким вплоть до подтверждения прерывания). Заметим, что особенность, связанная с установкой IRQ7 по умолчанию, остается в силе и для режима распознавания по фронту.







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.