Студопедия — Устройство управления прерываниями
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Устройство управления прерываниями






(система прерываний)

Устройство управления прерываниями (УУП) предназначено для обеспечения реакции микроконтроллера на внешние и внутренние запросы прерывания. Базовые микроконтроллеры семейства МК51 имеют 5 прерываний: два внешних (входы и ) и три внутренних (от таймеров/счетчиков T/C0, T/С1 и последовательного порта) [3]. Функционально-структурная схема УУП показана на рис.46.

 

Рис.46. Функционально-структурная схема блока УУП

 

Устройство управления прерываниями позволяет:

- фиксировать запросы от внешних и внутренних источников прерываний при их исполнении;

- программным способом разрешить или запретить работу системы прерываний в целом;

- программным способом маскировать запросы прерываний отдельных источников;

- программным способом устанавливать высокий или низкий приоритет каждому источнику запроса прерываний;

- формировать вектор прерывания;

- аппаратным способом снять запрос на прерывание при его исполнении.

В состав блока УУП входят следующие элементы:

Буфер УУП осуществляет связь между 8-разрядной внутренней шиной ШВ и 8-разрядной шиной данных ШД, обеспечивая запись, хранение и коммутацию данных.

Регистр разрешения прерываний IE (Interrupt Enable) предназначен для разрешения или запрещения прерываний от соответствующих источников. Обозначение разрядов регистра IE и их назначение показано в табл. 13:

Таблица 13

Символ Позиция Имя и назначение
ЕА IE.7 Общий запрет/разрешение прерываний. Сбрасывается/устанавливается программно для всех прерываний независимо от состояний IЕ4 - IЕ0
---- IE.6 Не используются
---- IE.5
ES IE.4 Бит разрешения прерывания от УАПП. Установка/сброс программой для разрешения/запрета прерываний от флагов TI или RI
ET1 IE.3 Бит разрешения прерывания от таймера 1. Установка/сброс программой для разрешения/запрета прерываний от таймера 1
EX1 IE.2 Бит разрешения внешнего прерывания 1. Установка/сброс программой для разрешения/запрета прерываний
ET0 IE.1 Бит разрешения прерывания от таймера 0. Работает аналогично IE.3
EX0 IE.0 Бит разрешения внешнего прерывания 0. Работает аналогично IE.2

 

- ЕА - управление всеми источниками прерываний одновременно. Если ЕА= «0», то прерывания запрещены. Если

ЕА= «1», то прерывания могут быть разрешены индивидуальными разрешениями ЕХ0, ЕТ0, ЕХ1, ЕТ1, ES;

- ES - управление прерыванием от последовательного порта.

- ES= «1» – разрешено, ES= «0» – запрещено;

- ЕТ1 - управление прерыванием от Т/С 1.

ЕТ1= «1» – разрешено, ЕТ1= «0» – запрещено;

- ЕХ1 - управление прерыванием от внешнего источника . ЕХ1= «1» – разрешено, ЕХ1= «0» – запрещено;

- ЕТ0 - управление прерыванием от Т/С 0.

ЕТ0= «1» – разрешено, ЕТ0= «0» – запрещено;

- ЕХ0 - управление прерыванием от внешнего источника . ЕХ0= «1» - разрешено, ЕХ0= «0» - запрещено.

Регистр приоритетов прерываний IP (Interrupt Priority) предназначен для установки уровня приоритета прерывания для каждого из пяти источников прерываний, установкой или сбросом соответствующих разрядов регистра IP. Все разряды регистра IP устанавливаются и сбрасываются программным способом. Обозначение разрядов регистра IP и их назначение показано в табл. 14.

Таблица 14

Символ Позиция Имя и назначение
---- IP.7 - IP.5 Не используются
PS IP.4 Бит приоритета УАПП. Установка/сброс программой для присваивания прерыванию от УАПП высшего/низшего приоритета
PT1 IP.3 Бит приоритета таймера 1. Установка/сброс программой для присваивания прерыванию от таймера 1 высшего/низшего приоритета
PX1 IP.2 Бит приоритета внешнего прерывания 1. Установка/сброс программой для присваивания высшего/низшего приоритета внешнему прерыванию INT1
PT0 IP.1 Бит приоритета таймера 0. Работает аналогично IP.3
PX0 IP.0 Бит приоритета внешнего прерывания 0. Работает аналогично IP.2

 

Приоритет источников прерывания при одинаковых значениях битов управления регистра IP возрастает в направлении от старших разрядов к младшим. Установка любого бита в состояние лог.1 при значениях других битов лог.0 позволяет произвольно устанавливать высокий уровень приоритета для любого источника.

Регистр управления (TCON) предназначен для приема и хранения кода управляющего слова. Обозначение разрядов регистра TCON и их назначение приведено в табл. 12. Для управления таймерами/счетчиками используются 4 старших разряда, а для управления внешними прерываниями – 4 младших разряда регистра TCON.

Внешние прерывания INT0 и INT1 могут быть вызваны либо уровнем, либо переходом сигнала из «1» в «0» на входах МК51 в зависимости от значений управляющих бит IT0 и IT1 в регистре TCON (ITx= «1» - управление по срезу, ITx= «0» –управле-ние по низкому уровню). От внешних прерываний устанавливаются флаги IE0 и IE1 в регистре TCON, которые инициируют вызов соответствующей подпрограммы обслуживания прерывания. Сброс этих флагов выполняется аппаратно только в том случае, если прерывание было вызвано по переходу (срезу) сигнала. Если же прерывание вызвано уровнем входного сигнала, то сбросом флага IE управляет соответствующая подпрограмма обслуживания прерывания путем воздействия на источник прерывания с целью снятия им запроса.

Флаги запросов прерывания от таймеров TF0 и TF1 сбрасываются автоматически при передаче управления подпрограмме обслуживания. Флаги запросов прерывания RI и ТI устанавливаются блоком управления УАПП аппаратно, но сбрасываться должны программой.

Прерывания могут быть вызваны или отменены программой, так как все перечисленные флаги программно-доступны и могут быть установлены/сброшены программой с тем же результатом, как если бы они были установлены/ сброшены аппаратными средствами.

Логика обработки флагов прерываний осуществляет приоритетный выбор запроса прерывания, сброс его флага и инициирует выработку аппаратно-реализованной команды перехода на подпрограмму обслуживания прерывания.

Схема выработки вектора прерывания вырабатывает двухбайтовые адреса подпрограмм обслуживания прерывания в зависимости от источника прерываний. При реализации прерывания аппаратным способом выполняется команда LCALL addr16, обеспечивающая запоминание в стеке текущего состояния программного счетчика (запоминание адреса возврата), и переход к стартовому адресу addr16 соответствующей процедуры обслуживания. С каждым источником запроса прерываний связан свой стартовый адрес (вектор прерывания):

EXTI0 IE0 0003H Внешнее прерывание ;

TIMER0 TF0 000BH Прерывание таймера/счетчика ТС0;

EXTI1 IE1 0013H Внешнее прерывание ;

TIMER0 TF1 001BH Прерывание таймера/счетчика ТС1;

SINT RI ∨ TI 0023H Прерывание последовательного

порта.

Логика управления УУП организует работу всех элементов структуры в соответствии с запрограммированными режимами работы и синхронизирует работу блока УУП с работой МК51.

Работа с системой прерываний МК51. Механизм прерываний в МК51 позволяет автоматически, на аппаратном уровне реагировать на внешние сигналы (входы и ) и на внутренние события (переполнение таймеров / счетчиков, завершение последовательного обмена).

Функционально-логическая структура системы прерываний показана на рис.47.

 

 

Рис.47. Функционально-логическая структура системы прерываний

 

Наступившие события фиксируются в виде флагов IE0, TF0, IE1, TF1, RI или TI при установке соответствующих битов в регистрах. Флаги IE0, IE1, TF0, TF1, RI, TI устанавливаются независимо от того разрешено или нет соответствующее прерывание в регистре IE. Дальнейшее их исполнение зависит от состояния битов разрешения прерываний EX0, ET0, EX1, ET1, ES и EA (как индивидуальных, так и общего) в регистре IE. Биты флагов и биты разрешения прерываний обрабатываются логикой И (элементы DD4 и DD5).

Флаги наступивших событий обрабатываются в определенном порядке, который зависит от приоритета прерывания. Структура приоритетов прерываний является двухступенчатой. Каждому источнику прерывания может быть индивидуально присвоен один из двух уровней приоритета: высокий H или низкий L. Выполняется это установкой (высокий уровень приоритета) или сбросом (низкий уровень приоритета) соответствующих бит PX0, PT0, PX1, PT1, PS в регистре приоритетов прерываний IP (см. табл. 14). Программа обработки прерывания с низким уровнем приоритета может быть прервана запросом прерывания с высоким уровнем приоритета, но не может быть прервана другим запросом прерывания с низким уровнем приоритета. Программа обработки прерывания с высоким уровнем приоритета не может быть прервана никаким другим запросом прерывания ни от одного из источников. Если два запроса с разными уровнями приоритета приняты одновременно, сначала будет обслужен запрос с высоким уровнем приоритета. Если одновременно приняты запросы с одинаковым уровнем приоритета, обработка их будет производиться в порядке, задаваемом последовательностью внутреннего опроса флагов прерываний. Таким образом, в пределах одного приоритетного уровня существует еще одна структура приоритетов, представленная в табл. 15.

Таблица 15

 

Необходимо особо подчеркнуть, что структура «приоритет внутри уровня» работает только в тех случаях, когда определяется последовательность обслуживания запросов на прерывания, которые приняты одновременно и при этом имеют одинаковый уровень приоритета.

Алгоритм аппаратной обработки прерывания при обнаружении запроса прерывания представлен на рис. 48.

 

Рис.48. Блок-схема алгоритма обработки прерываний в МК51

 

При реализации алгоритма микроконтроллер выполняет следующие действия.

Прием и обработка сигнала запроса прерывания. Для четкой фиксации сигнала внешнего прерывания по уровню необходимо, чтобы низкий уровень на выводе удерживался в течение не менее 12 периодов сигнала тактовой частоты fCLK МК51. Это объясняется тем, что проверка выводов , выполняется внутренними аппаратными средствами один раз в каждом машинном цикле. В случае внешнего прерывания по фронту флаг IЕх будет установлен, если две последовательные проверки входа покажут в одном машинном цикле «1», а в следующем «0». Поэтому, если внешнее прерывание активизируется по переходу из состояния высокого уровня в состояние низкого уровня, то минимум одному машинному циклу низкого уровня должен предшествовать минимум один машинный цикл высокого уровня на выводе . Если внешнее прерывание активизируется по уровню, запрос должен удерживаться до начала обслуживающей подпрограммы и сниматься до завершения этой подпрограммы для предотвращения повторного обслуживания.

Уровни на выводах и инвертируются и защелкиваются в флаги прерывания IE0 и IE1 в фазе S5P2 каждого машинного цикла. В фазе S5P2 устанавливаются флаги прерываний последовательного порта RI и TI. Флаги TF0 и TF1 таймеров/счетчиков устанавливаются в фазе S5P2 машинного цикла, в котором происходит переполнение Т/С.

Анализ и обработка флагов прерываний. Анализ (опрос) флагов выполняется внутренними средствами МК51 в следующем после установки (защелкивания) флагов машинном цикле (цикл опроса флага). Для реализации процедуры прерывания используются только флаги, имеющие индивидуальное и общее разрешение в регистре IE. Кроме того, определяется уровень приоритета, согласно битам регистра IP. И только после выполнения последнего цикла текущей команды производится аппаратный вызов соответствующей подпрограммы обслуживания, эквивалентный команде LCALL.

Переход к подпрограмме обслуживания прерывания. Обращение к подпрограмме обслуживания задерживается (блокируется аппаратный вызов LCALL) при выполнении хотя бы одного из следующих условий:

- уже производится обработка прерывания с таким же или высшим приоритетом;

- текущий машинный цикл (цикл опроса флага) не является последним циклом выполняемой команды;

- выполняемая команда текущей программы является командой RETI или любой командой обращения к регистрам IE, IP.

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

Если запрос прерывания с более высоким уровнем приоритета зафиксируется во время аппаратного вызова подпрограммы обслуживания, а именно в фазе S5P2 1-го цикла аппаратной команды LCALL, то по окончании процедуры текущего вызова сразу же начнет выполняться процедура аппаратного вызова по поступившему запросу.

Необходимо отметить, что время реакции МК51 на сигнал запроса прерывания (от момента появления сигнала запроса до загрузки вектора в РС) может составлять от 38 до 86 периодов тактовой частоты fCLK. Это время зависит от длительности команды предшествующей и длительности выполнения самой команды LCALL, а также времени аппаратной реакции МК51 на сигнал запроса.

Выполнение подпрограммы обслуживания прерывания. Аппаратно-реализуемая команда LCALL загружает содержимое счетчика команд PC в стек (при этом PSW в стек не записывается), в ячейку стека с младшим адресом загружаются разряды 0-7 счетчика команд, а в следующую ячейку стека - разряды 8-15 счетчика команд. Таким образом сохраняется адрес возврата в основную программу после завершения подпрограммы обслуживания прерывания.

Далее команда LCALL записывает в PC адрес (вектор) соответствующей подпрограммы обработки прерывания. После чего начинается выполнение подпрограммы обслуживания прерывания. В начале подпрограммы обычно рекомендуется программным путем сохранить в стек содержимое регистров A, PSW с помощью команд: PUSH A; PUSH PSW, а в конце подпрограммы извлечь их из стека в обратном порядке с помощью команды POP: POP PSW; POP A.

Возврат из подпрограммы обслуживания прерывания в основную программу. Подпрограмма обслуживания прерывания обязательно должна заканчиваться командой RETI. Команда RETI восстанавливает состояние логики прерывания и загружает в счетчик команд PC 2 байта адреса возврата из двух верхних ячеек стека. Восстановление состояния логики прерывания заключается в следующем: при переходе по вектору на подпрограмму обработки пре-рывания автоматически до выполнения команды RETI независимо от состояния бит регистра IE запрещаются все прерывания с уровнем приоритета, равным уровню приоритета обслуживаемого прерывания, т. е. вложенные прерывания с равными уровнями приоритета невозможны. Команда RETI снимает этот запрет. При использовании команды RET восстанавливается только состояние счетчика команд, т. е. происходит возврат в прерванную программу. Состояние логики прерывания команда RET не меняет, т. е. логика управления обслуживанием прерываний по-прежнему считает, что продолжает обслуживаться прерывание, подпрограмма обработки которого была закончена командой RET.

 







Дата добавления: 2015-08-12; просмотров: 1111. Нарушение авторских прав; Мы поможем в написании вашей работы!



Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Принципы резекции желудка по типу Бильрот 1, Бильрот 2; операция Гофмейстера-Финстерера. Гастрэктомия Резекция желудка – удаление части желудка: а) дистальная – удаляют 2/3 желудка б) проксимальная – удаляют 95% желудка. Показания...

Ваготомия. Дренирующие операции Ваготомия – денервация зон желудка, секретирующих соляную кислоту, путем пересечения блуждающих нервов или их ветвей...

Билиодигестивные анастомозы Показания для наложения билиодигестивных анастомозов: 1. нарушения проходимости терминального отдела холедоха при доброкачественной патологии (стенозы и стриктуры холедоха) 2. опухоли большого дуоденального сосочка...

Функциональные обязанности медсестры отделения реанимации · Медсестра отделения реанимации обязана осуществлять лечебно-профилактический и гигиенический уход за пациентами...

Определение трудоемкости работ и затрат машинного времени На основании ведомости объемов работ по объекту и норм времени ГЭСН составляется ведомость подсчёта трудоёмкости, затрат машинного времени, потребности в конструкциях, изделиях и материалах (табл...

Гидравлический расчёт трубопроводов Пример 3.4. Вентиляционная труба d=0,1м (100 мм) имеет длину l=100 м. Определить давление, которое должен развивать вентилятор, если расход воздуха, подаваемый по трубе, . Давление на выходе . Местных сопротивлений по пути не имеется. Температура...

Studopedia.info - Студопедия - 2014-2024 год . (0.008 сек.) русская версия | украинская версия