Лаба прерывания / осн.Тех защ ПКП ВН59
.docxЦель работы: познакомиться с системой прерываний ПЭВМ
Вариант задания к лабораторной работе
Настроить КП на заданные типы прерываний (варианты смотри ниже). Учесть при этом, что в системе один КП и запрещен автоконец прерываний.
Поработать, снимая «штору».
Замаскировать заданные входы IRi.
Поработать, снимая «штору».
Размаскировать все входы.
Изменить приоритеты входов, установив старший приоритет входу IRj.
Поработать, снимая «штору».
Вариант |
тип (пункт1) |
замаскировать (пункт 3) |
3 |
32-39 |
IR5 |
Перед началом работы все контроллеры должны быть настроены. Для этого на каждый ВН59 надо последовательно подать три или четыре команды инициализации (ICW1 – ICW4). Три команды подаются, если в системе один контроллер прерываний, четыре – если несколько. Если в системе несколько контроллеров, вначале настраивается MASTER, а затем SLAVE.
ICW1 передается при А0=0 и имеет формат
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
0 |
0 |
0 |
1 |
LTIM |
0 |
SNGL |
IC4 |
ICW2 передается при А0=1
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
T7 |
T6 |
T5 |
T4 |
T3 |
* |
* |
* |
По сути дела, передавая контроллеру ICW2, мы задаем тип ножке IR0, причем этот тип всегда кратен восьми (0 или 8 или 16 …). Типы всех остальных ножек контроллер формирует автоматически, прибавляя к типу IR0 по единице. То есть, если у IR0 тип 8, то у IR1 тип 9, у IR2 тип 10 и так далее.
Например, хотим задать IR0 тип 16 (00010000 = 00010***)
ICW4 передается при А0=1 и обычно имеет формат
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
0 |
0 |
0 |
SFNM |
0 |
0 |
AEOI |
1 |
AEOI = 1 – автоматическое окончание прерываний (не нужна команда EOI). AEOI = 0 – обычное окончание прерываний (нужна команда EOI).
SFNM = 0 – обычный полно вложенный режим. SFNM = 1 - специальный полно вложенный режим.
После того как ВН59 настроен, все остальные настроечные слова он воспринимает как команды управления. Всего имеется три таких команды. Обычно их обозначают OCW1, OCW2 и OCW3.
OCW1 передается при А0 = 1. Если в i-ом разряде OCW1 стоит единица, вход IRi контроллера маскируется и запросы на этом входе ВН59 восприниматься не будут до тех пор, пока программист его не размаскирует.
Вывод: в ходе лабораторной работы научились настраивать контроллер прерываний маскировать выходы, снимать штору.
Ход работы
Запустили эмулятор, настроили нужное значения входа RD=1 для чтения данных. Выбрали из меню «Программирование КП» пункт «Команды настройки».
OCW1, OCW2 – входы управления, а ICW1, ICW2, ICW4 – входы для настройки контроллера.
Занесли данные в ICW:
A0=0
ICW1: 00010011
A0=1
ICW2: 00100000
A0=1
ICW4: 00000001
«Штора» на IRQ5. Выставили IRQ5=1 в регистре запросов на прерывания.
Нажали несколько раз на кнопку «Работа», пока не разблокируются регистры запросов на прерывания.
Занесли данные в OCW:
Выбрали из меню «Программирование КП» пункт «Команды управления» и OCW1.
Замаскировали IRQ5:00100000, для этого занесли в OCW1 данные:
A0=1
OCW1: 00100000
Выбрали из меню «Программирование КП» пункт «Команды управления» и OCW2.
Сняли «штору»:00100000, для этого занесли данные:
A0=0
OCW2: 00100000
Сняли маскировку:
A0=1
OCW1: 00000000
Вывод: в ходе лабораторной работы настроили КП для определенных типов прерываний, учитывая ограничения на один КП и запрет автоматического завершения прерываний. Изучили реакцию системы на работу с "шторкой". Замаскировали и размаскировали входы IRQi.