Track: By me composed! Xe-xe.. :)
Author: Macros, 14 July 2K1.
-----------------------------------------
+--------+
11+D0 IRO+18
10+D1 IR1+19 Контроллер прерываний
9+D2 IR2+20
8+D3 IRЗ+21 i8259A
7+D4 IRЧ+22
6+D5 IRS+23
5+D6 IRб+24
4+D7 IR7+25
27+A0 |
1+CS# |
3+RD# |
2+WR# |
17+INT |
26+INTA |
+--------+
Маскируемые прерывания обслуживаются
контроллером 8259A. Этот контроллер име-
ет 8 входов запросов прерываний IRQx от
внешних источников и выход запроса INTR,
по которому запрос поступает на однои-
менный вход процессора. При обработке
запроса INTR процессор формирует шинный
цикл подтверждения прерывания INTA, в
котором контроллер передает по шине дан-
ных 8-битный вектор прерывания. Этот
вектор является номером, по которому
ссылка на процедуру обработки прерывания
хранится в таблице прерываний.
Команды инициализации обозначаются
ICW1-ICWЧ и посылаются инструкциями
8-битного вывода в порты контроллера.
Первый байт ICW1 посылается по адресу
020h, байты ICW2-ICWЧ посылаются по ад-
ресу 021h (в PC).
Байт ICW1 - конфигуратор контроллера.
- Биты 7-5=0 (в PC не используются)
- Бит 4=1 - признак команды инициализа-
+ции (в командах управления от нулевой)
- Бит 3 - чувствительность линий запро-
са:
0=прерывание по перепаду
1=прерывание по уровню
- Бит 2=0 (в PC не используется)
- Бит 1 - схема включения
1=одиночный контроллер (XT)
0=каскадное включение (AT)
- Бит 0 - признак использования ICWЧ
Байт ICW2 задает начальный номер векто-
ров, генерируемых данным контроллером, в
таблице прерываний. Биты 2-0 должны иметь
нулевые значения.
Байт ICWЗ используется только для кас-
кадного включения.
Для ведущего контроллера быты 0-7 ука-
зывают на наличие ведомых контроллеров на
линиях IRQO-IRQ7 соответственно.
Для ведомого контроллера биты 0-2 со-
держат номер IRQ ведущего контроллера, к
которому он подключен, биты 3-7=0
Байт ICWЧ задает режим работы контрол-
лера, его применение обязательно при на-
чальной инициализации (в XT - третий байт
инициализации)
- Биты 5-7 не используются
- Бит 4 - SFNM - включает режим вложен-
ности приоритетов запросов ведущего и
ведомого контроллеров
- Бит 3 - BUF - признак буферизованнос-
Stu шины.
- Бит 2 - M/S - положение в каскаде:
1=ведущий, 0=ведомый
- Бит 1 - AEOI - разрешение автомати-
ческого завершения прерывания (которое не
требует сброса бита маски по оконча- нии
обслуживания запроса)
- Бит 0 - тип используемого процессора:
N 1=8086/8088 и старше, 0=8080
В операционном режиме контроллер
воспринимает команды управления
OCW1-OCWЗ. OCW1 посылается по адресу
021h, OCW2, OCWЗ - по адресу 020h (в PC).
Байт OCW1 - маски запросов, единичное
значение бита означает маскирование зап-
роса.
- Биты 0-7 8259#1 - маски запросов
IRQO-IRQ7
- Биты 0-7 8259#2 - маски запросов
IRQ8-IRQ15
Байт OSW2 - завершение обслуживания
(EOI), управление приоритетом.
- Биты 7-5 задают код операци:
001 - неспецифический EOI (AEOI=1 в
ICWЧ)
011* - специфический EOI для запроса
LLL
101 - неспецифический EOI с ротацией
приоритета
100 - установка режима ротации приори-
тета
000 - сброс режима ротации приоритета
111* - специфический EOI с ротацией
приоритета
110* - установка низшего приоритета
010 - нет операции В операциях,
помеченых звездочкой, ис- пользвуются
биты 2-0 (поле LLL)
- Биты 4-3=00 - признак OCW2
- Биты 2-0 - поле LLL - номер уровня, к
пкоторому относится команда.
Байт OCWЗ - оперативное управление
контроллером
- Бит 7=0
- Биты 6-5 режим специального маскиро-
вания (в PC не используется):
11 - установить
10 - сбросить
00,01 - не изменять
- Биты 4-3=01 - признак OCWЗ
- Бит 2=0 - запрещает режим полинга (в
котором запрос прерывания к процессору не
вырабатывается)
- Биты 1-0 - управление чтением ре-
гистров:
10=чтение IR - регистра масок
11=чтение IS - регистра обслуживае-
мого прерывания
00,01 - не изменять регистр
Для чтения регистра маски или регистра
обслуживаемого прерывания (в зависимости
от бит 1-0 OCWЗ) используется порт 021h
(в PC).
Other articles: