购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.8 系统掉电保护和低功耗设计

对于一个完善的单片机应用系统,为了保证其能够安全地运行及减少功耗等,需要考虑进行掉电保护和采用低功耗的工作方式。

2.8.1 掉电保护

掉电保护电路需要完成的工作是,由电压检测电路检测到电源电压下降时,触发外部中断 INT0 INT1 ,在中断服务子程序中将外部RAM中的有用数据送入内部RAM保存,然后切换备用电源。

在单片机工作的时候,如果突然电源中断或电源电压不稳,都有可能造成单片机停止工作。此时,单片机RAM中的数据及各种寄存器的状态都将丢失。等到电源恢复的时候,单片机便重新进入新的一次执行。对于一些比较重要的系统,一般不允许。这就需要进行掉电保护,将一些重要的数据保护起来或切换到备用电源。

备用电源只为单片机内部RAM和专用寄存器提供维持电流,使这些重要的数据不丢失;而整个外部电路则因为电源的中断而停止工作,时钟电路也停止振荡,CPU也停止工作。

当电源恢复的时候,备用电源还需要继续供电10ms左右,以保证外部电路达到稳定状态。在结束掉电保护状态时,首要的工作是将被保护的数据从内部RAM中恢复出来。

图2-24 掉电保护电路

如图2-24所示是一个实用的掉电保护电路,当系统检测到电源中断的时候,立即通过外部中断输入线 INT0 来中断单片机现行操作。外部中断0服务程序将一些重要的数据送入片内RAM保存,然后使P1.0输出低电平来触发单稳态电路MC7555。它输出电平脉冲的宽度取决于电容和电阻的数值及电源VCC是否已经掉电。如果当单稳态定时输出后,若VCC仍然存在,这是一个假掉电报警,并从复位开始重新操作;若VCC已经掉电,则断电期间由单稳态电路给RST供电,维持片内RAM保存信息,一直到VCC恢复为止。

对于80C51及AT89S52等,掉电保护的过程不相同。当电压检测电路检测到电源电压降低的时候,同样触发外部中断,在中断服务子程序中,除了将外部RAM中的有用数据保存以外,还要将特殊功能寄存器的有用数据保护起来,然后对电源控制寄存器PCON进行设置,PCON寄存器的各位定义如表2-9所示。

表2-9 PCON寄存器的各位定义

其中,SMOD是波特率倍增位,在串口通信中使用;GF1和GF0是通用标志位,由软件置位和复位;PD是掉电控制方式,PD=1,则进入掉电方式;IDL是待机方式控制位,IDL=1,则进入待机方式。

由软件将PD位设置为1,就可以使单片机进入掉电保护状态,这时单片机的一切工作都停止,只有内部RAM和特殊功能寄存器的内容被保存。掉电保护的电源是通过VCC引脚接入的。当电源恢复正常后,系统要维持10ms的复位时间后才能退出掉电保护状态,复位操作将重新定义特殊功能寄存器,但内部RAM的内容不变,可将被保护的内容恢复。

2.8.2 低功耗设计

在野外,特别是电池供电的系统中,能源的消耗是个需要重点考虑的问题,这时希望单片机应用系统能低功耗运行,使系统的使用时间得到提高。AT89S52单片机提供了两种低功耗工作模式:省电保持模式和休眠运行模式。下面分别进行介绍。

1.省电保持模式

省电保持模式是将内部振荡器停止工作,此时CPU由于没有了时钟信号,因此,内部所有的功能部件均停止工作。但是内部RAM和全部的特殊功能寄存器的数据将被保存。

省电保持模式和掉电保护有点类似,对于80C51、AT89S52等适用。当CPU置PCON.1位为1后,即PD=1,系统便进入省电模式。在省电保持模式下,采用不同的程序存储器,各个端口的状态是不一样的,如表2-10所示列出了具体的状态。

表2-10 省电保持模式下各端口的状态

在省电保持模式下,电源电压VCC可以下降到2V,但在进入省电保持模式之前VCC不能下降。如果需要退出省电保持模式,返回正常工作状态,则VCC必须首先恢复到正常的工作电压,并维持10ms左右的时间,确保内部振荡器稳定起振后,才可以退出省电保持模式。

退出省电保持模式可以通过硬件复位或启动外部中断两种方式执行。

●硬件复位将使所有寄存器的内容重新初始化,但不会改变内部RAM中的数据。

●通过外部中断,这个外部中断必须使系统恢复到全部进入省电保持模式之前的稳定水平。中断启动后,中断服务程序开始恢复正常操作。

2.休眠运行模式

休眠运行模式是保持内部振荡器仍然运行,只是送往CPU内部的时钟信号被封锁,CPU被冻结,但内部时钟信号仍然供给中断、串行口、定时/计数器等。CPU内部状态,如堆栈指针SP、程序计数器PC、程序状态字PSW、累加器A及所有其他寄存器均保持冻结前的内容不变,各端口的状态也保持不变,片内RAM中的数据不丢失,外部设备也可以正常运行。

在软件中,将PCON.0位置1,即IDL=1,系统便进入休眠运行模式。休眠运行模式下,主要的外部引脚状态如表2-11所示。

表2-11 休眠运行模式下各端口的状态

在休眠运行模式下,电压VCC不能降低,但电流消耗会大大减少。系统进入休眠运行模式下,可以有两种方式退出休眠状态:硬件复位或外部中断。

●对于硬件复位,由于在休眠运行模式下,振荡器仍然提供时钟信号,硬件复位只需要两个机器周期便可以完成。加在RST引脚上的复位信号可以直接将IDL清零,便可以退出休眠运行模式。此时,系统便从进入休眠模式的下一条指令开始继续执行下面的程序。

●任何中断请求都可以将IDL清零,从而退出休眠运行模式。系统仍然从进入休眠模式的下一条指令开始继续执行下面的程序。通用标志位GF0和GF1可以用来指示中断是在正常模式下还是在休眠模式下发生的。

对于通用标志位的使用,需要在设置休眠运行模式的指令前,先设置通用标志位GF0或GF1。当系统处于休眠运行模式时,如果被中断终止,可在中断服务例程中检测被设置的通用标志位,以便确认系统中断是在何种情况下发生的。如果GF0或GF1为1,则表示是在休眠状态下发生的中断。 aRLpXhnjpLVg8tKRtRFfWuax1nJO+RTJVSjD4vdsxRl7++/Bok2hlaliqH8Bs6ms

点击中间区域
呼出菜单
上一章
目录
下一章
×