Поиск по сайту: |
|
По базе: |
|
Главная страница > Обзоры по типам > Микроконтроллеры > MAXQ |
|
|||||||||||||||
Обслуживание прерыванийОбслуживание прерываний у микроконтроллеров семейства MAXQ осуществляется в три этапа. Первый этап: запись в 16-разрядный регистр прерываний IV адреса подпрограммы обработки прерываний. После сброса в этом регистре по умолчанию устанавливается значение 0000h, но это значение также является адресом начала программы после сброса при включении питания. Поэтому рекомендуется выполнить команду:
Затем, необходимо разрешить прерывания. Для того чтобы обслуживались любые прерывания необходимо установить бит IGE в регистре прерываний и контроля (IC) в единицу. Затем, необходимо разрешить прерывания на модульном уровне и локально в пределах модуля. Биты разрешения прерываний на модульном уровне находятся в регистре масок прерываний (Interrupt Musk), а локальные биты разрешения прерываний находятся в соответствующих модулям регистрам. Как только по возникновению прерывания управление передается подпрограмме обслуживания прерываний, сразу аппаратно устанавливается бит обслуживания прерываний (Interrupt in Service - INS), который блокирует дальнейшее обслуживание прерываний. Источник прерываний должен быть определен в подпрограмме обработке прерываний. Так как все прерывания имеют один и тот же адрес прерываний, то для определения источника прерывания необходимо проанализировать состояние регистра идентификации прерываний (Interrupt Identification - IIR). Например, бит II0 (IIR.0) будет установлен, если есть отложенное прерывание от модуля 0. Эти биты не могут быть очищеннепосредственно; вместо этого после обработки прерывания необходимо очистить соответствующий флаг в модуле. Бит INS устанавливается автоматически при входе в подпрограмму обработки прерывания и автоматически очищается при выходе из нее по команде RETI.
Обеспечение приоритета обслуживания прерываний при наличии нескольких источников прерывания может быть реализовано методом, показанным выше. Регистр масок IMR не должен использоваться при обслуживании прерывания с самым высоким уровнем приоритета, так как обработка этого прерывания никогда не должно прерываться. Это обеспечивается установкой бита INS в единицу. Приведенный ниже фрагмент кода программы демонстрирует, как можно использовать IMR для разрешения других прерываний.
Пожалуйста, обратите внимание, что сброс битов регистра IMR только предотвращает инициализацию обработки прерывания от соответствующих модулей или системных источников прерывания. Сброс бита в регистре масок IMR не предотвращает установку битов флагов прерываний в регистре IIR. Это означает, что при использовании регистра масок IMR для объединения прерываний в блоки может возникнуть ситуация, когда перед обслуживанием прерывания проверку маски прерывания (IMR.x) необходимо будет объединить с проверкой идентификатора прерывания (IIR.x).
Главная - Микросхемы - DOC - ЖКИ - Источники питания - Электромеханика - Интерфейсы - Программы - Применения - Статьи |
|
Впервые? | Реклама на сайте | О проекте | Карта портала тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru ©1998-2023 Рынок Микроэлектроники |
|