On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru


https://www.munich-medical.ru онкологическая клиника бад триссль в мюнхене.





 

6. Командные слова операции (OCW)

После  программирования  8259A	командными   словами
инициализации  микросхема   готова  принимать	запросы   на
прерывания по  входным линиям.	Однако, с  помощью командных
слов операции ( OCW )  во время работы 8259A можно  выбирать
алгоритмы,  которые  укажут  8259A  в  каком  режиме следует
оперировать.

	OCW1 устанавливает и сбрасывает маскировочные биты в
регистре масок прерываний  (IMR). M7-M0 представляют  восемь
битов маски. М=1 указывает, что канал маскирован (запрещен),
а М=0, что канал разрешен.

R,  SL,  EOI  -  эти  три  бита управляют режимами ротации и
    завершения прерываний, а также их комбинациями. Описание
    этих комбинаций находится на блок-схеме.

L2,  L1,  L0  -   эти  биты  определяют  уровень   активного
    прерывания, если установлен бит SL


ESMM  -   разрешает  режим   специальных  масок.   Когда  он
    установлен	в   1,	он   позволяет	устанавливать	 или
    сбрасывать	биту  SMM  режим  специальных  масок.	Если
    ESMM=0, бит SMM становится не используемым.

SMM  -	режим специальных масок.  Если ESMM=1 и  SMM=1 8259A
    войдет в  режим специальных  масок, если  ESMM=1 и SMM=0
    8259A вернется в режим обычных масок. Когда ESMM=0,  бит
    SMM не эффективен.

Полностью вложенный режим

	Данный	режим  устанавливается	после  инициализации
если не запрограммирован другой режим. Запросы на прерывания
упорядочены по приоритетам  от 0 до  7 ( 0  - высший). Когда
прерывание подтверждается,  определяется запрос  с наивысшим
проритетом и его  вектор размещается на  шине.	Кроме  того,
устанавливается   бит	 (IS0-7)    регистра	обслуживания
прерывания.   Этот   бит   останется   до   тех   пор,	пока
микропроцессор не  выдаст команду  EOI -  "конец прерывания"
непосредственно  перед	возвратом  из  рутины  обслуживания,
либо,  если  установлен   бит  AEOI  (автоматический   конец
прерывания), пока не будет заднего фронта последнего сигнала
INTA. Пока  установлен бит  в IS  все последующие прерывания
того же или более низкого приоритета запрещаются, в то время
как  более  высокие   уровнибудут  генерировать   прерывания
(которые будут подтверждаться только если внутренний триггер
разрешения  прерываний	в  микропроцессоре  был восстановлен
программой).
	После инициализирующей последовательности IR0  имеет
наивысший приоритет,  IR7 -  самый низкий.  Ниже, в описании
режима ротации приоритетов,  поясняется, как можно  изменять
приоритеты.


Конец прерывания (EOI)

	Бит   обслуживания   (IS   -   In   Service)   может
сбрасываться   либо   автоматически   по   заднему    фронту
последнего  в  последовательности   импульса  INTA,   (когда
установлен бит AEOI в ICW1), либо командным словом,  которое
должно	быть  выдано  в   8259A  перед	выходом  из   рутины
обслуживания (команда EOI).  В каскадном режиме  команда EOI
должна выдаваться дважды, первый  раз для ведущего и  другой
для соответствующего ведомого.
	Существует  две  формы	команды  EOI:  специфичная и
неспецифичная.	Если  8259A  работает  в  режимах,   которые
сохраняют структуру  полностью вложенного  режима, то  можно
определить  какой  бит	 IS  нужно  сбросить   по  EOI.   По
неспецифичной EOI в 8259A автоматически сбрасывается бит  IS
с наивысшим приоритетом  из тех, что  установлены, поскольку
при полностью вложенном режиме самый высокий  подтвержденный
и обслуженный уровень IS всегда последний.

Неспецифичный EOI может быть выдан в OCW2 (EOI=1, SL=0, R=0).

	Если же используемый  режим вызывает беспокойство  о
целостности вложенной структуры,  8259A не может  определять
последний подтвержденный уровень. В этом случае должен	быть
выдан  специфичный  "конец  прерывания",  в команду которого
включен и номер сбрасываемого уровня. Специфичный EOI  может
быть  выдан  в	OCW2  (EOI=1,  SL=1,  R=0,а  L0-L2  являются
двоичным номером сбрасываемого бита IS).
	Необходимо   отметить,	 что	бит   IS,    который
замаскирован битом IMR,  не будет очищен  неспецифичным EOI6
tckb 8259A находится в режиме специальной маски.

Автоматический конец прерывания (AEOI)

	Если в	ICW4 бит  AEOI=1, 8259A  будет оперировать в
режиме	AEOI  постоянно,  пока	не будет перепрограммирована
новым ICW4.  В данном  режиме 8259A  автоматически выполняет
операцию неспецифичного EOI по заднему фронту последнего  из
импульсов  подтверждения  прерывания  (третий  в  MCS-80/85,
второй в iAPX86). Заметим,  что с точки зрения	системы этот
режим	должен	 использоваться   только,   когда  вложенная
многоуровневая	структура  прерываний  не  требуется  внутри
единственной 8259A.
	Режим  AEOI  может  использоваться  только в ведущей
8259A, но не в ведомой.


Автоматическая ротация (равноприоритетные устройства).

	В  некоторых  приложениях  встречаются	устройства с
равным	приоритетом.   В  этом	 режиме  устройство    после
обслуживания  получает	самый  низкий  приоритет,  так	 что
устройство  запрашивающее  прерывание  должно  будет ждать в
худшем случае  пока каждое  из 7  других устройств  не будет
обслужено по крайней мере однажды.  Например, если состояния
приоритетов и обслуживание перед ротацией было такое:

		      IS7  IS6	IS5  IS4  IS3  IS2  IS1  IS0
состояние IS:		0    1	  0    1    0	 0    0    0
состояние приоритета:	7    6	  5    4    3	 2    1    0
			  \младший		   старший/

(здесь IR4 самый высокий приоритет, требующий обслуживания),
то после ротации, когда IR4 обслужен и все другие приоритеты
ротируются соответственно:

		      IS7  IS6	IS5  IS4  IS3  IS2  IS1  IS0
состояние IS:		0    1	  0    1    0	 0    0    0
состояние приоритета:	2    1	  0    7    6	 5    4    3
			  старший/	\младший

	Существует  два  способа  выполнения  автоматической
ротации   с   использованием   OCW2,   ротация	 по  команде
неспецифичного EOI  (R=1, SL=0,  EOI=1) и  ротация в  режиме
автоматического EOI, который устанавливается по (R=1,  SL=0,
EOI=0) и сбрасывается по (R=0, SL=0, EOI=0).

Специфичная ротация ( специфичный приоритет)

	Программист может  изменять приоритеты	программируя
младший приоритет и фиксируя  тем самым все остальные.	Т.е.
если IR5  запрограммирован как	самый младшее  по приоритету
устройство, то IR6 будет иметь самый высокий приоритет.
Команда  установки   приоритета  выдается   в  в   OCW2  при
R=1, SL=1, EOI=0 и в L0-L2 двоичный код приоритетного уровня
младшего по приоритету устройства.
Видно, что в этом режиме внутреннее состояние изменяется под
программным управлением по OCW2.  Однако, оно не зависит  от
команды  EOI  (также  выполняемой  с  помощью  OCW2). Замена
приоритетов может  быть выполнена  и во  время команды	EOI,
используя OCW2 с командой  ротации по специфичному EOI (R=1,
SL=1, EOI=1, а	L0-L2 = уровню	IR, который получает  низший
приоритет).



Маски прерываний

	Каждый	запрос	на  прерывание	может  быть отдельно
замаскирован	 регистром     масок	 прерываний    (IMR)
программируемым через OCW1. Каждый бит в IMR маскирует	один
канал прерывания,  если он  установлен (1).  Бит 0 маскирует
IR0, бит 1  маскирует IR1 и  т.д. Маскирование канала  IR не
влияет на операции по другим каналам.


Режим специальной маски.

	Некоторые   приложения	 могут	 потребовать  рутину
обслуживания для динамического выбора структуры  приоритетов
системы  во   время  своего   выполнения  под	 управлением
программного обеспечения. Например, желательно, чтобы рутина
запретила запросы младших приоритетов для одной группы своих
операторов, но разрешила некоторые из них для другой группы.
	Трудность здесь в том, что если запрос на прерывание
подтвержден, а команда "конец прерывания" не сбросила его IS
бит  (т.е.  рутина  обслуживания  пока	выполняется)   8259A
запрещает все запросы с младшими приоритетами при отсутствии
простого программного способа разрешить их.
	Здесь вполне пригодится  режим специальной маски.  В
этом режиме бит маски, установленный по OCW1, запрещает  все
прерывания по данному уровню и разрешает прерывания по	всем
другим	уровням,  как  старшим,так  и  младшим,  которые  не
маскированы.
	Следовательно,	прерывания   могут  быть   выборочно
разрешены, путем загрузки в регистр масок.
	Режим специальной  маски устанавливается  в OCW3,  в
котором SSMM=1, SMM=1 и сбрасывается при SSMM=1, SMM=0.



Команда опроса

	В  этом  режиме  выход	INT  не  используется, или в
микропроцессоре  сброшен  триггер  разрешающий	 прерывания.
Обслуживание   устройств    обеспечивается   программно    с
использованием команды опроса.
	Команда опроса	выдается при  установке P=1  в OCW3.
8259A трактует	следующий импульс  RD на  8259A (т.е.  RD=0,
CS=0)	 как	подтверждение	 прерывания	устанавливая
соответствующий бит  IS если  запрос существует  и считывает
приоритетный уровень. Прерывания  замораживаются между WR  и
RD.

	В течение RD на шину данных выдается слово:

  +D7-D6-D5-D4-D3-D2-D1-D0+ W0-W2 двоичный код высшего
      	                   	  приоритетного уровня
    I  -  -  -  - W2 W1 W0 	  затребовшего обслуживание
  +-----------------------+ I	  =1, если существует
				  прерывание

	Этот  режим  полезен,  если  существует  общая	 для
нескольких   уровней   рутина,	 так   что   не    требуется
последовательность  INTA  (экономия  памяти  ПЗУ).  С другой
стороны  режим	опроса	полезен  для расширения приоритетных
уровней до более чем 64.



Считывание состояние 8259A

	Для   обновления   пользовательской   информации  по
системе  можно	 прочитать  входное   состояние   нескольких
внутренних регистров. С помощью  OCW3 можно прочитать IRR  и
ISR, а OCW1 читается IMR.
	Регистр  запросов  на	прерывание  IRR:   8-битовый
регистр,  который   содержит  уровни   с   неподтвержденными
запросами на прерывание.  Старший уровень запроса  сброшен в
IRR, когда прерывание подтверждено (не изменяется IMR).
	Регистр обслуживания ISR: 8-битовый регистр, который
содержит обслуживаемые	уровни приоритетов.  ISR обновляется
по команде "конец прерывания".
	Регистр  масок	прерывания  IMR:  8-битовый регистр,
который   содержит   замаскированные   линии   запросов   на
прерывание.
	IRR можно прочитать, если перед импульсом RD  выдать
команду чтения регистра с OCW3 (RR=1, RIS=0).
	ISR можно прочитать, если перед импульсом RD  выдать
команду чтения регистра с OCW3 (RR=1, RIS=1).
	Нет   необходимостизаписывать	OCW3   перед  каждой
операции  чтения,  поскольку  состояние чтения соответствует
предыдущему, т.е.  8259A "помнит",  что было  прочитано, IRR
или  ISR,  ранее  выбранным  OCW3.  Это  недействительно при
использовании опроса.
После	инициализации	8259A	устанавливается   на	IRR.
Для   считывания   IMR	 OCW3	не   нужен.   Шина  выходных
данных будет содержать IMR  как только активизируется RD,  а
A0=1  (OCW1).	 Опрос	перекрывает   статус  чтения   когда
P=1, RR=1 в OCW3.
Назад       Содержание       Вперёд