Cтраница 4
Затем производится сравнение содержимого обоих регистров. Если приоритет выполняемой программы не ниже приоритета прерывания, то заявка остается в состоянии ожидания. В противном случае прерывание принимается и соответствующий разряд регистра текущего уровня устанавливается в 1, а разряд регистра заявок сбрасывается в О. Говорят, что программа работает на этом уровне. Она может определить уровень, на котором произошло прерывание, путем проверки содержимого регистра. Разряд регистра текущего уровня сбрасывается в О тогда, когда закончится возврат после программы, связанной с прерыванием. Заметим, что одновременно могут быть установлены в 1 несколько двоичных разрядов регистра текущего уровня в результате последовательных прерываний более высокого приоритета. Разряд наивысшего приоритета, содержащий 1, является самым последним прерыванием. [46]
Маски в PSW - это средство запрещения всех маскируемых прерываний; например, новое PSW, которое становится текущим в результате некоторого прерывания, может запретить последующие прерывания. Более того, маски позволяют установить иерархию приоритетов прерываний, при введении которой условие, относящееся к одному классу прерываний, может вызвать прерывание программы, обрабатывающей прерывание другого класса, но не наоборот. Чтобы предотвратить прерывание программы, обрабатывающей прерывание другого класса, до того, как будут выполнены все необходимые действия, новое PSW должно запретить процессору дальнейшие прерывания этого класса или класса, имеющего более низкий приоритет. [47]
Работа ПУ обеспечивается встроенным программируемым таймером, имеющим высший уровень приоритета прерывания. [48]
Системный байт, содержит маску прерывания, бит супервизора и бит трассировки. Маска прерывания, биты IQ - Ь, определяет уровень приоритета текущего прерывания. Бит супервизора S определяет, в каком режиме в данный момент работает процессор. Бит трассировки Т вызывает особое прерывание с переходом на программу трасснровки после выполнения каждой инструкции. [49]
Регистр прерываний представляет собой слово, каждый бит которого соответствует одной причине прерывания. При появлении причины ( запроса) прерывания в регистре прерываний устанавливается соответствующий бит согласно приоритету прерывания. При поступлении запроса на обработку, если прерывание не замаскировано, соответствующий бит очищается. Если прерывание замаскировано, то соответствующий бит также очищается, кроме запросов на прерывания от ввода-вывода и внешних. [50]
Архитектура ВЕ51 поддерживает двухуровневую приоритетную систему прерываний с пятью ( или шестью в случае 8052) источниками запросов на обслуживание, имеющими фиксированные векторы прерываний. Программное управление системой осуществляется через два 8-разрядных регистра: IP ( Interrupt Priopity) - регистр приоритета прерываний и IE ( Interrupt Enable) - регистр разрешения прерываний. [51]
Состояние сброса возникает при появлении сигнала активного уровня на контакте RESET. В этом состоянии: происходит сброс внутренних периферийных устройств; регистры модификации устанавливаются в FFFF; регистр уровней приоритета прерываний очищается; регистр BCR устанавливается в FFFF, что добавляет 15 состояний ожидания ко всем обращениям к внешней памяти; указатель стека очищается; биты режима масштабирования, режима трассировки, флаг цикла и биты условий в SR сбрасываются, биты маски прерываний в SR устанавливаются в 1; бит разрешения ПЗУ данных, бит задержки и бит стробирования памяти сбрасываются. DSP не выходит из состояния сброса, пока на контакте RESET сохраняется сигнал активного уровня. После выхода из состояния сброса биты операционного режима в OMR загружаются извне по линиям MODA, MODB и выполнение программы начинается с адреса Е000 в памяти программ в нормальном расширенном режиме или с адреса 0000 в остальных операционных режимах. [52]
При программной реализации программист может создать сколько угодно уровней прерывания. Этот метод, однако, снижает скорость реакции на прерывание из-за дополнительных затрат времени на определение источника и приоритета прерывания, а также на обработку отложенных прерываний. Если не принять специальных мер, то даже программы очень высокого приоритета могут непрерывно прерываться на короткий период каждым условием прерывания, имеющим более низкий приоритет. Поэтому программист часто вводит задержку в распознавание прерывания. Этим следует пользоваться осторожно, так как отсрочка может привести к тому, что важный режим технологического процесса в течение длительного времени останется без корректирующего воздействия. [53]
Распределение приоритетов среди запросов на прерывание от каналов зависит от типа канала и его адреса. Приоритеты каналов 1 - 15 распределяются в порядке возрастания их адресов, причем канал 1 имеет высший приоритет. Приоритет прерываний для мультиплексного канала 0 не фиксирован и зависит от модели и текущих действий в канале. [54]
Во время выполнения программы одновременно может поступить несколько запросов на прерывание. Они устанавливаются в очередь в соответствии со своим приоритетом. Приоритет прерываний устанавливается аппаратурно. Порядок поступления прерываний на обработку строго определен: прерывания от схем контроля машины, программные прерывания или прерывания при обращении к Супервизору ( они не могут появиться одновременно), внешние прерывания, прерывания от ввода-вывода. А так как обработка прерываний начинается после того как все прерывания выбраны, то первым обслуживается последнее выбранное прерывание. Таким образом, фактически порядок обработки прерываний соответствует их важности: ввод-вывод, внешние, программные и обращения к Супервизору. Прерывания от схем контроля блокируют обработку всех других прерываний. [55]
Все прерывания обрабатываются в соответствии со своим приоритетом. Приоритет прерываний по вводу-выводу страниц наиболее высокий. Для каждого прерывания формируется управляющий блок, который размещается в очередь к соответствующему типу прерываний. [56]
Большинство микропроцессоров имеет по крайней мере два входа для подачи запросов на прерывания. Один вход обычно используется для запросов на немаскируемые прерывания, другой-для маскируемых прерываний. В микропроцессорах с несколькими входами для маскируемых прерываний устанавливаются приоритеты прерываний, запросы на которые поступают на соответствующие входы. Если одновременно поступают запросы на два прерывания, то сначала воспринимается запрос на прерывание более высокого приоритета. При поступлении запроса на прерывание более высокого приоритета, чем приоритет прерывания, обрабатываемого в данный момент, программа обработки текущего прерывания может быть прервана. [58]
В соответствии с принятой организацией системы вычислительных средств ЕС, АСВТ, мини - и микро - ЭВМ, на которых строится комплекс технических средств АСУ ТП, - реакция вычислительных средств на изменяющиеся условия работы часто организуется с помощью системы прерываний обработки программ. Запросы работающих в процессорах программ на использование модулей вне процессора также реализуются с помощью системы прерываний. Наличие системы прерываний, естественно, обусловливает организацию системы приоритетов прерываний. [59]
Для управления режимом обработки прерываний используется сигнал на выводе AVEC. При нулевом значении этого сигнала младший байт данных на 32-разрядной шине в момент возникновения прерывания интерпретируется как указатель элемента таблицы адресов подпрограмм обработки прерываний. При единичном значении сигнала на выводе AVEC значение указателя генерируется автоматически в соответствии с уровнем приоритета возникшего прерывания. [60]