Поиск по сайту:

 


По базе:  

микроэлектроника, микросхема, микроконтроллер, память, msp430, MSP430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, SED1335, mega128, avr, mega128  
  Главная страница > Обзоры по типам > Микроконтроллеры > MAXQ

реклама

 




Мероприятия:




Прерывания

Микроконтроллеры семейства MAXQ имеют единственный вектор прерывания (IV), который может использоваться для обслуживания внешних и внутренних прерываний. Прерывания могут быть сгенерированы системными источниками (например, сторожевой таймер) или источниками, связанными с периферийными модулями, включенными в определенный микроконтроллер MAXQ. Одновременно может быть обслужено только одно прерывание, и все прерывания естественно имеют один и тот же приоритет. Программирование регистра маскирования прерываний позволяет программно обеспечивать приоритет прерываний.

Обслуживание прерываний

Для того чтобы микроконтроллер MAXQ мог обслужить прерывание необходимо, чтобы было глобальное, модульное и локальное разрешения прерываний. Бит глобального разрешения прерываний (Interrupt Global Enable - IGE), расположенный в регистре контроля прерываний (Interrupt Control - IC), является глобальной маской прерываний. По умолчанию значение этого бита равно 0, поэтому для разрешения прерываний он должен быть установлен в 1.

Бит локального разрешения прерывания для каждого конкретного источника находится в одном из периферийных регистров (для периферийных устройств) или в одном из системных регистров (для системных прерываний). Между глобальным и локальными битами разрешения прерываний могут быть промежуточные модульные биты маскирования прерываний. Эти биты маскирования находятся в системном регистре масок прерываний (Interrupt Mask). Управляя этими битами можно одной командой разрешать или запрещать прерывание от всех периферийных устройств одного модуля. Это упрощает реализацию системы приоритетов прерываний. Иерархия системы разрешения прерываний показана на рисунке 10.

Пример иерархии источников прерывания микроконтроллеров MAXQ
Рисунок 10. Пример иерархии источников прерывания микроконтроллеров MAXQ

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

Так как все векторы прерываний имеют один адрес прерывания, содержащийся в регистре вектора прерываний (IV), то для идентификации модуля источника прерывания может использоваться регистр идентификации прерываний (Interrupt Identification Register - IIR). IIR содержит биты, соответствующие каждому модулю источников прерываний и один бит, соответствующий системным источникам прерываний. Если модуль способен формировать прерывания по различным условиям, то идентификацию можно обеспечить путем анализа битов соответствующего периферийного модуля.

Регистр вектора прерываний (IV) определяет адрес подпрограммы обработки прерываний. В него может быть занесен любой адрес памяти программы. По умолчанию регистр вектора прерывания содержит нулевой адрес (0000h), который является адресом вектора сброса.

Работа системы обработки прерываний

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

Режим прерывания в микроконтроллерах MAXQ инициализируется конечным автоматом, формирующим команду вызова CALL. При вызове подпрограммы обслуживания прерывания вычислительное ядро временно берет контроль и выполняет следующую последовательность действий:

  1. Отменяется вызов следующей команды.
  2. Адрес возврата помещается в стек.
  3. Бит INS устанавливается в единицу для подтверждения рекурсивного вызова по прерыванию.
  4. В указатель команды заносится адрес подпрограммы обработки прерывания (содержавшийся в регистре вектора прерываний).
  5. Вычислительное ядро начинает выполнять подпрограмму обработки прерывания.

Для возвращения к основной программе после выполнения подпрограммы обработки прерывания необходимо использовать команду RETI. Выполнение команды RETI активизирует выполнение следующей последовательности действий:

  1. Получается адрес возврата из стека.
  2. Сбрасывается бит INS, что вновь давать возможность обслуживать прерывания.
  3. В указатель команды возвращается адрес возврата, который был получен из стека.
  4. Вычислительное ядро продолжает выполнять основную программу.

Отложенные запросы на прерывание не будут прерывать команду RETI; новое прерывание обслужится только после того, как будет получено первое подтверждение в цикле выполнения, который следует за командой RETI. Это означает, что между двумя прерываниями всегда будет не менее двух циклов.

Синхронные и асинхронные источники прерывания

Источники прерывания могут быть классифицированы как асинхронные или синхронные. Все внутренние источники прерывания - синхронные. Внутреннее прерывание непосредственно вызывает подпрограмму обслуживания прерывания, при этом оно может быть распознано в одном цикле. Все внешние прерывания - асинхронные по своей природе. Когда прибор не находится в режиме останова, прежде чем осуществится обслуживание прерывания, асинхронные источники прерывания проходят трехцикловый фильтр выборки/подавления ложного сигнала. Фильтр выборки/подавления ложного сигнала синхронизируется синхроимпульсами, не проходящими через делитель частоты системы синхронизации. Это приведет к тому, что:

  • если коэффициент делителя частоты равен 1, то запрос на прерывание будет выполнен через три цикла;
  • если коэффициент делителя частоты равен 2, то запрос на прерывание будет выполнен через два цикла;
  • если коэффициент делителя частоты равен 4 или более, то запрос на прерывание будет выполнен через один цикл;

Запрос на прерывание с длительностью импульса меньше чем три периода не деленного синхросигнала распознан не будет. Обратите внимание, что степень детализации источников прерывания на рисунке приведена на модульном уровне. Синхронные прерывания и выбранные асинхронные прерывания, объединенные в один модуль, обслуживаются как одно прерывание.

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

Программная система приоритета прерываний

Все источники прерываний микроконтроллеров MAXQ имеют одинаковый уровень приоритета. Однако, в подпрограмме обработки прерываний можно осуществить идентификацию прерываний в соответствии с необходимой системой приоритетов. Системный регистр маскирования прерываний обеспечивает возможность сознательно объединять прерывания в блоки. Используя эту технологию, подпрограмма обработки прерывания может быть построена таким образом, чтобы ее выполнение могло быть прервано только прерыванием с более высоким уровнем приоритета. Демонстрационный пример такой подпрограммы приведен в пункте "Обработка прерываний", который содержится в третьем разделе "Программирование".

Окно исключения прерываний

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

Окно исключения прерываний используются тогда, когда две или больше команды должны быть выполнены последовательно без любых задержек между ними. В настоящее время, есть только одно условие для микроконтроллеров MAXQ, который вызывает окно исключения прерываний: активизация префиксного (PFX) регистра.

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



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





 
Впервые? | Реклама на сайте | О проекте | Карта портала
тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru
©1998-2023 Рынок Микроэлектроники