N76E003低功耗模式(+中断唤醒)

一、低功耗问题

在这里插入图片描述
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;// 进入掉电模式
		}
	}
}

第一次写,有什么不当的,希望大家指出!!

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值