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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



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

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

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

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

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

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

Уровень прерывания

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

Таблица 12.1. Уровни прерываний

Настройка уровня прерывания Групповая конфигурация Описание
  OFF Прерывание отключено
  LO Прерывание низкого уровня
  MED Прерывание среднего уровня
  HI Прерывание высокого уровня

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

Приоритет прерывания

Все прерывания, помимо уровня, также имеют приоритет. При одновременном поступлении запросов от нескольких источников прерываний, очередность их обработки будет определяться с учетом их уровня и приоритета. Приоритезация прерываний может быть статической или динамической (карусельной, round-robin). Приоритезация прерываний высокого и среднего уровней, а также немаскируемых прерываний является только статической, а приоритезация низкоуровневых прерываний может быть как статической, так и динамической (задается пользователем).

Статическая приоритезация

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

Рисунок 12.1. Статическая приоритезация

Динамическая приоритезация

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

Рисунок 12.2. Динамическая приоритезация



Поделиться:


Последнее изменение этой страницы: 2016-12-30; просмотров: 557; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.142.197.212 (0.004 с.)