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

Режим опроса источников прерываний (POLL)



Режим опроса необходим, когда устройства имеют общую программу- обработчик прерывания, а также при количестве запросов больше 64. Инициатором опроса является программа, посылающая в контроллер команду OCW3, по которой микропроцессор блокирует свой вход INTR и подготавливает цепи в 8259А, необходимые для опроса. Затем в контроллер подается команда чтения (OUT 20h для MASTER или OUT A0h для SLAVE), по которой отрабатывается функция, аналогичная последовательности INTA (по приоритетному запросу устанавливается соответствующий разряд ISR и сбрасывается одноименный разряд IRR), и на шину Х выдается слово опроса прерываний, структура которого приведена на рис. 6.30.

 
 

Рис. 6.30. Структура слова опроса прерываний

 

По полученой информации программа либо перейдет на программу- обработчик приоритетного прерывания либо ликвидирует следы обслуживаемого прерывания в контроллере (сброс соответствующего разряда ISR по команде EOI). При необходимости операция опроса может выполняться до тех пор, пока разряд I (D7) не станет равным нулю.

 

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

Для расширения количества обслуживаемых запросов на прерывание можно использовать несколько контроллеров 8259A, объединив их. Этот метод расширения возможностей прерываний называется каскадированием. При этом контроллеры должны быть запрограммированы для работы в каскадном режиме. Для повышения гибкости при каскадировании контроллеров 8259A для некоторых применений предусмотрен специальный режим полного вложения (SFNM). В подсистеме контроллера прерываний PC AT используется каскадное объединение двух контроллеров прерываний 8259А.

 

Каскадный режим

Если 8259А запрограммирован для работы в каскадном режиме, то один контроллер 8259A становится главным (MASTER) по отношению к остальным, подчиненным (SLAVE). На рис. 6.31 показана система, состоящая из двух контроллеров, обеспечивающих прерывания 15 уровней.

Для работы в каскадном режиме необходима специальная аппаратная настройка. Поясним это на примере. MASTER определяется высоким уровнем на выводе SP/EN, а SLAVE - низким уровнем на SP/EN. Кроме того, INTR SLAVE подключен к входному выводу IRQ2 MASTER. Выводы CAS0-CAS2 контроллеров объединены. Эти выводы являются входами для MASTER и выходами для SLAVE. Выполняя функцию локальной шины 8259A, они определяют, какой SLAVE управляет системной шиной при выдаче вектора прерываний. Этот выбор осуществляется при получении первого сигнала INTA. Все остальные выводы подключены так же, как и при обычной работе (каждый контроллер 8259A получает сигнал INTA).

 

 
 

Рис. 6.31. Система из двух контроллеров, обеспечивающих прерывания 15 уровней

 

Помимо этих требований к аппаратной настройке, все контроллеры 8259A должны быть запрограммированы на работу в каскадном режиме. Программирование каскадного режима выполняется во время инициализации каждого контроллера. 8259A, выбранный в качестве MASTER, должен при инициализации быть "уведомлен", какой из его входов IRQ подключен к выводу INTR подчиненного контроллера. С другой стороны, каждому из подчиненных контроллеров при инициализации должно быть указано , к какому из входов IRQ MASTER подключен его вывод INTR. Все это необходимо для того, чтобы выводы CAS0-CAS2 MASTER могли обращаться к каждому подчиненному контроллеру в отдельности. Как и при обычной работе, каждый 8259A должен быть инициализирован для присвоения его входам IRQ уникального вектора прерываний.

Теперь перейдем к описанию последовательности событий во время допустимого прерывания от подчиненного контроллера. Предположим, что на вход IRQ SLAVE поступил запрос прерывания. Пусть это прерывание имеет более высокий приоритет по сравнению с приоритетом других запросов и вывод INTR возбужден. При этом MASTER получает уведомление о запросе через заданный вывод IRQ. Предположим, что этот запрос к MASTER имеет более высокий приоритет, чем другие запросы на MASTER, и вывод INTR MASTER возбуждается, прерывая работу процессора. Во время последовательности подтверждения прерывания устаналивается соответствующий разряд ISR как у MASTER, так и у SLAVE. Это очень важно для процессора PC AT и означает, что по окончании выполнения сервисной программы должны быть выданы две команды EOI - одна для MASTER и одна для SLAVE (если только не установлен автоматический режим EOI).







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