Миро Самек "Использование режимов малого энергопотребления в простых программных архитектурах" (перевод)
MSP430
MSP430 - 16-разрядный контроллер со сверхнизким потреблением фирмы Texas Instruments. Он поддерживает чистый атомарный переход в любой из пяти возможных режимов сохранения энергии, так как биты, управляющие тактированием, и бит разрешения прерываний ( "GIE") расположены в одном месте - регистре состояния ("SR") [2].
Код для компилятора GNU gcc для MSP430, приведённый в листинге 2, показывает как выполнить атомарный переход в режим малого потребления LPM1 с одновременным разрешением прерываний. Макрофункция "_bis_SR_register (LPM1_bits | GIE)" разворачивается в единственную ассемблерную инструкцию "BIS.W #0x58,SR", которая одновременно устанавливает биты 0x58 в регистре "SR". Единичное значение бита 0x10 ("CPUOFF") выключает тактирование ядра, [* единичное значение бита 0x40 ("SCG0") выключает внутренний генератор DCO,] а единичное значение бита 0x08 ("GIE") разрешает прерывания.
Листинг 2. Код для компилятора GNU MSP430 gcc показывает как выполнить атоммарный переход в режим пониженного потребления LPM1 с одновременным разрешением прерываний |
|
В MSP430 с его атомарным переходом в любой из режимов малого потребления возникает противоположная проблема [* - прерывание не изменяет автоматически режим питания ядра, притом, что сам обработчик работает в режиме максимальной мощности]: в каждом обработчике прерывания (ISR) нужно прямо запрещать режим малого потребления, меняя сохранённое в стеке состояние регистра "SR", чтобы после выхода из прерывания контроллер не засыпал вновь, а возвращался к выполнению фонового задания. К счастью, это очень легко сделать с помощью встроенной в большинство компиляторов для MSP430 функции. Листинг 3 показывает код обработчика прерывания для компилятора GNU gcc.
Листинг 3. Пример обработчика прерываний для компилятора GNU MSP430 gcc |
|
- блог пользователя teap0t
- 45493 просмотра
Новые записи в блогах
- Устранение дребезга контактов на основе вертикальных счетчиков
- Диагностика Imprecise Bus Faults в микроконтроллерах Cortex-M3/M4/M4F
- Self-powered камера
- Фоновый модулятор: беспроводная связь из ничего (перевод)
- Texas Instruments Analog Applications Journal SLYT612 "Снижение искажений в аналоговых КМОП ключах" (перевод)
- USB MSD. Часть 6. Команды SCSI (перевод)
- USB MSD. Часть 3. USB класс накопителей данных (перевод)
- Texas Instruments Application Report SBAA042 "Кодовые схемы, используемые в аналогово-цифровых преобразователях" (перевод)
- 10 принципов правильного интерфейса
- Релиз SDK на русский микропроцессор КРОЛИК
Recent comments
5 лет 20 недель назад
5 лет 35 недель назад
5 лет 45 недель назад
5 лет 47 недель назад
6 лет 3 недели назад
6 лет 27 недель назад
6 лет 28 недель назад
6 лет 31 неделя назад
6 лет 42 недели назад
7 лет 22 недели назад