8.3. Режимы пониженного энергопотребления для МК серии Flexis
(Руководство разработчика по микроконтроллерам семейства HCS08)Данный режим был разработан для экономии энергии во время исполнения прикладной программы. В этом режиме ЦП и периферийные модули не останавливаются, а продолжают свою работу, но внутренний стабилизатор напряжения под управлением программы переходит в режим stand-by, и частота тактирования ограничивается 250кГц, что соответствует BUSCLK= 125кГц.
Чтобы перейти в рабочий режим с уменьшенным потреблением энергии, необходимо установить бит управления LPR регистра SPMSC2 в 1. Учтите, что перед этим необходимо выполнить некоторые условия:
- Модуль тактирования ICS должен работать в режиме FBELP, внешний генератор должен быть настроен на самый низкий коэффициент усиления (бит ICSC2:HGO=0). За более подробной информацией обратитесь к разделу 7.2.
- Модуль LVD должен быть отключен: необходимо установить бит SPMSC1:LVDE и сбросить бит SPMSC1:LVDSE (подробнее см. в разделе 5.2). Учтите, что эти биты устанавливаются в 1 после сброса системы, т.е. по умолчанию модуль LVD включен.
- Внутренний источник опорного напряжения отключен и не может использоваться аналоговым компаратором и модулем АЦП.
- Модуль АЦП должен быть настроен на тактирование от внутреннего генератора (ADACK). Кроме того, делитель частоты модуля АЦП должен быть настроен на максимальное значение, чтобы максимально уменьшить частоту тактовых импульсов.
- Во время режима работы с низким энергопотреблением нельзя программировать или стирать флэш-память.
- В рабочий режим с низким потреблением нельзя войти во время выполнения сессии отладки. При попытке это сделать бит 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
#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 >>>