Файл: Семейство микроконтроллеров MSP430X1XX, руководство пользователя (2004).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.06.2025

Просмотров: 2782

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Раздел II.

Системный сброс, прерывания и рабочие режимы

Регистр статуса (SR) сбрасывается

Сторожевой таймер активизируется в сторожевом режиме

В программный счетчик загружается адрес, содержащийся в вектора сброса (0FFFEh). ЦПУ начинает выполнять команды с этого адреса.

Программная инициализация

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

Инициализировать указатель стека SP (как правило, указывается вершина ОЗУ)

Инициализировать сторожевой таймер в зависимости от требований приложения

Сконфигурировать периферийные модули в зависимости от требований приложения

Дополнительно можно оценить состояние флагов сторожевого таймера, флэш-памяти и неисправности осциллятора для определения источника сброса.

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

Приоритеты прерываний показаны на рис. 2.4. Приоритеты определяются порядком расположения модулей в соединяющей их цепи. Чем ближе модуль к ЦПУ/NMIRS, тем выше его приоритет.

Рис. 2-4. Приоритеты прерываний

Библиотека Компэла

25

MSP430x1xxFamily

Прерывания делятся на три типа:

Системное (системный сброс)

Немаскируемое (NMI)

Маскируемое

2.2.1.Немаскируемые прерывания

Немаскируемые прерывания NMI не маскируются общим битом разрешения прерываний (GIE), но могут управляться индивидуальными битами включения прерывания (ACCVIE, NMIIE, OFIE). Когда происходит немаскируемое прерывание NMI, все биты разрешения NMI-прерываний автоматически сбрасываются. Выполнение программы продолжается с адреса, содержащегося в векторе немаскируемого прерывания (0FFFCh). Программное обеспечение пользователя должно установить необходимые биты NMI-прерывания, чтобы оно было разрешено вновь. Блок-схема источников NMI-прерываний показана на рис. 2.5.

Немаскируемое прерывание NMI может быть вызвано тремя событиями:

Появление фронта сигнала на выводе RST/NMI

Появление неисправности осциллятора

Нарушение доступа к флэш-памяти

Вывод Reset/NMI

При включении микроконтроллера вывод RST/NMI конфигурируется как вывод сброса. Его функциональное назначение определяется в регистре управления сторожевым таймером WDTCTL. Если вывод RST/NMI запрограммирован на функцию сброса, ЦПУ будет находиться в состоянии сброса до тех пор, пока на этом выводе присутствует сигнал низкого уровня. После смены уровня на этом входе на лог.«1», ЦПУ начинает выполнять программу с команды, адрес которой хранится в векторе сброса (0FFFEh).

Если вывод RST/NMI сконфигурирован программой пользователя как вход вызова немаскируемого прерывания, фронт сигнала, выбранного битом WDTNMIES вызовет NMI-прерывание, если установлен бит NMIIE. Также будет установлен флаг NMIIFG.

Примечание:

Удержание вывода RST/NMI в состоянии лог.«0».

Когда вывод RST/NMI сконфигурирован в NMI-режиме, сигнал, вызывающий NMI-прерывание, не должен удерживаться на выводе RST/NMI в состоянии лог.«0». Если появится сигнал PUC от какого-либо источника, когда NMI-сигнал имеет низкий уровень, микроконтроллер будет сброшен, поскольку сигнал PUC изменит назначение вывода RST/NMI и он станет входом сигнала сброса.

26

Библиотека Компэла


Раздел II.

Системный сброс, прерывания и рабочие режимы

Рис. 2-5. Блок-схема источников немаскируемого прерывания

Примечание:

Модификация WDTNMIES.

Когда выбран режим NMI и изменен бит WDTNMIES, появление NMI-пре- рывания определяется уровнем сигнала на выводе RST/NMI. Если бит выбора

Библиотека Компэла

27

MSP430x1xxFamily

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

Нарушение доступа к Flash-памяти

Флаг ACCVIFG устанавливается, когда происходит нарушение доступа к Flash-памяти. Генерация NMI-прерывания при нарушении доступа к Flash-па- мяти происходит при установленном бите ACCVIE. Проверкой флага ACCVIFG в процедуре обработки NMI-прерывания можно определить, было ли вызвано

прерывание нарушением доступа к Flash-памяти.

Неисправность осциллятора

Сигнал неисправности осциллятора позволяет предотвратить ошибки, связанные с неправильным функционированием осциллятора. Установкой бита OFIE можно разрешить генерацию NMI-прерывания при неисправности осциллятора. С помощью флага OFIFG процедура обработки NMI-прерывания может проверить, было ли NMI-прерывание вызвано неисправностью осциллятора.

Сигнал неисправности осциллятора может быть вызван PUC-сигналом, поскольку он переводит осциллятор LFXT1 из режима HF в режим LF. Сигнал PUC также отключает осциллятор XT2.

Пример программы обработки немаскируемого прерывания NMI

NMI-прерывание имеет много возможных источников. NMI-прерывание автоматически сбрасывает биты разрешения прерываний NMIIE, OFIE и ACCVIE. Пользовательская процедура обработки NMI-прерывания сбрасывает флаги прерывания и включает биты разрешения прерываний в соответствии с требованиями приложения так, как показано на рис. 2.6.

Примечание:

Разрешение NMI-прерывания с помощью ACCVIE, NMIIE и OFIE

Установка битов разрешения NMI-прерывания ACCVIE, NMIIE и OFIE не должна производится в теле процедуры обработки NMI-прерывания, за исключением случая, когда это происходит непосредственно перед командой RETI. В противном случае могут появиться вложенные NMI-прерывания, что приведет к переполнению стека и дальнейшей непредсказуемой работе.

2.2.2. Маскируемые прерывания

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

28

Библиотека Компэла


Раздел II.

Системный сброс, прерывания и рабочие режимы

отдельности, так и все сразу с использованием общего бита разрешения всех прерываний (GIE) в регистре статуса (SR).

Старт обработчика NMI•прерывания Аппаратный сброс битов:

OFIE, NMIIE, ACCVIE

нет

нет

нет

да

да

да

Пользовательская программа

Пользовательская программа

Пользовательская программа

обработки неисправности

обработки нарушения

обработки внешнего

осциллятора

доступа к Flash

запроса NMI•прерывания

Опционально

Установка NMIIE, OFIE, ACCVIE с помощью одной команды

RETI Конец программы

обработки NMI•прерывания

Пример 1:

BIS #(NMIIE+OFIE+ACCVIE), &IE1 Пример 2:

BIS MASK, &IE1

;Маскировка допускается

;только для источников

;прерывания

Рис. 2-6. Алгоритм процедуры обработки NMI-прерывания

Каждое конкретное периферийное прерывание будет рассмотрено в этом руководстве в разделе описания соответствующего периферийного устройства.

2.2.3. Обработка прерывания

Если периферийное устройство запросило прерывание и включены биты общего разрешения прерываний GIE и индивидуальный бит разрешения прерывания от этого устройства, будет вызвана процедура обработки прерывания. Для вызова немаскируемого (NMI) прерывания достаточно установки только индивидуального бита разрешения прерывания.

Библиотека Компэла

29


MSP430x1xxFamily

Получение прерывания

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

1)Любая текущая команда выполняется до конца;

2)Содержимое программного счетчика PC, указывающего на следующую команду, помещается в стек;

Рис. 2-7. Процесс прерывания

3)Содержимое регистра статуса SR помещается в стек;

4)Если поступило несколько прерываний во время выполнения последней команды, обрабатывается прерывание с наивысшим приоритетом, остальные ожидают обслуживания;

5)Автоматически сбрасывается флаг одного источника прерывания. Флаги запроса остальных прерываний остаются установленными в ожидании обслуживания программным обеспечением.

6)Регистр SR очищается, за исключением бита SCG0, остающегося неизменным. В результате прекращается работа в любом режиме пониженного энергопотребления;

7)Содержимое вектора прерывания загружается в РС и начинается выполнение процедуры обработки прерывания с загруженного адреса.

Возврат из прерывания

Подпрограмма обработки прерывания заканчивается такой командой:

RETI (возврат из подпрограммы обработки прерывания)

Для возврата из прерывания необходимо 5 машинных циклов, чтобы выполнить действия, показанные на рис. 2.8.

30

Библиотека Компэла


Раздел II.

Системный сброс, прерывания и рабочие режимы

1)Восстанавливается из стека содержимое регистра SR. Становятся актуальными все предыдущие установки GIE, CPUOFF и пр., в не зависимости от установок, использовавшихся в процедуре обработке прерывания.

2)Восстанавливается из стека содержимое программного счетчика PC и начинается выполнение программы с того места, где она была прервана.

Рис. 2-8. Возврат из прерывания

Вложенные прерывания

Разрешаются вложенные прерывания, если бит GIE установлен во время выполнения процедуры обработки прерывания. Когда вложенные прерывания разрешены, любое прерывание, возникающее во время выполнения одной подпрограммы обработки прерывания, вызовет выполнение своей подпрограммы, несмотря на приоритеты прерываний.

2.2.4. Векторы прерываний

Векторы прерываний и стартовые адреса расположены в адресном диапазоне с 0FFFFh по 0FFE0h, как показано в таблице 2.1. Вектор программируется пользователем с помощью указания 16-разрядного стартового адреса соответствующей процедуры обработки прерывания. Полный перечень векторов прерываний приводится в справочном руководстве каждого конкретного устройства.

Таблица 2.1. Источники прерываний, флаги и векторы

Источник

Флаг

Характер

Адрес

Приоритет

прерывания

прерывания

прерывания

слова

Включение питания, внешний

WDTIFG

15,

сброс, сигнал сторожевого тайме-

Сброс

0FFFEh

KEYV

наивысший

ра, проверка пароля Flash-памяти

NMI-прерывание, неисправность

NMIIFG

Немаскируемое

осциллятора, нарушение доступа к

OFIFG

Немаскируемое

0FFFCh

14

Flash-памяти

ACCVIFG

Немаскируемое

Библиотека Компэла

31