N76E003低功耗模式(+中断唤醒)
2022-07-11 来源:csdn
一、低功耗问题
N76E003电源有两种模式,若想最大降低功耗,那么当然选择掉电模式了,进入掉电模式很简单直接set_PD,单片机就进入掉电了;
文档中给出的电气特性说是最低可以达到6-8ua;
我也测试了,若只写
clr_BODEN;//关闭欠压检测
set_PD;// 进入掉电模式
发现功耗还是比较大的,并没有达到6-8ua;后面找到问题,原来将单片机切换至低速模式(LIRC)时,再进入掉电,那么才能达到6-8ua。
set_OSC1;
clr_OSC0;
clr_HIRCEN;
clr_BODEN;
set_PD;
具体的一些注意事项看规则书:
二、唤醒问题
通过规则书,我们可以发现中断可以唤醒单片机;
//-------管脚中断中断服务程序---------
void PinInterrupt (void) interrupt 7
{
if(PIF==0x01)//0通道
{
PIF=0;//清除外部中断标志
}
}
void EXTI_Init(void)
{
set_EA; //开启总中断
set_EPI; //开启管脚中断(位于拓展中断中)
P30_Input_Mode; //设置为输入模式
set_PIPS1;
set_PIPS0;//选择P3.0为中断输入源
Enable_BIT0_FallEdge_Trig; //下降沿
}
管脚中断的一些配置,主要参考这张图,再根据我上面贴的代码,很容易可以举一反三,那么其他的管脚中断配置就出来了。
三、还有一种低功耗方法(掉电与工作切换)
因为在单片机在切换至低速模式时,在与其他传感器进行通讯时,单片机跑太慢,通讯不了,所以推荐低功耗方法可以利用单片机的自我唤醒功能,在读取到传感器数据后进入掉电,而后一段时间自我唤醒,这样可以很大程度降低功耗。若大家还有其他方法,欢迎讨论。
void WakeUp_Timer_ISR (void) interrupt 17 //自动唤醒中断
{
clr_WKTF; //clear interrupt flag
flag=1;
}
void WakeUp_Init(void)//定时唤醒
{
/*
定时时间/((Pre-scalar预分频+1)/10)=255-重载值(RWK)
eg:
定时1000ms,64分频,算重载值
1000/((64+1)/10)=153
*/
WKCON=0x03;//预分频64
RWK =255-77;//定时0.5s
set_EWKT; //使能定时唤醒中断
set_WKTR; //运行定时唤醒功能
EA = 1; //开启总中断
}
void main()
{
P12_Quasi_Mode;
delay(500);
P12=1;
delay(500);
P12=0;//灯亮
WakeUp_Init();//定时唤醒
while(1)
{
if(flag)
{
WKTcount++;
flag=0;
else if(WKTcount>=2)
{
/****功能代码*****/
WKTcount=0;
}
clr_BODEN;//关闭欠压检测
set_PD;// 进入掉电模式
}
}
}
- 新塘N76E003红外遥控解码程序
- [单片机][N76E003][PCA9540BD][IIC扩展器] 一组IIC变两组IIC 使用方法 例子 代码
- [单片机][N76E003][MCP4017][MCP4018][MCP4019] 数字电位器 使用方法 例子 代码
- [N76E003][PCA9540BD][IIC扩展器] 一组IIC变两组IIC 使用方法
- 单片机 N76E003 实现 QC2.0 QC3.0 USB Type-C协议
- N76E003][MCP4017][MCP4018][MCP4019] 数字电位器 使用方法
- 单片机 N76E003 EC12 编码器
- N76E003 单片机 IIC 软模拟
- N76E003 模拟IIC 读写陀螺仪模块
- N76E003 学习三 按键控制LED亮灭