Руководство пользователя MSP430 (1041606), страница 4
Текст из файла (страница 4)
RETI (возврат из подпрограммы обработки прерывания)
Для возврата из прерывания необходимо 5 машинных циклов, чтобы выполнить действия, показанные на рис.2.8.
-
Восстанавливается из стека содержимое регистра SR. Становятся актуальными все предыдущие установки GIE, CPUOFF и пр., в не зависимости от установок, использовавшихся в процедуре обработке прерывания.
-
Восстанавливается из стека содержимое программного счетчика PC и начинается выполнение программы с того места, где она была прервана.
Допускаются вложенные прерывания, если бит GIE установлен во время выполнения процедуры обработки прерывания.
2.2.4 Векторы прерываний
Векторы прерываний и стартовые адреса расположены в адресном диапазоне с 0FFFFh по 0FFE0h, как показано в таблице 2.1. Вектор программируется пользователем с помощью указания 16-разрядного стартового адреса соответствующей процедуры обработки прерывания. Полный перечень векторов прерываний приводится в справочном руководстве каждого конкретного устройства.
Таблица 2.1. Источники прерываний, флаги и векторы
Источник прерывания | Флаг прерывания | Характер прерывания | Адрес слова | Приоритет |
Включение питания, внешний сброс, сигнал сторожевого таймера, проверка пароля Flash-памяти | WDTIFG | Сброс | 0FFFEh | 15, наивысший |
NMI-прерывание, неисправность осциллятора, нарушение доступа к Flash-памяти | NMIIFG | Немаскируемое | 0FFFCh | 14 |
Определяется устройством |
|
| 0FFFAh | 13 |
Определяется устройством |
|
| 0FFF8h | 12 |
Определяется устройством |
|
| 0FFF6h | 11 |
Сторожевой таймер WDT |
| Маскируемое | 0FFF4h | 10 |
Определяется устройством |
|
| 0FFF2h | 9 |
Определяется устройством |
|
| 0FFF0h | 8 |
Определяется устройством |
|
| 0FFEEh | 7 |
Определяется устройством |
|
| 0FFECh | 6 |
Определяется устройством |
|
| 0FFEAh | 5 |
Определяется устройством |
|
| 0FFE8h | 4 |
Порт ввода/вывода Р2 | С P2IFG.0 по P2IFG.7 | Маскируемое | 0FFE6h | 3 |
Порт ввода/вывода Р1 | С P1IFG.0 по P1IFG.7 | Маскируемое | 0FFE4h | 2 |
Определяется устройством |
|
| 0FFE2h | 1 |
Определяется устройством |
|
| 0FFE0h | 0, низший |
2.2.5 Регистры специального назначения (SFRs)
В регистрах SFRs расположены биты доступа к некоторым модулям, биты разрешения прерываний и флаги прерываний. Регистры SFRs занимают начало адресного пространства и реализованы в однобайтном формате. Доступ к ним производится также с помощью однобайтных команд. Конфигурация регистров SFRs описывается индивидуально для каждого конкретного устройства.
2.3 Режимы работы
Семейство MSP430 разработано для приложений с ультранизким потреблением мощности и имеет различные режимы работы, показанные на рис.2.10.
Режимы работы учитывают три различные потребности:
-
ультранизкое потребление
-
скорость и пропускную способность
-
минимизацию потребления тока конкретной периферией
Типичное потребление тока микроконтроллерами семейства MSP430 показано на рис.2.9.
Рис.2-9 Типичное потребление тока устройствами 13х и 14х в зависимости от режима работы
Режимы низкого энергопотребления 0-4 конфигурируются с помощью битов CPUOFF, OSCOFF, SCG0 и SCG1 в регистре статуса. Преимущество включения битов управления режимом CPUOFF, OSCOFF, SCG0 и SCG1 в состав регистра статуса SR состоит в том, что текущий режим работы может быть сохранен, путем помещения содержимого SR в стек во время работы процедуры обработки прерывания. Выполняемая программа возвращается к предыдущему режиму работы, если сохраненное содержимое регистра SR не было изменено процедурой обработки прерывания. Выполнение программы может продолжится в другом рабочем режиме, если процедура обработки прерывания изменит значение регистра SR в стеке. Обращение к битам управления режимом и стеку может производиться с помощью любой команды.
При изменении любого бита управления режимом, выбранный режим работы активизируется немедленно. При отключении любой системы тактирования, блокируются также периферийные устройства, работающие от этой системы. Периферийные устройства также могут отключаться с помощью соответствующих им индивидуальных управляющих регистров. Состояние всех выводов портов ввода/вывода и ячеек ОЗУ остается неизменным. «Пробуждение» возможно через все разрешенные прерывания.
Рис.2-10 Режимы работы основной системы тактирования MSP430
SCG1 | SCG0 | OSCOFF | CPUOFF | Режим | Состояние ЦПУ и систем тактирования |
0 | 0 | 0 | 0 | Активный | ЦПУ и все системы тактирования активны |
0 | 0 | 0 | 1 | LPM0 | ЦПУ и MCLK отключены; SMCLK и ACLK активны |
0 | 1 | 0 | 1 | LPM1 | ЦПУ, MCLK и DCO-осцил. отключены; DC генератор отключен, если DCO не используется для MCLK или SMCLK в активном режиме; SMCLK и ACLK активны |
1 | 0 | 0 | 1 | LPM2 | ЦПУ, MCLK, SMCLK и DCO-осцил. отключены; DC генератор остается включенным; ACLK активно |
1 | 1 | 0 | 1 | LPM3 | ЦПУ, MCLK, SMCLK и DCO-осцил. отключены; DC отключен; ACLK активно |
1 | 1 | 1 | 1 | LPM4 | ЦПУ и все системы тактирования отключены |
2.3.1 Вход и выход из режимов пониженного энергопотребления
Появление прерывания выводит микроконтроллер семейства MSP430 из любого режима пониженного энергопотребления.
Программный поток выглядит так:
-
Вход в процедуру обработки прерывания:
-
Содержимое регистров PC и SR сохраняется в стеке;
-
Биты CPUOFF, SCG1 и OSCOFF автоматически сбрасываются;
-
Параметры для возвращения из процедуры обработки прерывания:
-
Исходное содержимое регистра SR восстанавливается из стека, что приводит к возобновлению работы устройства в предыдущем режиме;
-
Биты регистра SR, сохраненного в стеке, могут быть модифицированы процедурой обработки прерывания, что приведет к переходу в другой рабочий режим после выполнения команды RETI.
; Пример входа в режим LPM0
BIS #GIE+CPUOFF, SR ; Вход в режим LPM0
; ... ; Программа останавливается в этом месте
;
; Выход в режим LPM0 из процедуры обработки прерывания
BIC #CPUOFF, 0(SP) ; Выход в режим LPM0 по команде RETI
RETI
; Пример входа в режим LPM3
BIS #GIE+CPUOFF+SCG1+SCG0, SR ; Вход в режим LPM3
; ... ; Программа останавливается в этом месте
;
; Выход в режим LPM3 из процедуры обработки прерывания
BIC #CPUOFF+SCG1+SCG0,0(SP) ; Выход в режим LPM3 по команде RETI
RETI
Нахождение в режимах пониженного энергопотребления в течение длительного времени
Когда модуль DCO длительное время отключен при работе устройства в режиме пониженного энергопотребления, следует принимать во внимание его отрицательный температурный коэффициент. Если изменения температуры значительны, частота модуля DCO при включении после выхода из режима пониженного энергопотребления может сильно отличаться от исходной частоты и даже выходить за пределы заданного рабочего диапазона. Избежать этого можно, если устанавливать DCO на самое нижнее значение перед входом в режим пониженного энергопотребления на длительное время, когда температура может изменяться.
; Пример входа в режим LPM4 с низшими установками DCO
BIC #RSEL2+RSEL1+RSEL0,&BCSCTL1 ; Установка низших значений RSEL
BIS #GIE+CPUOFF+OSCOFF+SCG1+SCG0, SR ; Вход в режим LPM4
; ... ; Останов программы
;
; Процедура обработки прерывания
BIC #CPUOFF+OSCOFF+SCG1+SCG0, 0(SR) ; Выход в режим LPM4 по команде RETI
RETI
2.4 Принципы создания приложений с низким энергопотреблением
Часто, наиболее важным фактором для снижения энергопотребления является использование системы тактирования MSP430 для увеличения времени пребывания микроконтроллера в режиме LPM3. Типичное потребление тока в этом режиме составляет менее 2 мкА при функционирующей схеме тактирования реального времени и активированной системе прерываний. Модуль ACLK использует часовый кристалл 32 кГц, а ЦПУ тактируется от DCO (выключенного в нормальном режиме), который имеет время «пробуждения» 6 мкС.
-
Использование прерываний, «пробуждающих» процессор и управляющий программный поток;
-
Периферийные устройства должны включаться только при необходимости;
-
Следует использовать интегрированные периферийные модули с низким энергопотреблением вместо функций, реализуемых программными методами. К примеру таймер А и таймер В могут автоматически генерировать сигнал ШИМ и делать захват внешней синхронизации без использования ресурсов ЦПУ;
-
Вместо опроса флагов и длительных программных вычислений следует использовать рассчитываемое ветвление и быстрые таблицы преобразований;
-
Нужно избегать частого вызова подпрограмм и функций, увеличивающих непроизводительные издержки;
-
В длинных программных процедурах необходимо использовать однотактные регистры ЦПУ.
2.5 Подключение неиспользуемых выводов