Этот режим программируется битом 3 в ICW1.
Если LTIM=0, прерывание будет распознаваться по
переходу от нижнего уровня к верхнему на входе IR. Вход IR
может оставаться высоким, без генерации других прерываний.
Если LTIM=1, прерывание будет распознаваться по
"высокому" уровню на входе IR, и нет необходимости для
определения фронта. Запрос на прерывание должен убираться
перед выдачей команды EOI, либо прерывание ЦПУ должно
позволить предотвратить реагирование на второе прерывание.
На диаграмме приоритетной ячейки показана
концептульная цепь реагирования на фронт и на уровень
входных сигналов в 8259A. Обязательно отметьте, что триггер
запроса является D-триггером.
В обоих режимах реагирования как по фронту, так и по
уровню вход IR должен оставаться высоким до заднего фронта
первого INTA. Если вход IR станет низким до этого,
произойдет прерывание по умолчанию IR7, когда ЦПУ подтвердит
прерывание. Это может быть полезно для гарантии определения
прерываний вызванных вызванных всплесками шума на входе IR.
Чтобы использовать это средство, рутина для IR7 используется
для "уборки" в виде простой инструкции возврата,
следовательно игнорируя прерывание. Если IR7 необходимо для
других целей, IR7, вызванную по умолчания, можно выделить,
прочитав ISR. Обычное IR7 устанавливает соответствующий бит
ISR, а шумовое IR7 нет. Если произойдет IR7- шумовое при
выполнении рутины обслуживания обычного IR7, регистр ISR
останется установленным. В этом случае необходимо
прослеживать, вошли или нет в рутину IR7 ранее. Если
произошло второе IR7, то это шум.
Специальный полностью вложенный режим.
Этот режим используется в больших системах, когда
применяется каскадирование, а приоритеты хранятся в каждом
ведомом 8259A. В этом случае ведущий 8259A программируется
(используя ICW4) на полностью вложенный режим. Этот режим
похож на обычный вложенный режим за исключением следующего:
a. При обслуживании запроса на прерывание от определенного
ведомого, этот ведомый 8259A не блокируется приоритетной
логикой ведущего и последующие запросы на прерывание
более приоритетных IR ведомого будут распознаны ведущим и
вызовут прерывания процессора. В обычном вложенном режиме
ведомый 8259A маскируется весь, когда обслуживается один
из его запросов, и ни один более высокоприоритетный
запрос от него не может быть обслужен.
b. При выходе из рутины обслуживания прерывания
матобеспечение обязано проверить, было ли обслуженное
прерывание единственным в данном ведомом. Это делается
путем посылки команды неспецифичного EOI на ведомый, с
последующим считыванием регистра обслуживания и проверки
его на нуль. Если он пуст, команда неспецифичного EOI
может быть послана и на ведущий. Если же не нуль, то не
должно посылаться никакого EOI.
Буферный режим
Когда 8259A используется в больших системах, где для
подключения на шину данных требуются буферы и применяется
каскадный режим, существуют проблемы с разрешением буферов.
Буферный режим будет структурировать 8259A так,
чтобы посылать сигнал разрешения на SP/EN разрешая буфера. в
данном режиме как только разрешаются выходы шины данных
8259A, становится активным выход SP/EN.
Данная модификация заставляет определять в
программном обеспечении, является ли данная 8259A ведущей
или ведомой. Бит 3 в ICW4 программирует в буферный режим, а
бит 2 в ICW4 определяет, является данная 8259A ведущей или
ведомой.
К А С К А Д Н Ы Й Р Е Ж И М.
8259A может быть лего подсоединен в систему из
одного главного и до 8 ведущих, обрабатывая до 64
приоритетных уровней.
Ведущий управляет ведомыми по трем линиям каскодной
шины. Каскадная шина работает как "выбор микросхемы" для
ведомого во время последовательности INTA.
В каскадной конфигурации выходы прерывания ведомых
подключаются на входы запросов на прерывания IR ведущего.
Когда активизируется линия запроса в ведомом, а затем
подтверждается, ведущий разрешит соответствующему ведомому
выдать адрес рутины устройства в течение второго и третьего
байта INTA (только второго в 8086/8088)
Сигналы каскадной шины обычно низкие и содержат код
адреса ведомого между задним фронтом первого импульса INTA и
задним фронтом третьего импульса. Каждый 8259A в системе
должен быть раздельно проинициализирован и может быть
запрограммирован для работы в различных режимах. Команда EOI
должно выдаваться дважды: один раз на ведущий и другой на
соответствующий ведомый. Для активизации входа CS (выбор
схемы) каждого 8259A требуется адресный декодер.
Каскадные сигналы ведущего 8259A активизируются
только для входов ведомых, ни один вход ведомого не
оставляет каскадные линии неактивными (низкими).