Главная -> Книги

(0) (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) (21) (22) (23) (24) (25) (26) (27) (28) (29) (30) (31) (32) (33) (34) (35) (36) (37) (38) (39) (40) (41) (42) (43) (44) (45) (46) (47) (48) (49) (50) (51) (52) (53) (54) (55) (56) (57) (58) (59) (60) (61) (62) ( 63 ) (64) (65) (66) (67) (68) (69) (70) (71) (72) (73) (74) (75) (76) (77) (78) (79) (80) (81) (82) (83) (84) (85) (86) (87) (88) (89) (90) (91) (92) (93) (94) (95) (96) (97) (98) (99) (100) (101) (102) (103) (104) (105) (106) (107) (108) (109) (110) (111) (112) (113) (114) (115) (116) (117) (118) (119) (120) (121) (122) (123) (124) (63)

ся соответствующий бит в ISR, что блокирует восприятие прерываний от этого входа и всех входов с меньщими приоритетами. Запросы от входов с большими приоритетами генерируют сигналы INT, которые подтверждаются, если прерывания процессора разрешены командой EI в текущей подпрограмме. (Напомним, что процессор автоматически запрещает прерывания при восприятии сигнала INT, а после команды EI выполняет следующую команду, даже если на входе INT действует высокий уровень). Каждая подпрограмма обслуживания в режиме вложенных прерываний должна информировать контроллер о своем завершении посредством загрузки в него приказа неадресуемого конца прерывания EOI. Этот приказ выдается с Ао=0 и Dr-o= = 20 Н и сбрасывает установленный бит регистра ISR с максимальным приоритетом.

При наличии в системе нескольких контроллеров каждый из них инициализируется автономно. Последовательность инициализации определяет адреса подпрограмм для всех входов IR и взаимодействия ведущего и ведомых контроллеров. Эту функцию выполняет приказ ICW3; он сообщает ведущему контроллеру, какие его входы IR подключены к ведомым контроллерам, а каждому ведомому - к какому входу IR ведущего контроллера подключен его выход INT. Данный вход представлен полем идентификации ГОг-о в приказе ICW3 ведомого контроллера. Отметим, что каждый ведомый контроллер может быть запрограммирован на работу в любом режиме.

Рабочие приказы. Приказами инициализации без всякой дополнительной информации любой из контроллеров программируется для работы в режиме вложенных прерываний. Для задания других режимов работы в контроллер необходимо загрузить дополннтельные рабочие приказы OCW, форматы которых приведены на рис. 5-14.

С помощью приказа OCWi, который загружается после инициализации со значением Ао=1, в любой момент времени программно можно установить и сбросить отдельные биты регистра масок прерываний IMR. Состояния триггеров этого регистра действуют на выходы регистра IRR, поэтому даже при маскировании входа IR,сигнал запроса может установить соответствующий бит IRR, но прерывание процессора не генерируется. После снятия маски запомненный запрос может привести к формированию сигнала ШТ.

С помощью приказа OCW2 можно задать пять операций, приведенных в табл. 5-2. Приказ неадресуемого конца прерывания EOI дает возможность сбросить установлен-



Ар 7 5 5 Д 5

2 / О

OCW,

iiiiiiii

Установить масну

65t3210

Сбросить маски

R ]ftm\EOI

Циклический приоритет

l2\Li\Lo OCWz

Адрес входа

1\Сбросить бит ISR с максимальным приоритетом

Поле Lz-o используется

Не используется

До 1 6 5 It 3 2 1 О

X ЩЗ/Ц 0\1 I Р t«5«ISJ OCW3

Не испальзиется

СброситьЗММ

УстановитьШ

Опросите 1

Не испальзиется

Считать IRR

Считать ISR

Рис. 5-14. Форматы рабочих приказов

Таблица 5-2

Варианты приказа OCWj

Приказ

Операция

Пеадресуе-

Сброс бита ISR с макси-

мый EOI

мальным приоритетом

Адамуемый

Сброс бита ISR, определяемого полем L2-0

Установка

Назначение входу IR, оп-

приоритета

ределяемому полем L2-0, низшего приоритета

Автоцикл

Сброс бита ISR с максимальным приоритетом и назначение соответствующего входу низ-

Адресуемый

шего приоритета

Сброс бита ISR, опреде-

цикл

ляемого полем L2-0, и назначение ему низшего приоритета



ный бит регистра ISR с наибольшим приоритетом, а код адресуемого EOI позволяет сбросить бит ISR, определяемый полем L2-0. Первый из них рекомендуется для режима вложенных прерываний, а второй -для всех остальных режимов, что упрощает отладку системы.

Приказ установки приоритета позволяет программно задать устройство (вход IR) с низшим приоритетом независимо от EOI, т. е. без изменения регистра ISR. Поле L2-0 определяет вход IR, которому назначается низший приоритет, а приоритеты остальных входов назначаются в круговом порядке.

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

Наконец, приказ адресуемого цикла обеспечивает сброс в конце подпрограммы обслуживания бита ISR, адресуемого полем L2 o. Дополнительно соответствующему входу IR назначается низший приоритет, а приоритеты остальных входов упорядочиваются также в круговом порядке.

В табл. 5-3 приведена сводка приказов OCW3. Первый дополнительный режим называется режимом специальной маски SMM. Пусть в некоторой подпрограмме обслуживания имеется фрагмент, когда необходимо разрешить все прерывания, даже от входов с меньшими приоритетами. Этого можно достичь приказом EOI сброса соответствующего бита ISR. Однако сброс бита ISR необратим и прерывания от устройств с меньшими приоритетами остаются

Таблица 5-3

Варианты приказа OCW3

Приказ

Операция

Установка

Установка режима спе-

циальной маски

Сброс SMM

Сброс режима специаль-

ной маски

Режим опроса

Опрос по следующему

импульсу RD

Считывание

Считывание ISR по сле-

дующему импульсу RD

Считывание

Считывание IRR по сле-

дующему импульсу RD



(0) (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) (21) (22) (23) (24) (25) (26) (27) (28) (29) (30) (31) (32) (33) (34) (35) (36) (37) (38) (39) (40) (41) (42) (43) (44) (45) (46) (47) (48) (49) (50) (51) (52) (53) (54) (55) (56) (57) (58) (59) (60) (61) (62) ( 63 ) (64) (65) (66) (67) (68) (69) (70) (71) (72) (73) (74) (75) (76) (77) (78) (79) (80) (81) (82) (83) (84) (85) (86) (87) (88) (89) (90) (91) (92) (93) (94) (95) (96) (97) (98) (99) (100) (101) (102) (103) (104) (105) (106) (107) (108) (109) (110) (111) (112) (113) (114) (115) (116) (117) (118) (119) (120) (121) (122) (123) (124)