介绍:
PIC单片机集成的模块比较多,需要在性能和功耗上达到一个很好的平衡,需要用到节能模式很看门狗
看门狗可以在闲置模式和睡眠模式下唤醒CPU
有如下方式可以节能:
系统时钟管理
工作在睡眠很闲置模式
DOZE模式
关掉一些外设
系统时钟越小,越节能,CPU甚至可以工作在ON THE FLY模式下减少功耗
指令集节能模式:也就是工作在睡眠模式,有一个寄存器可以设置PWRSAV
睡眠模式是能耗最低的模式,系统时钟源和外设时钟都停止工作。
闲置模式下,CPU关闭,但是系统时钟继续工作,外设继续工作但是不能操作。
在RCON中
睡眠模式:
主振荡器和FRC都关掉
如果辅振荡器打开,则此振荡器继续工作
如果WDT或者超低的32.768时钟打开
如果VREGS位清零,则工作在standby模式
基于系统时钟的外设停止工作
因为系统时钟不工作,时钟监视功能不工作
为了使系统工作于最节能的sleep状态,确保:
I/O口不驱动电阻负载
配置为输入的引脚不悬空
关掉辅助时钟
关掉看门狗
电压调整设置在STANDBY模式
器件退出睡眠模式,读取COSC和OSCCON的设置位继续工作。
从睡眠模式唤醒的延时:
从睡眠状态下唤醒的时间分为如下几个部分:
工作在闲置模式:
闲置模式有如下特征:
CPU停止执行指令
系统时钟继续有效
外设模块继续工作在默认的时钟状态
如果设置外设在“闲置模式下继续工作”,则继续工作。
从闲置模式和睡眠模式下唤醒:
以下情况,退出两种节能模式:
一个已经使能的中断事件
看门狗
任何情况下的复位
中断唤醒:
唤醒后,中断等级不够?接着睡
等级足够?执行中断程序。
看门狗溢出:
如果使能看门狗,则起来开始工作。
此时标志位可以指示出是谁唤醒了芯片。
复位唤醒
不解释。
DOZE模式
优先的办法是通过睡眠和闲置模式来减小功耗,但是有时候就不凑效了,比如:
你操作了系统时钟,那波特率就出错了
并且,如果是睡眠模式和闲置模式,处理器就不工作了
DOZE来了,系统时钟你全速继续工作,CPU爱减速就减速。
DOZE通过DOZEN来使能,可以配置CPU和外设的分频,一共有8中模式。
如果设置了ROI位,收到中断,CPU立刻全速跑,中断事件不会影响到DOZE模式。
还有一种办法:
关掉外设。
除了IO以外,所有的外设都有一个开关,可以设置为关掉外设来减少功耗。
看门狗
看门狗的主要功能是在程序跑飞时进行复位。看门狗的另外一个功能是唤醒睡眠和闲置状态的MCU.
看门狗的时钟源为LPRC,可以进行分频设置。方框图如下:
看门狗的操作:
看门狗使能后,定时器开始跑,如果芯片不是出于睡眠和闲置模式,则溢出后复位CPU。
为了防止复位产生,程序必须周期性写入清狗指令:CLRWDT
如果芯片出于睡眠和闲置模式,则溢出后芯片被唤醒。
使能和关闭看门狗:
FWDTEN可以使能和关闭看门狗,芯片复位时,使能看门狗为默认状态。
也可以通过SWDTEN的软件来使能看门狗,软件看门狗在每次复位时被清掉
窗口化的看门狗定时器:
如下,这种模式在特别快或者特别慢的代码临界段使用,看门狗只能在后四分之一的复位才有效。
通过设置prescaler和postscaler,通过下面的公式来计算溢出周期:
T=N1*N2*Tlprc
N1和N2的选择如下表:
下面情况发生时,看门狗复位:
器件复位
进入睡眠或者闲置模式
看门狗在软件内使能
完成一个时钟周期
正常清狗,或者在看门狗窗口期windis为0
睡眠模式和闲置模式下的使用:
如果使能看门狗,在睡眠和闲置模式下,看门狗继续运行,当狗溢出时,芯片被唤醒。继续在PWRSAV这里还是运行。
看门狗定时器对于降低功耗很有帮助,可以让芯片定时的出于低功耗状态和唤醒。
文章评论(0条评论)
登录后参与讨论