看门狗的概念与应用以及如何用软件实现系统的复位

发布者:ularof不加糖最新更新时间:2017-01-09 来源: eefocus关键字:看门狗  复位 手机看文章 扫描二维码
随时随地手机看文章

在单片机构成的系统中,由于单片机的工作有可能受到来自外来电磁场的干扰而出现程序跑飞的现象,从而陷入死循环,出于对单片机运行状态进行实时性的监控的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称看门狗(watch dog)


看门狗的工作过程如下:


看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过单片机的程序控制,使他定时的往看门狗芯片的这个引脚送入高电平(或者是低电平)这一个程序语句是分散在单片机的其他控制语句中的,一旦单片机由于干扰造成程序跑飞而陷入死循环时,给看门狗引脚送电平的程序便不能被执行到,这时,看门狗电路就会由于得不到单片机送来的信号,便对他送入一个复位信号,使单片机从程序存储器的起始位置重新开始执行程序,这样便实现了单片机的自动复位


示例代码:


用软件观察看门狗的喂狗现象:如果在while循环中屏蔽这一局,那么在看门狗的作用下,程序将会不断

 //不断的复位,这是看到的现象是在看门狗的作用下,led灯不断的闪烁   



#include

#define uchar unsigned char

#define uint unsigned int


sfr WDT_CONTR = 0xe1;//51系列的单片机的看门狗的位置

sbit led1 = P1^0;


void delayms(uint x)

{

    uint i,j;

    for(i = x;i>0;i--)

        for(j = 110;j>0;j--);

}


main()

{

    WDT_CONTR = 0x35;//0011 0101表示喂狗,时间是2.095m要喂一次

    led1 = 0;

    delayms(500);

    led1 = 1;

    

    while(1)

    {

        delayms(1000);

    //    WDT_CONTR = 0x35;如果在while循环中屏蔽这一局,那么在看门狗的作用下,程序将会不断

    //不断的复位,这是看到的现象是在看门狗的作用下,led灯不断的闪烁    

    }

}


看门狗的寄存器为WDT_CONTR,字节地址是e1,不能位寻址,实现喂狗功能一般是在程序中插入


sfr WDT_CONTR = 0xe1 ;


WDT_CONTR= 0x35;//0011 0000这里可以查看专门的书籍看寄存器的相关位的设置


 


用软件实现单片机的系统复位:


STC单片机增加了响应的硬件功能,内部的ISP/IAP控制寄存器ISP_CONTR便可以实现此功能,用户只需要简单的控制ISP_CONTR特殊功能寄存器中的SWBS和SWRST两位便可以实现系统的复位


示例代码:


#include

#define uint unsigned int

#define uchar unsigned char 

sfr  ISP_CONTR = 0xe7;


sbit dula = P2^6;

sbit wela = P2^7;

uchar num ,gw,sw,aa;

uchar code table[]={0x3f,0x06,0x5b,0x4f,

                    0x66,0x6d,0x7d,0x07,

                    0x7f,0x6f,0x77,0x7c,

                    0x39,0x5e,0x79,0x71};


void init()//初始化函数

{

    TMOD = 0x01;

    TH0 = (65535-50000)/256;

    TL0 = (65535-50000)%256;


    EA = 1;

    ET0 = 1;

    TR0 =1;


}


void delayms(uint x)//延时函数

{

    uint i,j;

    for(i = x;i>0;i--)

        for(j=110;j>0;j--);

}


void display(uchar gw,uchar sw)//显示函数

{

    dula = 1;

    P0 = table[sw];

    dula = 0;


    P0 = 0xff;

    wela = 1;

    P0 = 0xfe;

    wela = 0;

    delayms(5);


    P0 = 0x0;//消影

    dula = 1;

    P0 = table[gw];

    dula = 0;


    P0 = 0xff;

    wela = 1;

    P0 = 0xfd;

    wela = 0;

    delayms(5);


}


void main()

{

    init();

    while(1)

    {

        if(aa ==20)

        {

            aa =0;

            num++;

            if(num == 99)

                num =0;

            if(num ==10)

            {

                ISP_CONTR = 0x20;//0010 0000,操控寄存器实现软件复位

            }

            gw = num%10;

            sw = num/10;

           

        }

        display(gw,sw);

    }

}


void timer0()interrupt 1

{

    TH0 = (65536-50000)/256;

    TL0 = (65536-50000)%256;

    aa ++;


}


实验现象,数码管以秒速递增,递增到10后,系统复位,之后重新开始从0计时


说一下STC单片机的寄存器ISP/IAP寄存器,这个寄存器的地址是E7H,不能位寻址,在这里只需要将寄存器的第五个bit设置为1,便可以实现软件的复位


因此代码通常是


sfr ISP_CONTR = 0xe7;


ISP_CONTR = 0x20;//0010 0000


关键字:看门狗  复位 引用地址:看门狗的概念与应用以及如何用软件实现系统的复位

上一篇:单片机的动手实践篇--51单片机玩转12864
下一篇:51多文件系统的书写

推荐阅读最新更新时间:2024-03-16 15:29

STM32软件复位的实现方法
前些天写程序的时候,需要做一个自动复位的功能,也就是当收到外部通讯设备复位指令时,主设备立刻执行复位操作。当时是想到的用看门狗实现。但是觉得似乎不太妥当,因为看门狗的复位是需要一定的时间。而在这段时间内系统还是处于正常运行当中,而且所有中断都会正常响应。这恰好与要实现的功能南辕北辙。需求是当收到复位指令时,系统停止执行后面的所有操作,包含中断响应。所以看门狗无法实现。 我用的是STM32F103芯片,了解这颗芯片能用来复位的只有5种,外部复位、独立/窗口看门狗、软件复位功耗管理。看来我能用的也就只有软件复位了。但是我查了所有STM32F103芯片相关的资料,还是没有找到具体的实现方法,最多是提到过这种复位寄存器SYSRESET
[单片机]
单片机最小系统解析(电源、晶振和复位电路)
电源 我们在学习过程中,很多指标都是直接用的概念指标,比如我们说 +5 V 代表1,GND 代表0等等。但在实际电路中的电压值并不是完全精准的,那这些指标允许范围是什么呢?随着我们所学的内容不断增多,大家要慢慢培养一种阅读数据手册的能力。 比如,我们要使用 STC89C52RC 单片机的时候,找到它的数据手册第11页,看第二项——工作电压:5.5 V~3.4 V(5 V 单片机),这个地方就说明这个单片机正常的工作电压是个范围值,只要电源 VCC 在 5.5 V~3.4 V 之间都可以正常工作,电压超过 5.5 V 是绝对不允许的,会烧坏单片机,电压如果低于 3.4 V,单片机不会损坏,但是也不能正常工作。而在这个范围内,最典型、
[单片机]
单片机最小系统解析(电源、晶振和<font color='red'>复位</font>电路)
51单片机串口T1加看门狗程序
数码管部分的电路图 程序: #include reg52.h #define UCHAR unsigned char #define UINT unsigned int sfr WDT_CONTR = 0xe1; UCHAR table = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; UCHAR timer; UCHAR conter; void initserial(void) { timer='0'; conter=0; TMOD=0X20; SCON=0X50; TL
[单片机]
51单片机串口T1加<font color='red'>看门狗</font>程序
stm32基础之独立看门狗
stm32基本都内置两种看门狗(另外还有外置的看门狗芯片),窗口看门狗和独立看门狗,两种看门狗的使用方法和应用场景各不相同,今天主要讲讲最常用的独立看门狗(工作这么多年,没见谁用过窗口看门狗,这种估计在时序严格的场合会用上)。 所谓独立(Independent watchdog),就是该看门狗有独立的时钟源供看门狗使用,VIP专属。这样即使程序跑飞,或者主时钟挂掉,照样运行。但是精度嘛,你懂的(VIP用户一般比较飘)。 所谓看门狗,外形虽然不像(一堆电子电路,肯定不像),但行为真的狗,还是一条疯狗。为啥这么说呢? 这只狗一定要在规定以内的时间(这个时间自己设置)喂食,超出一点都不行,否则就咬人(复位整个程序,让你的人生重新
[单片机]
stm32基础之独立<font color='red'>看门狗</font>
TI 推出内含 2ppm/C 高精度参考电压源的超低干扰16 位DAC
2007 年 4 月 6日, 北京讯 日前,德州仪器 (TI) 宣布推出内含高精度参考电压源的全新高精度数模转换器 (DAC) 系列中的首款产品 DAC8560。该器件是一种 16 位单通道 DAC,具备超低干扰 (0.15nVs)、超低功耗(2.7V 下为 1.5mW)以及温度漂移为 2ppm/C 与初始精度为 +/-0.004% 的内部参考。高精度 DAC 与出色的参考电压源的完美结合使 DAC8560 成为了一种集合灵活性与易用性为一体的解决方案,理想适用于便携式仪表、光网络、工业过程控制、机器与运动控制以及数据采集系统中的闭环控制应用。(更多详情,敬请访问: http://focus.ti.com.cn/cn/docs/p
[新品]
C51单片机看门狗电路
采用89C51单片机和X25045组成的看门狗电路,X25045硬件连接图如图1所示。X25045芯片内包含有一个看门狗定时器,可通过软件预置系统的监控时间。在看门狗定时器预置的时间内若没有总线活动,则X25045将从RESET输出一个高电平信号,经过微分电路C2、R3输出一个正脉冲,使CPU复位。图1电路中,CPU的复位信号共有3个:上电复位(C1、R2),人工复位(S、R1、R2)和Watchdog复位(C2、R3),通过或门综合后加到RESET端。C2、R3的时间常数不必太大,有数百微秒即可,因为这时CPU的振荡器已经在工作。 看门狗定时器的预置时间是通过X25045的状态寄存器的相应位来设定的。如表1所示,X25
[单片机]
C51单片机<font color='red'>看门狗</font>电路
STM32芯片异常复位的原因有哪些
问题描述 某STM32用户反馈,当使用STM32L4芯片的时候,程序运行一段时间后,会忽然复位。复位后程序继续运行,但是还会继续复位,原因不详。 问题解析 初步确定复位的原因,是硬件复位,如外部NRST被拉低,还是软件复位,包括软件直接调用复位,或者看门狗复位,还是低功耗模式如standby模式被唤醒时产生中断。 查看复位状态寄存器了解复位大方向,然后做进一步得拆解分析。 目前客户项目的复位原因是因为看门狗复位,即客户使用了IWDG,但由于某种原因没有及时喂狗,导致IWDG超时复位。初步怀疑由于客户软件的问题,程序跑飞,进入异常处理。 因为客户的异常处理函数中并没有做任何动作,导致独立看门狗IWDG复位。基于此,我
[单片机]
STM32芯片异常<font color='red'>复位</font>的原因有哪些
基于LPC2132的体质测试仪设计
   引言 随着我国体质测试事业的发展,对体质健康测试技术的要求也越来越高,目前,国内普遍使用的都是机械式的测试仪,它存在不可避免的缺陷,如测量不准确,操作不方便,使用年限短等,为适应学校体育教育的蓬勃发展,改进传统机械式测试仪缺点,笔者利用现在成熟的电子技术,运用ARM强大的控制能力,开发出这套体质健康测试仪。 测试仪由测试仪主机或外设组成,主机和从机之间采用RS485主从通信方式。测试仪主要由身高体重、座位体前驱、肺活量、台阶心率、仰卧起坐、立定跳远的和握力共7个部分组成,从机或外设主要完成数据采集、处理、输出及与测试仪主机通信联络的功能,测试仪主机将下位机所有信息进行综合处理,完成显示、设定与修改参数值和存储测
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved