单片机掉电保护总结
单片机掉电保护)总结

单片机应用系统断电时的数据保护方法在测量、控制等领域的应用中,常要求单片机内部和外部RAM中的数据在电源掉电时不丢失,重新加电时,RAM中的数据能够保存完好,这就要求对单片机系统加接掉电保护电路。
掉电保护通常可采用以下三种方法:一是加接不间断电源,让整个系统在掉电时继续工作,二是采用备份电源,掉电后保护系统中全部或部分数据存储单元的内容;三是采用EEPROM来保存数据。
由于第一种方法体积大、成本高,对单片机系统来说,不宜采用。
第二种方法是根据实际需要,掉电时保存一些必要的数据,使系统在电源恢复后,能够继续执行程序,因而经济实用,故大量采用[1]。
EEPROM既具有ROM掉电不丢失数据的特点,又有RAM随机读写的特点。
但由于其读写速度与读写次数的限制,使得EEPROM不能完全代替RAM。
下面将介绍最常用的一些掉电保护的处理方法,希望能对相关设计人员在实际工作中有所帮助。
1 简单的RAM数据掉电保护电路在具有掉电保护功能的单片机系统中,一般采用CMOS单片机和CMOS RAM。
CMOS型RAM存储器静态电源小,在正常工作状态下一般由电源向片外RAM供电,而在断电状态下由小型蓄电池向片外RAM供电,以保存有用数据,采用这种方法保存数据,时间一般在3-5个月[2]。
然而,系统在上电及断电过程中,总线状态的不确定性往往导致RAM内某些数据的变化,即数据受到冲失。
因此对于断电保护数据用的RAM存储器,除了配置供电切换电路外,还要采取数据防冲失措施,当电源突然断电时,电压下降有个过程,CPU在此过程中会失控,可能会误发出写信而冲失RAM中的数据,仅有电池是不能有效完成数据保护的,还需要对片选信号加以控制,保证整个切换过程中CS引脚的信号一直保持接近VCC。
通常,采用在RAM的CS和VCC引脚之间接一个电阻来实现COMS RAM的电源切换,然而,如果在掉电时,译码器的输出出现低电平,就可能出现问题,图1给出一种简单的电路设计,它能够避免上述问题的产生。
AVR单片机掉电数据保护应用实例

A VR单片机掉电数据保护应用实例?简易电路集锦?单片机掉电数据保护应用实例在单片机应用中经常需要在掉电时(包括人为的关机和偶然的外部电源故障),对运行的数据进行保存.目前,常用的方法是单独给单片机增加一个较大的电容(一般为2000IJf以上,也有用法拉级的),外部掉电后,靠大电容存储的电量缓慢放电,提供单片机向eeprom存储数据所需要的时间.所选的电容小,提供的时间短,存储数据不可靠,所选电容大提供时间长,存储数据可靠.但是随之而来的问题是,掉电后电容放电过程中,单片机的供电电压在缓慢下降,当下将到某个值但还没有降到复位门限电压之前,如果此时再次开机,则单片机不能正常启动,导致单片机重复上电后工作混乱.下面具体分析这一过程并给出解决的办法.我们先了解一下A VR的上电复位特点.表1是A VR数据手册提供的上电复位参数.从表1中可知,上电复位的典型门限电压是1.4V和1.3V,即在单片机上电时,其电源电压要低于此值,才能使单片机上电复位.单片机的正常工作电源电压范围是2.7~5.5V.当电源电压低于2.7V时,单片机已经停止工作,如果此时电压高于1.3V,并且再次上电,则单片机不能正常复位,导致工作混乱.一些场合的停电可能是瞬间的,包括人为断电可能都是瞬间的,可能几秒钟之内又再次上电,而此时单片机电容的电压恰好处于复位电压以上和正常工作电压以下,就会出现上面的现象.这是本人在实际应用当中所遇到的情况.由此可见,虽然解决了数据保护问题,却又带来了新的麻烦.所以在解决单片机掉电数据保护时,应该注意的是既要保表1A VR复位特征武志军证充足的时间用于数据存储,又要尽快放电,保证正常重新上电.图1是本文所用的电路,图中交流电经过CON2输入,整流滤波后到达三端稳压块7806(注意在此用7806而不是7805),7806的输出一路经d1送到单片机(cpu_v=5.3V),单独给单片机供电,单片机耗电通常小于5毫安,由于使用C4 (2200IJf)电容,该路电源的放电时间较长.另外一路电源经过d2送到电路负载中(Vcc=5.3V),通常此路电源的电流较大,超过几十毫安.这样,在断电后,Vcc由于放电电流大而且滤波电容小,很快放电,通常在几毫秒以内.而另外一路cpu_v,由于滤波电容大而且放电电流小,所以放电很慢,t>2200IJfX10—6X5V/5maX10-3=2.2s;Vcc经过R4,W2分压接到单片机比较器的输入端ain0,cpu—V经过R6和稳压管(3.3V)接到单片机比较器的ainl端.电路正常工作时,调整电位器W2,使得ain0电压大于ainl电压0.2V,当掉电(或断电)发生时,ain0下降快,ainl下降慢,当ain0低于ainl时,比较器翻转.A VR比较器的翻转可以触发中断,在中断里完成eeprom的数据保存.图中Q1及周围的电路的工作作用是:初次上电时,由于电容C1两端电压不能突变,所以三极管的b,e结电压为OV, 处于截止状态,截止的时间取决于C1和R2的时间常数,本电路中参数可以保证截止时间超过10ms,在此时间之内CPU已经进入正常工作状态,在程序中将OUT端置”1II电平,继续使三极管截止.当断电发生时,先存储数据到eep—r0m,然后out端置”O”电平,三极管饱和导通,立刻给cpu_v电源放电,R3是限流电阻.这样放电时间取决于R3和C4,大符号参数条件最小值典型值最大值单位h上电复位门限电压(电压由低到高上升y”1423VVpOT上电复位门限电压(电压由高到低跌落)1.32.3V电子世界?2010.10—50—约是35ms.而A VR的eeprom的数据存储时间通常是3-4ms,根据总体写入数据的多少决定总的时间,再加上三极管的放电时间,一般在几十~200ms时间内完成,因此,如果在0.2秒以后再次开机,电路复位是可靠的,而如果不加放电回路,需要等待几秒或几十秒时间.综上,既保证了数据的存储又保证了下次开机的正常.程序代码如下:定义变量:eeprom数据:uinteepromdata1一ee:uinteepromdata2一ee;uinteepromdatan—ee;运行变量:uintdata1:uintdata2;uintdatan∥快速放电端口#defineoutPORTD—Bit6//输出端口.#defineouLdirDDRD—Bit6//端口方向.∥模拟比较中断定义#definecompare{)ACSRI=(1<<ACIE)I(1<<ACIS1)I(1<<ACIS0)//ani0,ani1中断使能.上升沿中断. ∥比较器中断函数?简易电路集锦?#pragmavector=ANA_COMP_vectinterruptvoidcomp(){data1一ee=datal:ff送数据到eepromdata2一ee=data2:datan3一ee=datanwhile(1){discharg=O;//放电,循环直到没电))//主程序main(){∥上电立刻使放电输出为”1”out=l://输出0.快速放电,不放电outdir=l://输出模式out=1//不放电.∥其它程序)图1原理图屯子世界?2010.10—51。
单片机系统中RAM数据掉电保护的处理方法

单片机系统中RAM数据掉电保护的处理方法在测量、控制等领域的应用中,常要求单片机内部和外部RAM中的数据在电源掉电时不丢失,重新加电时,RAM中的数据能够保存完好,这就要求对单片机系统加接掉电保护电路。
掉电保护通常可采用以下三种方法:一是加接不间断电源,让整个系统在掉电时继续工作,二是采用备份电源,掉电后保护系统中全部或部分数据存储单元的内容;三是采用EEPROM来保存数据。
由于第一种方法体积大、成本高,对单片机系统来说,不宜采用。
第二种方法是根据实际需要,掉电时保存一些必要的数据,使系统在电源恢复后,能够继续执行程序,因而经济实用,故大量采用[1]。
EEPROM既具有ROM掉电不丢失数据的特点,又有RAM随机读写的特点。
但由于其读写速度与读写次数的限制,使得EEPROM不能完全代替RAM。
下面将介绍最常用的一些掉电保护的处理方法,希望能对相关设计人员在实际工作中有所帮助。
1 简单的RAM数据掉电保护电路在具有掉电保护功能的单片机系统中,一般采用CMOS单片机和CMOS RAM。
CMOS型RAM存储器静态电源小,在正常工作状态下一般由电源向片外 RAM供电,而在断电状态下由小型蓄电池向片外RAM供电,以保存有用数据,采用这种方法保存数据,时间一般在3-5个月[2]。
然而,系统在上电及断电过程中,总线状态的不确定性往往导致RAM内某些数据的变化,即数据受到冲失。
因此对于断电保护数据用的RAM存储器,除了配置供电切换电路外,还要采取数据防冲失措施,当电源突然断电时,电压下降有个过程,CPU在此过程中会失控,可能会误发出写信而冲失RAM中的数据,仅有电池是不能有效完成数据保护的,还需要对片选信号加以控制,保证整个切换过程中CS引脚的信号一直保持接近VCC。
通常,采用在RAM的CS 和VCC引脚之间接一个电阻来实现 COMS RAM的电源切换,然而,如果在掉电时,译码器的输出出现低电平,就可能出现问题,图1给出一种简单的电路设计,它能够避免上述问题的产生。
SST89E516RD单片机掉电保护方案的设计

SST89E516RD单片机掉电保护方案的设计【摘要】针对当前具有IAP功能和内含FLASH存储器的单片机,提出了一款基于法拉级电容的掉电保护方案,并以SST89E516RD单片机在粮仓自动薰蒸控制系统中的应用为例,对此掉电保护方案的软、硬件设计进行了详细介绍。
【关键词】掉电保护;法拉电容;IAP;FLASH存储器1.引言近几年来,单片机在工业控制领域得到了广泛的应用。
几乎所有的工控系统都需要考虑掉电时数据保存的问题。
尤其是涉及到定量加料、贸易结算的计量设备。
所以,这就要求在单片机控制系统中,必须有可靠的掉电数据保护电路控制模块。
传统的掉电保护大多是通过外接非易失性存储器和备用电池来实现的。
当今,出现大量具有IAP功能和内含FLASH存储器的单片机,以及伴随着法拉级电容的出现,事实上已经宣布掉电电池或者用达拉斯DS存储器实现掉电数据保存的传统的思维和电路已经成为历史。
基于上述背景,作者在粮仓自动薰蒸控制系统的设计中针对SST89E516RD单片机采用法拉电容设计了一款掉电保护方案。
2.SST89E516RD单片机的简介3.SST89E516RD掉电保护的硬件设计粮仓自动薰蒸控制系统要求在掉电时实时保存0~19次的当前工作次数值,由此可见,系统的掉电写存数据量较小,占用一字节的存储空间便可实现。
因此我们只要在主供电掉电时,备用供电能够维持大约10ms左右的时间完成一字节数据的存储便可。
伴随着法拉级电容的出现,我们在设计中没有采用备用电池供电方式,采用了法拉电容备用供电的方式。
在本系统中选用市场上较为常见的0.47F/5.5V法拉电容来实现短时间备用供电。
因SST89E516RD单片机的工作电压范围是4.5V-5.5V,因此当掉电事件发生后,法拉电容从5.5V电压下降为4.5V 之间的1V电压在0.47F/5.5V法拉电容的电荷流失时间就是掉电报警后数据保存时间。
经实验测得,粮苍自动薰蒸控制系统当外设驱动电流被屏蔽时,单片机的工作电流约为20mA,通过公式:I*T=Q;Q=C*U(I为电流,T为时间,Q为电荷量,C为电容容量,U为电压),可求得:T=C*U/I=1V*0.47*1000(1000是因为工作电流为毫安)/20=23.5秒!这个时间对单片机而言简直相当慢长。
51单片机空闲和掉电模式详解

51单片机空闲和掉电模式应用我们知道单片机内部有一个电源管理寄存器PCON,这个寄存器的最低两位,IDL和PD这两位分别用来设定是否使单片机进入空闲模式和掉电模式。
1. 空闲模式当单片机进入空闲模式时,除CPU处于休眠状态外,其余硬件全部处于活动状态,芯片中程序未涉及到的数据存储器和特殊功能寄存器中的数据在空闲模式期间都将保持原值。
但假若定时器正在运行,那么计数器寄存器中的值还将会增加。
单片机在空闲模式下可由任一个中断或硬件复位唤醒,需要注意的是,使用中断唤醒单片机时,程序从原来停止处继续运行,当使用硬件复位唤醒单片机时,程序将从头开始执行。
让单片机进入空闲模式的目的通常是为了降低系统的功耗,举个很简单的例子,大家都用过数字万用表,在正常使用的时候表内部的单片机处于正常工作模式,当不用时,又忘记了关掉万用表的电源,大多数表在等待数分钟后,若没有人为操作,它便会自动将液晶显示关闭,以降低系统功耗,通常类似这种功能的实现就是使用了单片机的空闲模式或是掉电模式。
以STC89系列单片机为例,当单片机正常工作时的功耗通常为4mA~7mA,进入空闲模式时其功耗降至2mA,当进入掉电模式时功耗可降至0.1μA以下。
2. 休眠-掉电模式当单片机进入掉电模式时,外部晶振停振、CPU、定时器、串行口全部停止工作,只有外部中断继续工作。
使单片机进入休眠模式的指令将成为休眠前单片机执行的最后一条指令,进入休眠模式后,芯片中程序未涉及到的数据存储器和特殊功能寄存器中的数据都将保持原值。
可由外部中断低电平触发或由下降沿触发中断或者硬件复位模式换醒单片机,需要注意的是,使用中断唤醒单片机时,程序从原来停止处继续运行,当使用硬件复位唤醒单片机时,程序将从头开始执行。
【例】:开启两个外部中断,设置低电平触发中断,用定时器计数并且显示在数码管的前两位,当计到5时,使单片机进入空闲(休眠)模式,同时关闭定时器,当单片机响应外部中断后,从空闲(休眠)模式返回,同时开启定时器。
单片机中的掉电存储问题

利。不仅思路清晰,而且便于模块化管理自己的程序。
现在,我们创建两个文件,分别为 NV.h 和 NV.C,h 文件作为 NV 管理的模块。NV.h 中
我们来定义 NV 变量的数据结构(即笔者所认为的类的属性)和声明对 NV 操作的函数。
#ifndef _NV_
#define _NV_
//NV 操作的状态定义
做到尽量把我们这个 NV 操作模块从我们编写的其他应用程序中抽象出来。
那么,接下来,我们就来编写 NV16 变量的操作函数。在 NV.C 中,我们添加两个函数,
一个是获取 NV 变量的值,另一个是修改 NV 变量的值。
#include "NV.h"
#include "24CXX.h"
#define CheckTimes
u32 AT24CXX_ReadLenByte(u16 ReadAddr,u8 Len)
{
u8 t;
u32 temp=0;
for(t=0;t<Len;t++)
{
temp<<=8;
temp+=AT24CXX_ReadOneByte(ReadAddr+Len-t-1);
}
return temp;
}
//在 AT24CXX 里面的指定地址开始写入长度为 Len 的数据
函数,旨在表明这种方法的思路。具体读者可以根据自己的使用环境,自己改进。
首先,说明下笔者的编程习惯,笔者在编写单片机 C 程序的过程中,往往喜欢把程序中
涉及的东西封装成类似于面向对象思想中的类。把数据结构假想成类的属性,把对相应数据
结构操作的函数,假想成类的方法。这种方法在实际编程过程中,往往给自己带来很大的便
单片机应用系统断电时的数据保护方法
态电源小 , 在正常工作状态下一般 由电源 向片外 R AM 供 电, 而在断 电状态 下 由小型 蓄 电池 向片外 R M 供 电 , A 以 保存有用数据 。采用这种方 法保存 数据 , 时间一般 在 3 ~
R M 中的数据能够保存完 好 , A 这就 要求对 单片机 系统加
接掉 电保护 电路 。掉 电保护通常可 统 在 掉 电 时继 续 工 作 ; 是 让 二
2 可 靠的 R M 掉电保护 电路 A
上述 的电路虽然 简单 , 但有时可能起不 到 R AM 掉 电
下 面将 介 绍 最 常 用 的 一 些 掉 电保 护 的处 理 方 法 , 望 能 对 希 相关 设 计 人 员 在实 际 工 作 中有 所 帮 助 。
都有一个 C 2引脚 , E 在一 般情 况下 需将 此引脚 拉 高。当
把该引脚拉至小于或等于 0 2V时 , AM 就进 人数据保 . R
C S单 片 机 和 C SR M 。C M0 MO A MOS型 R M 存 储 器 静 A
r 一3 5V) ( r . 。当 V c 5V 时 , R c为 在 4上得 到的分压
大 于 V , 输 出高 电平 。又因为 U4 出也为高 电平 , rU2 输 故
C 2 出为高 电位 , 片机此 时可 对 R E 输 单 AM 进行 存取 。当 电源掉 电时, c 开始 下降 , Vc 当满足如下条件 时 : R c/ ( 4 4・ c[R +R3/ R +R )≥V )( s 6] r
V, AM 进人 数据保 持 状态 ( 图 2中元件 参数 代 人上 R 按 式 , VC 降到 4 7V 时 , 输 出为低 电位) 当 C . U2 。若 V c c 继
单片机掉电数据保存
用法拉电容从容实现单片机掉电数据保存电路见下:这里首先用6V供电(如7806),为什么用6V不用5V是显而易见的.这里的二极管们一般都起两个作用,一是利用单向导电性保证向储能电容0.47F/5.5V单向冲电;二是起钳位作用,钳去0.6V,保证使大多数51系列的单片机都能在4.5V--5.5V之间的标称工作电压下工作.而4.5-5.5间这1V电压在0.47F电容的电荷流失时间就是我们将来在掉电报警后我们可以规划的预警回旋时间.两只47欧电阻也有两个作用:1:和47UF和0.01UF电容一起用于加强电源滤波.2.对单片机供电限流一般电子工程师都喜欢把单片机电源直接接7805上,这是个非常不好的习惯,为什么?7805可提供高达2A的供电电流,异常时足够把单片机芯片内部烧毁.有这个电阻47欧姆电阻挡作及时把芯片或者极性插反也不会烧单片机和三端稳压器,但这电阻也不能太大,上限不要超过220欧,否则对单片机内部编程时,会编程失败(其实是电源不足).3.对0.47F/5.5V储能电容,串入的这只47欧电阻消除"巨量法拉电容"的上电浪涌.实现冲电电流削峰大家算一算要充满0.47F电容到5.5V,即使用5.5A恒流对0.47F电容冲电,也需要0.47秒才能冲到5.5V,既然知道了这个问题,大家就清楚:1.如果没有47欧姆电阻限流,上电瞬间三端稳压器必然因强大过电流而进入自保.2.长达0.47秒(如果真有5.5A恒流充电的话)缓慢上电,如此缓慢的上电速率,将使得以微分(RC电路)为复位电路的51单片机因为上电太慢无法实现上电复位.(其实要充满0.47UF电容常常需要几分种).3.正因为上电时间太慢,将无法和今天大多数主流型以在线写入(ISP)类单片机与写片上位计算机软件上预留的等待应答时间严重不匹配(一般都不大于500MS),从而造成应答失步,故总是提示"通信失败".知道这个道理你就不难理解这个电路最上面的二极管和电阻串联起来就是必须要有上电加速电路.这里还用了一只(内部空心不带蓝色的)肖特基二极管(1N5819)从法拉电容向单片机VCC放电,还同时阻断法拉电容对上电加速电路的旁路作用,用肖特基二极管是基于其在小电流下导通电压只有0.2V左右考虑的,目的是尽量减少法拉电容在掉电时的电压损失.多留掉点维持时间.三极管9014和钳制位二极管分压电阻垫位电阻(470欧姆)等构成基极上发射极双端输入比较器,实现掉电检测和发出最高优先级的掉电中断,这部分电路相当于半只比较器LM393,但电路更简单耗电更省(掉电时耗电小于0.15MA).47K电阻和470欧姆二极管1N4148一道构成嵌位电路,保证基极电位大约在0.65V左右 (可这样计算0.6(二极管导通电压)+5*0.47/47),这样如果9014发射极电压为0(此时就是外部掉电),三极管9014正好导通,而且因为51单片机P3.2高电平为弱上拉(大约50UA),此时9014一定是导通且弱电流饱和的,这样就向单片机内部发出最高硬件优先级的INX0掉电中断.而在平时正常供电时,因发射极上也大约有6*0.22/2.2=0.6V电压上顶,不难发现三极管9014一定处于截止状态,而使P3.2维持高电平的.下面还有两个重要软硬件要点和建议:1.硬件要点:凡是驱动单片机外部口线等的以输出高电平驱动外部设备,其电源不能和电片机的供电电压VCC去争抢(例如上拉电阻供电不取自单片机VCC).而应直接接在电源前方,图中4.7K电阻和口线PX.Y就是一个典型示例,接其它口线PX.Y'和负载也雷同.这里与上拉4.7K电阻相串联二极管也有两个作用:1.钳去0.6V电压以便与单片机工作电压相匹配,防止口线向单片机内部反推电.造成单片机口线功能紊乱.2.利用二极管单向供电特性,防止掉电后单片机通过口线向电源和外部设备反供电.上面的硬件设计,在与软件结合起来(见下面叙述)就可以保证在掉电期间,不会因法拉电容上的积累电荷为已经掉电的外部电路无谓供电和向电源反供电造成电容能量泄放缩短掉电维持时间.2.软件要点:首先INX0在硬件上(设计)是处于最高优先级的,这里还必须要在软件保证最高级别的优先.从而确保掉电时外部中断0能打断其他任何进程,最高优先地被检测和执行.其次在INX0的中断程序入口,还要用:MOV P1,#00HMOV P2,#00HMOV P3,#00HMOV P0,#00HSJMP 掉电保存来阻断法拉电容的电荷通过单片机口线外泄和随后跳转掉电写入子程序模块.(见硬件要点)有了上面的预备和细节处理,下面我们信心百倍地一道来计算0.47UF的电容从5.5V跌落到4.5V(甚至可以下到3.6V)所能维持的单片机掉电工作时间.这里设单片机工作电流为20MA(外设驱动电流已经被屏蔽)不难算出:T=1V*0.47*1000(1000是因为工作电流为豪安)/20=23.5秒!!!!!天!这个对单片机而言相当于从原始社会到共产主义社会的历史慢长.休说是写内部FLASH ROM,就是从新写片子本身都能写5。
单片机掉电保护总结完整版
单片机掉电保护总结Document serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】单片机应用系统断电时的数据保护方法在测量、控制等领域的应用中,常要求单片机内部和外部RAM中的数据在电源掉电时不丢失,重新加电时,RAM中的数据能够保存完好,这就要求对单片机系统加接掉电保护电路。
掉电保护通常可采用以下三种方法:一是加接不间断电源,让整个系统在掉电时继续工作,二是采用备份电源,掉电后保护系统中全部或部分数据存储单元的内容;三是采用EEPROM来保存数据。
由于第一种方法体积大、成本高,对单片机系统来说,不宜采用。
第二种方法是根据实际需要,掉电时保存一些必要的数据,使系统在电源恢复后,能够继续执行程序,因而经济实用,故大量采用[1]。
EEPROM既具有ROM掉电不丢失数据的特点,又有RAM随机读写的特点。
但由于其读写速度与读写次数的限制,使得EEPROM 不能完全代替RAM。
下面将介绍最常用的一些掉电保护的处理方法,希望能对相关设计人员在实际工作中有所帮助。
1简单的RAM数据掉电保护电路在具有掉电保护功能的单片机系统中,一般采用CMOS单片机和CMOSRAM。
CMOS 型RAM存储器静态电源小,在正常工作状态下一般由电源向片外RAM供电,而在断电状态下由小型蓄电池向片外RAM供电,以保存有用数据,采用这种方法保存数据,时间一般在3-5个月[2]。
然而,系统在上电及断电过程中,总线状态的不确定性往往导致RAM内某些数据的变化,即数据受到冲失。
因此对于断电保护数据用的RAM存储器,除了配置供电切换电路外,还要采取数据防冲失措施,当电源突然断电时,电压下降有个过程,CPU在此过程中会失控,可能会误发出写信而冲失RAM中的数据,仅有电池是不能有效完成数据保护的,还需要对片选信号加以控制,保证整个切换过程中CS引脚的信号一直保持接近VCC。
通常,采用在RAM的CS和VCC引脚之间接一个电阻来实现COMSRAM的电源切换,然而,如果在掉电时,译码器的输出出现低电平,就可能出现问题,图1给出一种简单的电路设计,它能够避免上述问题的产生。
51单片机空闲和掉电模式应用
51单片机空闲和掉电模式应用我们知道单片机内部有一个电源管理寄存器PCON,这个寄存器的最低两位,IDL和PD这两位分别用来设定是否使单片机进入空闲模式和掉电模式。
1. 空闲模式当单片机进入空闲模式时,除CPU处于休眠状态外,其余硬件全部处于活动状态,芯片中程序未涉及到的数据存储器和特殊功能寄存器中的数据在空闲模式期间都将保持原值。
但假若定时器正在运行,那么计数器寄存器中的值还将会增加。
单片机在空闲模式下可由任一个中断或硬件复位唤醒,需要注意的是,使用中断唤醒单片机时,程序从原来停止处继续运行,当使用硬件复位唤醒单片机时,程序将从头开始执行。
让单片机进入空闲模式的目的通常是为了降低系统的功耗,举个很简单的例子,大家都用过数字万用表,在正常使用的时候表内部的单片机处于正常工作模式,当不用时,又忘记了关掉万用表的电源,大多数表在等待数分钟后,若没有人为操作,它便会自动将液晶显示关闭,以降低系统功耗,通常类似这种功能的实现就是使用了单片机的空闲模式或是掉电模式。
以STC89系列单片机为例,当单片机正常工作时的功耗通常为4mA~7mA,进入空闲模式时其功耗降至2mA,当进入掉电模式时功耗可降至0.1μA以下。
2. 休眠模式当单片机进入掉电模式时,外部晶振停振、CPU、定时器、串行口全部停止工作,只有外部中断继续工作。
使单片机进入休眠模式的指令将成为休眠前单片机执行的最后一条指令,进入休眠模式后,芯片中程序未涉及到的数据存储器和特殊功能寄存器中的数据都将保持原值。
可由外部中断低电平触发或由下降沿触发中断或者硬件复位模式换醒单片机,需要注意的是,使用中断唤醒单片机时,程序从原来停止处继续运行,当使用硬件复位唤醒单片机时,程序将从头开始执行。
【例】:开启两个外部中断,设置低电平触发中断,用定时器计数并且显示在数码管的前两位,当计到5时,使单片机进入空闲(休眠)模式,同时关闭定时器,当单片机响应外部中断后,从空闲(休眠)模式返回,同时开启定时器。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机应用系统断电时的数据保护方法在测量、控制等领域的应用中,常要求单片机内部和外部RAM中的数据在电源掉电时不丢失,重新加电时,RAM中的数据能够保存完好,这就要求对单片机系统加接掉电保护电路。
掉电保护通常可采用以下三种方法:一是加接不间断电源,让整个系统在掉电时继续工作,二是采用备份电源,掉电后保护系统中全部或部分数据存储单元的内容;三是采用EEPROM来保存数据。
由于第一种方法体积大、成本高,对单片机系统来说,不宜采用。
第二种方法是根据实际需要,掉电时保存一些必要的数据,使系统在电源恢复后,能够继续执行程序,因而经济实用,故大量采用[1]。
EEPROM既具有ROM掉电不丢失数据的特点,又有RAM随机读写的特点。
但由于其读写速度与读写次数的限制,使得EEPROM 不能完全代替RAM。
下面将介绍最常用的一些掉电保护的处理方法,希望能对相关设计人员在实际工作中有所帮助。
?1简单的RAM数据掉电保护电路在具有掉电保护功能的单片机系统中,一般采用CMOS单片机和CMOSRAM。
CMOS型RAM存储器静态电源小,在正常工作状态下一般由电源向片外RAM供电,而在断电状态下由小型蓄电池向片外RAM供电,以保存有用数据,采用这种方法保存数据,时间一般在3-5个月[2]。
然而,系统在上电及断电过程中,总线状态的不确定性往往导致RAM内某些数据的变化,即数据受到冲失。
因此对于断电保护数据用的RAM存储器,除了配置供电切换电路外,还要采取数据防冲失措施,当电源突然断电时,电压下降有个过程,CPU在此过程中会失控,可能会误发出写信而冲失RAM中的数据,仅有电池是不能有效完成数据保护的,还需要对片选信号加以控制,保证整个切换过程中CS引脚的信号一直保持接近VCC。
通常,采用在RAM的CS和VCC引脚之间接一个电阻来实现COMSRAM的电源切换,然而,如果在掉电时,译码器的输出出现低电平,就可能出现问题,图1给出一种简单的电路设计,它能够避免上述问题的产生。
?图1中,4060开关电路起到对CS控制的作用。
当电压小于等于时就使开关断开,CS线上拉至"1",这样,RAM中的数据就不会冲失;当电压大于时,4060开关接通,使RAM能正常进行读写。
?2可靠的RAM掉电保护电路上述的电路虽然简单,但有时可能起不到RAM掉电保护的作用,原因是在电源掉电和重新加电的过程中,电源电压跃变的干扰可能使RAM瞬间处于读写状态,使原来RAM中的数据遭到破坏,因此,在掉电刚刚开始以及重新加电直到电源电压保持稳定下来之前,R AM应处于数据保持状态,6264RAM、5101RAM等RAM芯片上都有一个CE2引脚,在一般情况下需将此引脚拉高,当把该引脚拉至小于或等于时,RAM就进入数据保持状态。
实用的静态RAM掉电保护电路如图2所示,图2中U1、U2为电压比较器,稳压管D3提供一个基准电压Vr(Vr=)。
当Vcc为5V时,在R4上得到的分压大于Vr,U2输出高电平,又因为U4输出也为高电平,故CE2输出为高电位,单片机此时可对RAM进行存取,当电源掉电时,Vcc开始下降,当满足如下条件时:R4×Vcc/[(R4+R3)/(R5+R6)]≥Vr?U2输出低电平,通过U5和U6使CE2输出小于等于,RAM进入数据保持状态(按图2中元件参数代入上式,当Vcc降到时,U2输出为低电位)。
若Vcc继续下降使U3翻转,再通过D4、U4和U6进一步保证CE2为低电平。
此外,当Vcc下降到小于E时,D2截止,D 1导通,这时E作为RAM的备份电源,当单片机重新加电时,Vcc由0跃变到5V时,U2的输出端会出现瞬间的干扰脉冲,由于U3和U4间电路的积分延迟(约),CE2并不立即升到高电平,因而阻止了U2的干扰脉冲,当延时结束时,电源电压已稳定在5V,此后C E2升高,单片机便可对RAM进行存取。
图2中U3和U6为一块四施秘特(CD4093),该电路直接由E供电,这样才能保证掉电后使CE2≤,并在重新加电时CE2不受电源电压跃变的干扰,比较器U1和U2为电源供电,Vcc为后备电源U1的电压监视电路,当后备电池快用完时(小于),发光管会发出亮光,表明要换上新电池,备份电源可用3节5号干电池,也可以采用锂电池或镍电池。
?3利用TL7705对现场数据进行保护单片机构成的应用系统在突然断电时,往往使片内RAM数据遭到破坏,下面介绍一种利用TL7705构成的电源监控电路,使单片机系统在掉电时自动保护现场数据。
?TL7705的工作原理TL7705是电源监控用集成电路,采用8脚双列直插式封装,其内部结构图3所示。
图3中,基准电压发生器具有较高的稳定性,可由1脚输出基准电压,为了吸收电源的同脉冲干扰,通常在1脚上接一个μF的滤波电容来提高其抗干扰能力,被监控的电源电压由SENSE端7脚引入,经过R1和R2分压后送入比较器CMP1,与基准电压进行比较,当其值小于基准电压时,T1导通,定时电容CT通过T1放电,使CMP2比较器翻转,T2和T3导通,输出脚RESET为高电平,SESET反为低电平,当送入CMP1比较器的电压高于基准电压时,T1截止100μA恒流源给CT充电,当CT上的电压高于时,CMP2比较器翻转,T 2和T3截止,RESET和RESET反输出关断。
??TL7705与80C51单片机的接法在某些单片机应用系统中需要在系统掉电时记忆当前现场状态,以使电源恢复后能继续从断电处运行,图4是以80C51单片机为例采用其空闲方式或掉电方式,在备用电池支持下实现掉电后的数据保护。
??图4中,R1、C1和74LSO4构成单片机的上电自动复位和手动按钮复位电路,备用电池P1及D1、D2实现掉电时备用电池的切换。
电源正常时D1不导通,+5V直接给单片机供电,并为电池P1充电,为了减小电池耗电,备用电池只给单片机供电,保护片内RAM中的数据,电源掉电后,其他外围电路的工作电压仅靠电源电容维持很短的时间,电位器RW用来调节检测电压,范围为-,当掉电时,外围电路的电压下降到门限设定电压时,可将片外RAM中需要保护的数据写入片内RAM中,并使单片机进入掉电工作方式以完成数据保护,为了保证单片机有足够的处理时间,取检测电压为,当电源电压降至时,TL7705由RESET反向单片机发出中断请求信号(INTO反)。
单片机运行到一个可断断点后,相应中断,在中断服务程序中保护现场数据,使单片机进入掉电工作状态。
?4采用软件冗余措施保证数据的准确性最常用的一种方法是采用软件冗余措施,即将欲保护的数据写入RAM中的不同区域,如0000H-00FFH、0100H-01FFH和0200H-02FFH这三个区域存储同样一组数据,当使用这些数据前,先对各组进行检查,对于正确的数据方可应用,同时将错误的数据进行修正,在上电与断电过程中,总线不确写性是随机的,不可将所有数据完全冲失。
采用硬件对数据进行断电保护,同时在软件上采用冗余的措施是最常用的数据保护方法,在断电突然发生时可保证数据的准确无误。
网路文章:我想在掉电时保存数据(3个字节)到EEPROM中,用BOD掉电检测,不知怎样使用。
望高手指点:1。
在BOOT区设置好BODEN,BODLEVEL,后软件还要怎样设置2。
掉电中断是否是产生复位我的写EEPROM程序应该放在什么地方他和其他复位怎样区别3。
设置了BOOT区后,硬件上是否要加电源到一个管脚比较后才产生中断===================================================================================掉电检测BOD的误解AVR自带的BOD(Brown-out Detection)电路,作用是在电压过低(低于设定值)时产生复位信号,防止CPU意外动作. 对EEPROM的保护作用是当电压过低时保持RESET信号为低,防止CPU意外动作,错误修改了EEPROM的内容而我们所理解的掉电检测功能是指具有预测功能的可以进行软件处理的功能。
例如,用户想在电源掉电时把SRAM数据转存到EEPROM,可行的方法是外接一个在翻转的电压比较器(VCC=,BOD=,输出接到外部中断引脚(或其他中断)一但电压低于,马上触发中断,在中断服务程序中把数据写到EEPROM中保护起来注意: 写一个字节的EEPROM时间长达8mS,所以不能写入太多数据,电源滤波电容也要选大一些============================================================================ ========将AVR的BOD设为,从到这段时间写EEPROM。
AVR的供电采用14楼方案,掉电检测使用IMP809。
软件编写思路请参考我的《M128》书是第5章,或10月出版的书的第7章。
参考电路如下:在图中,外部9V电源通过7805稳压到5V,作为系统电源使用。
而AVR的工作电源则是单独提供的,由5v系统电源通过低压差肖特基二极管1N5817后得到。
IN5817的正向压降为,因此,AVR的工作电压为。
电源监控芯片IMP809-L的监控电压为,当系统电源的电压低于时,在R脚上产生由高电平到低电平的变化,使AVR进入INT0中断。
该电路的工作原理为:首先通过配置AVR的熔丝位,设置BOD掉电检测电压门限为,并允许BOD检测。
因此,当AVR的Vcc电压掉到以下时,AVR就停止工作(掉电检测功能是AVR片内的功能之一,见第二章的 AVR的复位源和复位方式)。
电源监控芯片IMP809-L 检测电压门限为,用于检测系统电源的电压。
当系统电源大于时,IMP809-L的R端输出高电平,整个系统正常工作。
当系统电源的电压跌到以下时,IMP809-L的R脚输出低电平,作为AVR外部中断INT0的申请。
INT0设计为掉电处理中断,其主要任务是备份系统运行的重要数据到EEPROM中。
在提供AVR工作的电源系统中,大容量的电解电容C5作为储能电容,一旦系统电源电压下降,二极管1N5817截止,此时AVR可以靠C5提供的电储可以继续工作一段时间。
C5容量应足够大,在系统电源掉电过程中,IMP809-L的R端输出低电平(下降到)时,要能够保证维持AVR的工作电压Vcc从降到的时间超过300ms,使AVR有时间做紧急处理和备份数据。
AVR写EEPROM大约需要50-100mA的电流,所以电容C5的值应该在1000u~4700u,需要保存的数据越多,C5的容量应该越大。
INT0是AVR优先级最高的中断,采用外部电平变化的下降沿触发方式。
一旦IMP809-L 的R脚电平由正常的高电平变为低电平时,将触发INT0中断,进入INT0掉电中断服务程序。