В HTML      В PDF
микроэлектроника, микросхема, транзистор, диод, микроконтроллер, память, msp430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, avr, mega128
Предприятия Компоненты Документация Применения Статьи Новости

 
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации





Главная страница > Обзоры по типам > Микроконтроллеры > AVR
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации


12.4. Прерывания

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

У каждого из прерываний имеется связанный с ним флаг прерывания. Данный флаг устанавливается, когда возникает условие для генерации прерывания, независимо от того, разрешено оно или нет. Флаги большинства прерываний автоматически сбрасываются при переходе на вектор прерывания. Флаг прерывания можно сбросить и программно. Для этого необходимо выполнить запись в него единицы. Имеется несколько флагов прерываний, которые не сбрасываются автоматически при переходе на вектор прерывания. Также имеется еще ряд прерываний, флаги которых автоматически сбрасываются при выполнении чтения или записи связанного с ними регистра. Подробности см. в описании каждого отдельного флага прерывания.

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

Предусмотрена возможность блокировки прерываний при выполнении кода программы из защищенного сектора, например, когда запрограммированы биты Boot Lock. Такая возможность улучшает защищенность программы (подробности по настройкам lock-бит см. в описании программирования памяти программ).

Прерывания автоматически блокируются на 4 цикла синхронизации ЦПУ после выполнения записи корректной сигнатуры в регистр защиты от изменения конфигурации (см. раздел 3.12 "Защита от изменения конфигурации").

12.4.1. Немаскируемые прерывания (NMI)

Немаскируемые прерывания (NMI) полностью реализованы на аппаратном уровне. Не предусмотрена возможность выбора, какое прерывание относится к NMI, а какое будет обычным. Перед тем как использовать немаскируемые прерывания, их необходимо разрешить. Какие именно NMI поддерживаются микроконтроллером, необходимо уточнить в документации.

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

12.4.2. Задержка реагирования на прерывание

Задержка реагирования на прерывание для всех разрешенных прерываний составляет не менее 5 циклов синхронизации ЦПУ. В течение этих 5 циклов синхронизации выполняется помещение счетчика программы в стек. После завершения этих 5 циклов синхронизации, выполняется процедура обработки прерывания, на переход к которой с вектора прерывания необходимо еще три цикла синхронизации.

Если прерывание возникает в момент исполнения многоцикловой инструкции, то сначала завершается выполнение этой инструкции, а уже затем обслуживается прерывание. Если прерывание возникает, когда МК находится в экономичном режиме работы, то задержка реагирования на прерывание увеличивается еще на 5 циклов синхронизации. Кроме того, к этому времени также нужно прибавить время, необходимое микроконтроллеру для выхода из выбранного экономичного режима работы.

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



<-- Предыдущая страница Оглавление Следующая страница -->