欢迎来到天天文库
浏览记录
ID:38669037
大小:863.59 KB
页数:38页
时间:2019-06-17
《STC系列单片机看门狗》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、单片机的看门狗-S51及STC89系列为什么要看门狗?你家的看门狗是做什么的?“看门狗定时器”是这样一种东西,从功能上说它可以让微控制器在意外状况下(比如软件陷入死循环或跑飞)重新回复到系统上电状态,以保证系统出问题的时候重启一次。就跟我们现在用电脑一样,死机了你就按一下reset键重启一次电脑,看门狗就是负责干这个事儿的。它是52单片机增加的一个功能,以前Intel8031、……、AT89C51时代单片机片内都没有“看门狗”功能,需要我们外扩看门狗芯片,比如X5045。“看门狗”就是一个计数器,由于位数有限计数器能够装的数值是有限的(比如8位的最多装256
2、个数、16位的最多装65536个数),从开启“看门狗”那刻起,它就开始不停的数机器周期,数一个机器周期就计数器加1,加到计数器盛不下了(术语叫溢出)就就产生一个复位信号,重启系统。注解:这里顺便说一下,一般教材上叫“看门狗定时器”,其实定时器原理还是计数器,只是计的是时钟周期,所以我为了初学者好理解叫统一叫“计数器”,这里阐明一下。看门狗的看门原理我们在设计程序时,先根据看门狗计数器的位数和系统的时钟周期算一下计满数需要的时间,就是说在这个时间内“看门狗”计数器是不会装满的,然后在这个时间内告诉它重新开始计数,就是把计数器清零,这个过程叫“喂狗”,这样隔一段时
3、间喂一次狗,只要程序正常运行他就永远计不满,一旦出现死循环之类的故障,没有及时来清零计数器,就会导致装满了溢出,他就重启系统,这就是举个例子说:8051单片机选用12MHz晶振,一个时钟周期为1us,如果“看门狗计数器”是16位的,最大计数65536个,那么从0开始计到65535需要约65ms,所以我们可以在程序的50ms左右清零一次计数器(“喂狗”),让他重新从0开始计,再过50ms,再清,……,这样下去只要程序正常运行,计数器永远不会计满,也就永远不会被“看门狗”复位。当然这个喂狗的时间是大家自己选的,只要不超过65ms,你选多少都可以,一般不要喂得太勤,这
4、样单片机运行时间浪费了,比如你1ms喂一次就太勤了,也不要说那我65ms喂一次,这样太边缘,这样抗干扰能力就下降了,最好是留一定的余量,这个就是设计者自己掌握了,我一般是让计到90%左右就清一次。每种单片机的“看门狗”实现方法不尽相同,但是原理都一样,而且“看门狗”都是启动了之后就不能被关闭,只能系统复位(重新断电在上电)才能关闭。设置看门狗的一般步骤如下:1.设置“看门狗”相关寄存器,启动“看门狗”;2.隔一段时间清零一次,“喂狗”;3.如果程序正常,一直运行;如果程序出错,没有按时“喂狗”,“看门狗”就在溢出的时候复位系统。S51的看门狗AT89S52单片
5、机看门狗定时器是14位的,最大计数214=16384个数,每计16384个时钟周期就溢出一次。也就是说如果使用12M晶振的话,至少应该在16.384ms内喂一次狗。STC89STC89C5X系列单片机由于采用了“预分频技术”,它的溢出时间是=(N*Prescale*32768)/晶振频率(不要问我为什么,他们就是这么设计的,我们就这么用就行)。其中N是单片机的时钟周期,STC89C5X系列单片机提供6时钟周期和12时钟周期两种时钟周期,可以在烧写程序时修改;Prescale是预分频数,通过设置【看门狗控制寄存器】可以设置为2、4、8、16、32、64、128
6、、256;怎么设置演示程序中有介绍;晶振频率就是系统选用的晶振。所以如果同样选择12MHz晶振,使用传统的12时钟周期,它最小的溢出时间是(12*2*32768)/(12*106)=65.536ms,最大溢出时间是(12*256*32768)/(12*106)≈8.38s。如果选择256分频,也就是说只要在8.38秒之内喂一次狗就可以了。对于我们用户来说,看门狗的时间是越长越好,这样可以节省更多的单片机资源,尤其是对时间要求精准的系统,如果执行过程中我们不停地“喂狗”,那么是比较浪费时间的。所以STC89C5X系列单片机的看门狗更有优势一些。当然这个也是个人的
7、选择,如果对时间要求的不苛刻的话,勤喂几次狗也没关系。STC看门狗应用举例STC89C52最小单片机系统+两个指示灯串行口接口(用于下载程序和测试本次试验关于实验的注意事项:1.本次试验使用的是11.0592MHz晶振,设置WDT_CONTR=(00110100)B,32预分频,单片机使用12指令周期模式。计算看门狗溢出时间:[12*32*32768/(11059200)]≈1s。2.本次试验的硬件电路很简单,就是最小系统上增加两个LED灯,原理图见正文,用户可以很容易实现。***************************************
此文档下载收益归作者所有