книги / Микропроцессоры и микроЭВМ. Периферийные устройства
.pdf7. Программируемый контроллер прерываний
Программируемый контроллер прерываний (ПКП) ИМС ВН59 реализует управление приоритетными прерываниями от 8 источников. Число источников прерывания относительно просто может быть увеличено до 64. Контроллер инициализируется под управлением программы и с использованием управляю щих слов может быть настроен для работы в одном из следующих четырех ре жимов:
-векторное прерывание с фиксированным приоритетом. Каждому входу запросов прерывания присваивается фиксированный приоритет в порядке воз растания. Запрос с более высоким приоритетом прерывает обслуживание пре рывания с меньшим приоритетом;
-векторное прерывание с циклическим перераспределением приорите тов. Каждому входу запросов прерывания, как и в предыдущем режиме работы, присваивается приоритет, но после каждого запроса и обслуживания прерыва ния вся система приоритетов изменяется по кругу так, что последний обслу женный вход запроса прерывания будет иметь самый низкий приоритет, а вход запроса прерывания, который дольше всех не обслуживался - наивысший при оритет;
1.После появления на одной или нескольких линиях ЗПР сигнала 1 кон троллер фиксирует запросы в РЗПР, учитывая их приоритеты, и формирует сигнал ПР для МП.
2.После завершения выполнения текущей команды МП в случае, если прерывания разрешены командой EI, выдает в 11KII сигнал подтверждения пре рывания ПНР.
3.1ЖП по ШД передает в МП первый байт (код операции) команды CALL для вызова подпрограммы обслуживания'прерывания.
4.Код операции CALL (11001101B=CDH) заставляет МП выработать два дополнительных сигнала ППР, по которым ПКП передает в МП предваритель но запрограммированный двухбайтный адрес подпрограммы обслуживания прерывания.
5.Управление передается подпрограмме обслуживания прерывания.
6.После завершения подпрограммы выполняется возврат к прерванной программе.
Регистр запросов РЗПР фиксирует все сигналы ЗПР в том случае, если они сохраняют значение 1 до первого ответного сигнала ПИР. По сигналу ПИР! контроллер выдает в шину данных код операции CALL и фиксирует сигнал за проса в соответствующем разряде РЗПР. По сигналам ППР2 и ППРЗ контроллер выдает в ШД два байта начального адреса подпрограммы обслуживания преры вания. После сигнала ППРЗ логика приоритетов устанавливает в 1 соответст вующий разряд в регистре обслуживания P03JTP, сбрасывает этот же разряд в регистре РЗПР и блокирует сигналы ЗПР от этого и от всех других входов
сменьшим приоритетом. При этом сигнал ЗПР на данном входе может еще быть в состоянии 1, однако это нс вызовет повторного прерывания, так как по следующие запросы прерываний от данного входа запрещены до момента по лучения от МП управляющего слова конца прерывания (УСКП) или специаль ный конец прерывания (УССКП), выдачей которых б ПКП должны завершаться все подпрограммы обслуживания прерываний. Для повторного запроса преры вания сигнал на входе ЗПР должен быть предварительно сброшен в нулевое со стояние.
Запретить обслуживание запросов прерывания можно применением мас кирования. Загрузка в регистр МЗПР соответствующего управляющего словамаски (УСМ) позволяет заблокировать любой из входов ЗПР.
При этом сигпал ЗПР будет зафиксирован в РЗПР и может быть обслу жен, если выполняемая программа снимет маску. Маскирование входа ЗПР
снекоторым приоритетом не блокирует прерывания от входов ЗПР с меньшими
приоритетами.
Модифицировать механизм блокировки сигналов ЗПР можно с использо ванием механизма специального маскирования, который позволяет «затемнить» любой разряд РОЗПР. Применяется этот механизм в тех случаях, когда при кладной программе необходимо на какое-то время разрешить прерывания от всех источников, в том числе и от источников прерывания с низкими приорите тами. Можно было бы обеспечить это загрузкой УС, по которому сбрасывается
Слово УС01 используется для маскирования отдельных запросов преры вания во время исполнения программы. Сигналы ЗПР фиксируются в РЗГГР, но не обслуживаются до тех пор, пока программа не снимет маску.
|
Младший бейт адресе в команде CALL |
Ао |
D7 DQ D5 П4 D3 Do D-} DQ |
B2 - Во - двоично-десятичный код ЗПР, выротевшего ПР (уазатель вектора прерывания)
|
АО |
О7 |
|
De |
Ds |
D4 |
D3 |
О2 |
D1 |
DQ |
|
УСИ2 |
□ |
А15 А14 |
А13 |
A12 |
AH |
Аю |
Ag |
Aa |
Старший байт |
||
|
|||||||||||
|
адреса в |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
команде CALL |
|
Ар |
Dr |
|
Da |
05 |
D4 |
D3 |
D2 |
01 |
DO |
|
УСИЗа |
1 |
U7 |
|
иа |
U5 |
U4 |
U3 |
U2 |
U1 |
U0 |
Для |
|
ведущею |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
ПКЛ |
|
|
1 |
Имеет ведомого |
На вход ЗПР ведущего сигнал ПР ведомого |
|
||||||
|
|
0 |
На имеет |
|
На вход ЗПР сигналы запроса отУВВ |
|
|
||||
|
|
L |
|
_______________________________________________ I |
|||||||
|
Ао |
Об |
05 |
04 |
D3 |
02 |
01 |
DO |
|
||
|
07 |
|
|
||||||||
|
|
|
|
0 |
0 |
0 |
0 |
U2 |
U1 |
ио |
Для |
|
|
|
|
ведомого |
|||||||
|
|
|
|
|
|
|
|
|
|
|
ПКП |
№ |
и г |
U1 |
и0 |
ПКП |
|||
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
2 |
0 |
1 |
0 |
3 |
с |
1 |
1 |
4 |
1 |
0 |
0 |
5 |
1 |
0 |
1 |
6 |
1 |
1 |
0 |
7 |
1 |
1 |
1 |
fs
i 1
£ 9
l l
Слово УСОЗ используется для управления режимом специального маски рования, для чтения состояния ПКП и управления работой ПКП в режиме пре рываний по результатам опроса.
Таблица 7.1
Операции ПКП для УС02
УСО |
D 7D 6D 5D4D 3 |
D2D 1D0 |
КП |
0 0 1 0 0 |
X X X |
к п ц |
1 0 1 0 0 |
X X X |
е к п |
0 1 1 0 0 |
АР2АР1АП0 |
е к п ц |
1 1 1 0 0 |
АР2АР1АП0 |
УПЦ |
1 1 0 0 0 |
APjAPiAIIo |
|
|
i |
|
|
1 |
Операции
Фиксированный приоритет. Сброс разряда РОЗПР с максимальным приоритетом Конец прерывания. Циклический сдвиг приоритетов. Присвоение обслуженному запросу минимального уровня приоритетов Специальный конец прерывания. Фиксиро ванный приоритет.
АРгАРо - адрес сбрасываемого разряда в РОЗПР Специальный конец прерывания. Цикличе
ский сдвиг приоритетов.
АРгАРо - адрес сбрасываемого разряда в РОЗПР и присвоения ему низшего уровня приоритетов
Установка приоритета. Циклический сдвиг S приоритета без завершения обслуживания прерывания.
АРгАРо - адрес входа ЗПР. которому при сваивается низший приоритет
С помощью УСОЗ МП имеет возможность считать состояние ПКП, т.е. перегрузить в свои рабочие регистры для последующего анализа содержимое РЗПР, РОЗПР и регистр маски. Содержимое регистров считывается по команде IN ADR, которая должна следовать сразу за УСОЗ. Для чтения регистра маски не надо подавать УСОЗ, так как в буфере данных ПКП автоматически пред ставляется содержимое регистра МЗПР, если AQ= 1 и на вход ЧТ подается сиг нал 0, генерируемый по команде IN ADR.
При обслуживании прерываний по опросу программа блокирует коман дой DI вход ЗПР процессора, так как в этом режиме инициирует обслуживание сам МП. После подачи УСОЗ обслуживание по результату’ опроса по команде IN ADR (сигнал Ч Т =0) в МП передается слово состояния ПКП, формат которо го и назначение полей показаны на рис. 7.4.
Обслуживание запросов УВВ на прерывание осуществляется после ана лиза считанного слова состояния ПКП специальной программой, которая опре деляет, какой из пришедших ЗПР обладает наивысшим приоритетом по сравне нию с приоритетом выполняемой в текущий момент времени программы.
к МП
|
|
ППР |
|
ПР |
т |
|
|
|
|
|
|
|
л |
|
<2= |
0 |
1 |
о |
ПКП |
* |
|
|
|
|
|||
2 |
ё |
1чл^2-0 |
|
ведущий |
^ |
|
|
|
|||||
CZ |
|
|
щ |
|||
|
Л |
|
в п м |
|
_ |
|
|
у |
|
|
|
|
|
х |
в |
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
х |
|
|
|
|
|
|
3 |
А- |
ППР |
|
ПР |
|
|
|
|
|
О) ПКП |
|
||
|
N- |
D(7 - |
^ |
|||
|
|
|
|
|
ведомый |
ж |
|
|
к а с 2-о |
№ 7 |
ш |
||
|
|
|
^ |
|||
|
|
|
|
|
|
|
|
у •, |
я п м |
|
|
Рис. 7.5. Каскадное соединение ПКП
ЗПРо
ЗПР1
ЗПР2
ЗПРз
ЗПР*
ЗПРв
ЗПРв
ЗПР7
ЗПРв
ЗПРв
ЗПРш
ЗПРм
ЗПР,2
ЗПР,3
ЗПР14
ЗПР1б
ЗПР2|
По сигаалам ППР устанавливаются соответствующие прерывающим вхо дам разряды РОЗПР ведущего и ведомого ПКП. Поэтому подпрограмма обслу живания прерывания должна завершаться выдачей двух УС конца прерывания для ведущего и ведомого ПКП.
Режимы работы и система распределения приоритетов за внешними уст ройствами могут быть изменены для каждого ПКП статически или динамиче ски в любое время выполнения основной программы системы.
Инициализация ПКПВН59
Пример. Запрограммировать режим работы, используя УСИ1иУСИ2, с па раметрами:
- начальный адрес таблицы переходов - 4000Н;
-формат - 4 байта;
-один ПКП в системе.
1.Составим управляющее слово инициализации (УСИ1):
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
|
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
И |
|
|
|
|
|
|
|
1| |
|
2,Составим управляющее слово инициализации (УСИ2);
D7 D6 |
D5 |
D4 |
D3 |
D2 |
D1__ DO |
J |
0 |
0 |
j 0 |
0 |
о ! о 1 |
|
. . 1 |
|
1 |
|
____I_____ I |
-в шестнадцатиричном коде УСИ2 = 40Н;
-примем адрес ПКП, чтобы записать в регистр УСИ1 - 50Н, адрес дол жен быть всегда четным, т.к. Ао =0, адрес УСИ2 = 51Н, т.к. Ао =1.
3.Напишем программу инициализации:
LOAD: DI |
; запретить прерывание |
MVI А, 16Н; занести УСИ1 в регистр А |
|
OUT ЗОН |
; вывести УСИ1 из per. А в рег.УСИ! ПКП |
MVI А, 40Н; занести УСИ2 в регистр А |
|
OUT 51Н |
; вывести УСИ2 из per. А в рег.УСИ2 ПК11 |
Е1 |
; разрешить прерывание |