8.3. Режимы пониженного энергопотребления для МК серии Flexis

(Руководство разработчика по микроконтроллерам семейства HCS08)

Данный режим был разработан для экономии энергии во время исполнения прикладной программы. В этом режиме ЦП и периферийные модули не останавливаются, а продолжают свою работу, но внутренний стабилизатор напряжения под управлением программы переходит в режим stand-by, и частота тактирования ограничивается 250кГц, что соответствует BUSCLK= 125кГц.

Чтобы перейти в рабочий режим с уменьшенным потреблением энергии, необходимо установить бит управления LPR регистра SPMSC2 в 1. Учтите, что перед этим необходимо выполнить некоторые условия:

  1. Модуль тактирования ICS должен работать в режиме FBELP, внешний генератор должен быть настроен на самый низкий коэффициент усиления (бит ICSC2:HGO=0). За более подробной информацией обратитесь к разделу 7.2.
  2. Модуль LVD должен быть отключен: необходимо установить бит SPMSC1:LVDE и сбросить бит SPMSC1:LVDSE (подробнее см. в разделе 5.2). Учтите, что эти биты устанавливаются в 1 после сброса системы, т.е. по умолчанию модуль LVD включен.
  3. Внутренний источник опорного напряжения отключен и не может использоваться аналоговым компаратором и модулем АЦП.
  4. Модуль АЦП должен быть настроен на тактирование от внутреннего генератора (ADACK). Кроме того, делитель частоты модуля АЦП должен быть настроен на максимальное значение, чтобы максимально уменьшить частоту тактовых импульсов.
  5. Во время режима работы с низким энергопотреблением нельзя программировать или стирать флэш-память.
  6. В рабочий режим с низким потреблением нельзя войти во время выполнения сессии отладки. При попытке это сделать бит LPR автоматически стирается и восстанавливается полноценный рабочий режим.

При переходе в рабочий режим с низким энергопотреблением устанавливается бит SPMSC2:LPRS, показывающий, что стабилизатор напряжения работает в режиме stand-by. Если же бит LPRS равен 0, то стабилизатор находится в полноценном рабочем режиме.

В МК включена схема выхода из рабочего режима с низким энергопотреблением по событию прерывания. Работа данной схемы определяется битом SPCSC2:LPWUI. Если LPWUI= 0, то после обнаружения прерывания внутренний стабилизатор напряжения не выходит из режима stand-by; если же LPWUI = 1, то стабилизатор начинает работать на полную мощность. Благодаря этой особенности, при работе в режиме низкого энергопотребления можно выполнять подпрограммы прерывания на высокой частоте, а перед выходом из подпрограммы прерывания снова настраивать МК на пониженное потребление.

Программно можно восстанавливать полноценный рабочий режим, сбросив бит LPR.

В Примере 8.4 показано, как использовать рабочий режим с низким потреблением энергии на демонстрационной плате DEMO9S08QE128. После сброса системы очень быстро мигают 2 светодиода, подключенные к линиям PTC0 и PTC1. Задержки между их включением и выключением установлены очень маленькие, а система тактирования работает в режиме FEI, т.е. частота тактирования равна 40 МГц, что соответствует BUSCLK = 20МГц. За счет инерционности светодиодов будет казаться, что они горят постоянно. При нажатии на кнопку SW1, подключенную к линии PTA2, система тактирования ICS перейдет в режим FBELP, т.е. частота шины BUSCLK станет равной 16.384Гц (половине номинальной частоты кварцевого резонатора 32.768 Гц). Теперь мигание светодиодов становится различимым. Светодиод LED3, подключенный к линии PTC2, указывает на работу МК в режиме экономии энергии (бит SPMSC2:LPR установлен).

Учтите, что если демонстрационная плата подключена к компьютеру и запущена программа отладчика, то внутренний стабилизатор никогда не перейдет в режим stand-by , т.е. бит LPRS не будет установлен в 1. Для проверки программы необходимо остановить сессию отладки, отключить демонстрационную плату, выключить ее и снова включить. Теперь, если нажать на кнопку SW1, загорится светодиод LED3, индицирующий режим пониженного потребления энергии микроконтроллером. Но при этом МК останется в работе!

Перед запуском программы необходимо подключить кварцевый генератор частотой 32.768 Гц, остальные элементы (C8, C9, RF и RS) должны быть отключены. Также нужно установить две перемычки в позицию J17 (перемычки CLOCK EN).

Пример 8.4. Использование рабочего режима с низким энергопотреблением

//Демонстрациярабочегорежимаспониженнымпотреблениемэнергиина
//демонстрационнойплатеDEMO9S08QE128
//(режимFBELP,BUSCLK=16384Гц)
//СветодиодLED1подключенклинииPTC0,
//светодиодLED2подключенклинииPTC1,
//светодиодLED3подключенклинииPTC2
//КнопкаSW1подключенаклинииPTA2,
//кнопкаSW2подключенаклинииPTA3
#include/*forEnableInterruptsmacro*/
#include"derivative.h"/*includeperipheraldeclarations*/
#include"hcs08.h"/*Этонашфайлсобъявлениями!*/
#defineLED1BIT_0//PTC0
#defineLED2BIT_1//PTC1
#defineLED3BIT_2//PTC2
#defineSW1PTAD_PTAD2
#defineSW2PTAD_PTAD3
//Простаяпрограммнаявременнаязадержка
voiddelay(unsignedintvalue)
{
for(;value;value--);
}
voidmain(void)
{
SOPT1=bBKGDPE;//НастройкарегистраSOPT1,подключениелинииBKGD
ICSC2=bEREFS;//ОтключениеFLL,выборвнешнегоисточникатактирования
ICSSC=DCO_MID|bDMX32;//ВыборсреднегодиапазонадляDCO,настройкана32768Гц
ICSC1=ICS_FLL;//МодульICSврежимеFEE
//(FLLтактируетсявнешнимгенераторомприIREFS=0)
while(ICSSC_CLKST!=ICSC1_CLKS);//Ожидание,покапроизойдет
//выбористочникатактирования
SPMSC1=0;//ОтключениемодуляLVD
PTCDD=0xFF;//НастройкалинийпортаPTCнавывод
PTCD=0xFE;//Установитьв1вселиниипортаPTC,кромеPTC0
//(светодиодLED1включен,светодиодLED2выключен)
PTAPE=BIT_2|BIT_3;//Включениевнутреннихподтягивающихрезисторов
//длялинийPTA2иPTA3
while(1)
{
PTCTOG=LED1;//ИзменитьсостояниесветодиодаLED1(бит0портаPTC)
PTCTOG=LED2;//ИзменитьсостояниесветодиодаLED2(бит1портаPTC)
delay(60);//Небольшаязадержка
PTCTOG=LED1;//ИзменитьсостояниесветодиодаLED1(бит0портаPTC)
PTCTOG=LED2;//ИзменитьсостояниесветодиодаLED2(бит1портаPTC)
delay(60);//Небольшаязадержка
//ПроверяембитLPRSи,еслионустановлен,товключаемсветодиодLED3
//(рабочийрежимспониженнымпотреблениемэнергиивключен)
if(SPMSC2_LPRS)PTCCLR=LED3;elsePTCSET=LED3;
if(!SW1)
{
ICSC2=bICS_LP|bEREFS;//ПереводимсхемуFLLврежимнизкого
//потребленияэнергии
ICSC1=ICS_FBE;//МодульICSпереводимврежимFBE
//(BUSCLK=16384Гц)
SPMSC2_LPR=1;//Переходимврабочийрежимс
//пониженнымпотреблениемэнергии
}
if(!SW2)
{
ICSC2=bEREFS;//Внешнийгенератор
ICSC1=ICS_FLL;//МодульICSпереводимврежимFEE(BUSCLK=20МГц)
SPMSC2_LPR=0;//Выходизрежимаспониженнымпотреблениемэнергии
}
}
}

Электронные компоненты Freescale >>>
Подробнее о компании Freescale >>>