SP第6章看门狗定时器模块
- 格式:ppt
- 大小:288.00 KB
- 文档页数:6
第21卷第2期 吉林大学学报(信息科学版) V o l121 N o12 2003年5月 JOU RNAL O F J I L I N UN I V ER S IT Y(I N FORM A T I ON SC IEN CE ED IT I ON) M ay2003文章编号:167125896(2003)022*******单片机应用系统中的看门狗技术α胡 屏1,柏 军2(11哈尔滨工业大学威海分校信息与控制工程系,山东威海 264209;21哈尔滨工业大学威海分校计算机科学与工程系,山东威海 264209)摘要:分析研究了单片机应用系统中软件看门狗、单 双时限和强制复位看门狗等几种常见的看门狗技术及具体的实现方法,从提高看门狗工作可靠性的角度,分析了各种看门狗方案的优缺点,给出了基本的硬件电路和软件控制策略,指出了在设计和应用过程中需注意的一些问题。
关键词:单片机;看门狗;抗干扰;X5045看门狗定时器中图分类号:T P39 文献标识码:A引 言随着单片机技术的发展和制造工艺的日益成熟,单片机的应用领域不断拓宽,但由于单片机自身的抗干扰能力较差,尤其是在一些条件比较恶劣,噪声大的场合,常会出现单片机因受外界干扰而导致死机的现象,造成系统不能正常工作。
设置看门狗是防止单片机死机、提高单片机系统抗干扰性的一种重要途径,笔者研究分析了几种较为实用的看门狗技术,供读者参考。
1 软件看门狗软件看门狗是利用单片机片内闲置的定时器 计数器单元作为看门狗,在单片机程序中适当地插入“喂狗”指令,当程序运行出现异常或进入死循环时,利用软件将程序计数器PC赋予初始值,强制性地使程序重新开始运行。
具体实现方法如下。
1)首先在初始化程序中设置好定时器 计数器的方式控制寄存器(TM OD)和定时时间的初值,并开中断。
2)根据定时器的定时时间,在主程序中按一定的间隔插入复位定时器的指令,即插入“喂狗”指令,两条“喂狗”指令间的时间间隔(可由系统时钟和指令周期计算出来)应小于定时时间,否则看门狗将发生误动作。
看门狗定时器看门狗在外围监控DSP中软件的运行以及硬件的操作,当CPU出现故障时,看门狗将执行系统复位。
如果软件进入了一个不正确的循环或者CPU出现暂时的混乱,看门狗定时器将出现溢出来使系统复位。
在大多数情况下,DSP短暂的混乱以及CPU不正确的操作都可以被看门狗所清除并重新进行设置。
由于看门狗稳定的性能,其增加了CPU的可靠性,以确保系统的完整。
在看门狗中这个外围设备中,所有的寄存器都是8位的,连接到16位CPU的低8位外围数据总线上。
240XA看门狗定时器和C240看门狗定时器唯一的区别就是其缺乏实时的中断能力。
(这句话我也不明白哦)。
看门狗定时器将通过对从CPU出来的CLKOUT进行分频而得到自己所需的时钟。
1.1看门狗定时器的特征看门狗模块包含如下特征:n8位的看门狗计数器通过计数溢出从而使系统复位n6位的独立运行计数器通过对看门狗计数器预定标来feed看门狗计数器(上句为字面意思,我的理解是:该6位的独立运行的计数器通过对WD CLK(看门狗工作时钟)进行分频从而使看门狗计数器得到不同频率的时钟。
独立运行的意思是该计数器不受其他器件的影响,只要启动系统,就开始工作)n看门狗复位键寄存器,当向该寄存器写下合适的组合值(在该DSP中,通过向该寄存器相继写55h和AAh值)时,该寄存器将使看门狗计数器清零,当向该寄存器写下不合适的组合值(除55h和AAh以外的值)时,该寄存器将使系统复位n看门狗核对位,当看门狗定时器出现错误情况时,通过看门狗核对位来复位系统n当系统复位时,将自动启动看门狗定时器n可对独立运行计数器输出的6路分频信号进行选择以下为看门狗定时器的功能框图+含义:向WDCR.5-3位(看门狗核对位)写除101以外的任何数将导致系统复位。
含义:分频后的值与WDCLK有关。
1.1看门狗定时器的操作1.1.1概述看门狗的操作由三个寄存器进行控制n看门狗计数寄存器(WDCNTR)——这个寄存器包含了看门狗计数器的值n看门狗键位寄存器(WDKEY)——当向该寄存器先写55h,然后写AAh时,该寄存器将WDCNTR清零n看门狗控制寄存器(WDCR)——该寄存器包含了用于看门狗配置的如下控制位²看门狗禁止位²看门狗标志位²看门狗核对位(3位)²看门狗分频选择位(3位)1.1.2看门狗定时器时钟看门狗定时器时钟(WDCLK)是一种低频率的时钟。
看门狗模块的工作原理一、引言作为一种常见的安防装置,看门狗模块在很多电子设备中发挥了重要作用。
然而,对于大多数人来说,看门狗模块的工作原理还比较陌生。
在本文中,我们将针对这一问题进行剖析。
二、看门狗模块的概述看门狗模块,也叫看门狗电路,是一种硬件设备,主要用于监控电子设备的运行状态。
当电子设备出现故障或运行超时等异常情况时,看门狗模块能够自动重启设备,避免设备长时间停机,增加设备的可靠性。
三、看门狗模块的原理看门狗模块主要由定时器、复位电路和控制电路三部分组成。
1. 定时器定时器是看门狗模块的核心部分,它负责记录电子设备的运行时间,同时也是看门狗模块触发重启的关键。
在设备正常运行期间,定时器会进行不断计时,一旦计时达到预设时间,定时器就会将对应信号发送给复位电路。
2. 复位电路复位电路是看门狗模块的重要组成部分,主要负责控制电子设备的重启和复位功能。
当复位电路接收到定时器的信号时,它会对电子设备进行重启,并对设备进行复位操作,以确保设备的正常运行。
3. 控制电路控制电路是看门狗模块的最外层保护壳,它能够协同定时器和复位电路实现对电子设备的监控和保护。
四、看门狗模块的应用场景看门狗模块的应用场景十分广泛,涉及到各个行业。
例如:通信、工业控制、医疗设备、服务器、嵌入式系统等。
在这些领域中,看门狗模块可以有效保障设备的稳定运行,同时也能够提高设备的效率和使用寿命。
五、结语总的来说,看门狗模块的工作原理相对简单,但对于电子设备的可靠性和稳定性来说却不可或缺。
在未来的日子里,随着科技水平的不断提高,看门狗模块也将会有更广泛的应用。
我们相信,通过不断探索和研究,看门狗模块将会更好的为社会发展和人类福祉做出贡献。
看门狗定时器的使用流程简介看门狗定时器是一种用于监控系统运行状态的硬件设备。
当系统出现故障或超时的情况下,看门狗定时器会自动重启系统,以确保系统的稳定运行。
本文将介绍看门狗定时器的使用流程,包括初始化、配置、启动和监控等步骤。
初始化初始化是使用看门狗定时器的第一步。
在使用之前,需要确保系统已经正确连接了看门狗定时器,并且加载了相应的驱动程序。
步骤1.打开终端或命令行界面。
2.使用以下命令初始化看门狗定时器:$ watchdog_init3.检查初始化结果,确保看门狗定时器成功初始化。
配置配置是使用看门狗定时器的关键步骤。
通过配置,可以设置看门狗定时器的超时时间和动作。
步骤1.打开终端或命令行界面。
2.使用以下命令配置看门狗定时器的超时时间:$ watchdog_set_timeout 5这里将超时时间设置为5秒,你可以根据需要进行调整。
3. 使用以下命令配置看门狗定时器的重启动作:$ watchdog_set_action restart这里将重启动作设置为自动重启。
启动启动是使用看门狗定时器的关键步骤。
通过启动,可以使看门狗定时器开始监测系统运行状态。
步骤1.打开终端或命令行界面。
2.使用以下命令启动看门狗定时器:$ watchdog_start3.检查启动结果,确保看门狗定时器成功启动。
监控监控是看门狗定时器的主要功能。
通过监控,可以实时检测系统的运行状态,并在系统超时或故障时进行相应的动作。
步骤1.让系统正常运行。
2.看门狗定时器会定时检测系统的运行状态。
3.如果系统在超时时间内未接收到看门狗定时器的喂狗信号,则看门狗定时器会触发动作,例如自动重启系统。
总结通过以上的流程,我们可以使用看门狗定时器来监控系统的运行状态。
首先,我们需要初始化看门狗定时器,并配置超时时间和重启动作。
然后,启动看门狗定时器,并让其监控系统的运行状态。
在系统发生故障或超时的情况下,看门狗定时器会自动触发相应的动作,以确保系统的稳定运行。
看门狗硬件模块原理看门狗硬件模块是一种常见的硬件保护机制,用于防止系统崩溃或锁死。
看门狗硬件模块的原理是在计算机系统中加入一个计时器,当系统正常运行时,定期重置计时器;当系统出现异常时,计时器未能被重置,计时器超时,看门狗硬件模块就会自动重启系统,从而恢复系统的正常工作。
看门狗硬件模块的工作原理基于计时器的工作方式。
计时器是一个硬件设备,可以在指定的时间内生成一个中断信号。
在看门狗硬件模块中,计时器被设置为一定的时间间隔,一旦计时器超时,看门狗硬件模块就会执行预定义的操作,如重启系统或执行其他指令。
看门狗硬件模块通常由以下几个部分组成:计时器、复位电路和控制电路。
计时器是看门狗硬件模块的核心部分,它用于计算时间并生成中断信号。
复位电路用于将系统复位并恢复到初始状态,以便重新开始工作。
控制电路用于控制看门狗硬件模块的运行状态,并与计算机系统进行通信。
看门狗硬件模块可以应用于各种计算机系统,包括嵌入式系统、桌面计算机和服务器等。
在嵌入式系统中,看门狗硬件模块可以用于监测系统是否正常运行,防止系统崩溃;在桌面计算机和服务器中,看门狗硬件模块可以用于监测操作系统和应用程序的运行状态,防止系统锁死或挂起。
看门狗硬件模块的应用非常广泛,但是使用不当也可能会带来一些问题。
例如,如果计时器设置的时间间隔太短,会导致系统频繁重启,影响系统的稳定性;如果计时器设置的时间间隔太长,会导致系统出现故障时无法及时恢复,影响系统的安全性。
因此,在使用看门狗硬件模块时,需要根据系统的实际情况进行合理的设置和调整。
看门狗硬件模块是一种非常重要的硬件保护机制,能够有效地防止系统崩溃和锁死,保障系统的稳定和安全。
在计算机系统中广泛应用,为用户提供了更加可靠和安全的计算环境。
学习之6---看门狗定时器(WDT)//PIC.H中定义了宏#define CLRWDT() asm("clrwdt")因此在PICC的c语言中可以直接使用CLRWDT()对WDT清0//若单片机WDT使能,在适当位置加入CLRWDT(),程序进入正常运行时,每隔一定时间均会执行CLRWDT()语句对WDT清0,芯片不会复位//如果程序陷入死循环,不会执行到CLRWDT()语句,则超出所设定的时间后,WDT溢出使芯片复位,从头(000H)开始执行,单片机恢复正常运行//PIC16F单片机,看门狗定时器的启用只能在芯片的烧写时确定,即无法用软件来开启或关闭WDT,但在PIC16f88X中可以。
//PIC16单片机的WDT基本溢出时间为18MS,由RC充放电时间确定,在-40~85度之间变化时,WDT基本溢出时间在7-33ms变化#include<pic.h>__CONFIG(0X3F3D);//开启WTDvoid DELAY(unsigned int);#define LED1 RB1main(void){TRISB=0B11111101;OPTION=0B11111011; //WDT的分频比为1:8,最大复位时间为18*8=144msif(TO==0)// 若写成T0,则编译出错。
{LED1=1; //看门狗定时器溢出,仿真时溢出TO不会清零}elseLED1=0;while(1){DELAY(100);//模拟一个运行100ms的子程序CLRWDT();DELAY(200);//模拟一个运行200ms的子程序,此时会产生溢出(200ms>144ms)CLRWDT();};}void DELAY(unsigned int n){unsigned int j;char k;for(j=0;j<n;j++)for(k=246;k>0;k--)NOP();}学习之7--EEPROM的读写EEPROM特点:掉电时保持不变,F877A的EEPROM参数是保证1 000 000次擦除,数据保存>40年PICC中定义了读/写EEPROM的宏EERPOM_WRITE(addr,value); EEPROM_READ(addr);//PICC中系统已经为我们定义了读/写EEPROM的宏//宏EEPROM_WRITE写入EEPROM,只是启动写入过程,写完要几MS,当读/写EEPROM 时,程序会自动检测是否还在写,若是,则等待//C程序编写不涉及EECON1,EECON2#include<pic.h>__CONFIG(0X3F39);__EEPROM_DATA(89,34,48,210,53,192,7,57);//初始化EEPROM,分别写入单元0~7main(void){char aa;aa=EEPROM_READ(3);//读EEPROM单元3的内容EEPROM_WRITE(9,0X9A);//将0X9A写入EERPOM的单元9aa=EEPROM_READ(9);//读EEPROM单元9的内容while(1);}。
利用单片机内部定时器实现软件看门狗利用单片机内部定时器实现软件看门狗勤镐工控(05/09/04)软件看门狗(WATCH DOG)也叫做程序运行监视系统。
当程序运行受到干扰,程序飞到一个临时构成的死循环中时,系统将完全瘫痪,软件陷阱也无能为力了,这时就需要人工复位或硬件复位;如果没有人工操作和硬件复位系统,我们采用软件看门狗技术同样也能使系统复位,恢复正常。
这种程序监视系统就好比主人家养了一条狗,主人总要定时喂狗,如果主人忘了喂狗(程序受到干扰,跑飞掉了),狗就会大叫起来,提醒主人(程序重新运行)。
软件看门狗的特性如下:1、本身独立工作,基本上不依赖CPU;2、CPU在一个固定的时间间隔内和系统打一次交道(喂一次狗),以表明系统目前工作正常。
3、当CPU陷入死循环后,能及时发觉并使系统复位。
当系统陷入死循环后,怎样才能从死循环中跳出来呢?只有比这个死循环更高级的中断程序才能夺走CPU的控制权。
为此,可以用一个定时器来做软件看门狗,因为定时器在运行时不占用CPU资源,它是独立工作的,所以,将它的溢出中断设定为最高优先级中断,系统的其它中断均设为比它低级的中断优先级。
然后根据看门狗的定时时间来设定定时器初值。
软件看门狗启动后,系统工作程序必须经常“喂它”,且每两次之间的间隔不得大于定时器的定时时间。
程序中只要设立一个设置定时器初值的子程序,喂它时只要调用这个子程序即可。
当程序陷入死循环后,定时器溢出,产生高优先级中断,从而跳出死循环。
我们还可以在定时器中断服务程序中放置一条LJMP ERR 指令,即可使程序转向出错处理程序;由出错程序来完成以后的工作,并用软件的方法使系统复位。
以下是一个用定时/计数器T0作软件看门狗的完整程序:ORG 0000HAJMP MAINORG 000BHLJMP ERR MAIN :MOV SP , #60HMOV PSW , #00HMOV SCON , #00HMOV TMOD , #01H ;设置T0为16位定时器SETB ET0 ;允许T0中断SETB PT0 ;设置T0中断为高级中断MOV TL0, #00H ;设定T0的定时初值,定时时间约为16ms(6M 晶振)MOV TH0, #0B0HSETB EA ;开中断SETB TR0 ;启动T0 LOOP:...... ;主程序开始LCALL WATCH DOG ;调用喂狗子程序......LJMP LOOP WATCHDOG:MOV TL0, #00H ;喂狗子程序MOV TH0, #0B0HSETB TR0RET ERR:POP ACC ;定时器中断POP ACC ;看门狗软件复位程序CLR APUSH ACCPUSH ACC RETI在程序中,由于执行了中断服务程序后,PC 的指针已经指向0000H ,从而实现了软件复位的目的。
看门狗定时器参考资料:S3C2410A 的看门狗定时器有两个功能:作为常规时钟,并且可以产生中断; 作为看门狗定时器使用,当时钟计数减为0(超时)时,它将产生一个128 个时钟周期(PCLK)的复位信号. 主要特性如下:通用的中断方式的16bit 定时器. 当计数器减到0(发生溢出) ,产生128 个PCLK 周期的复位信号. 下图为看门狗的电路示意图,看门狗时钟使用PCLK 作为他的时钟源,PCLK 通过预分频产生适合的看门狗时钟.看门狗模块包括一个预比例因子放大器,一个是四分频器,一个16bit 计数器.看门狗的时钟源来自PCLK,为了得到较宽范围的看门狗信号,PCLK 先被预分频,之后再经过分频器分频.预分频比例因子的分频值,都可以由看门狗控制器(WTCON)决定,预分频值的有效范围从0 到256-1.分频因子可以选择16,32,64 或者128. 看门狗定时器记数值的计算公式如下: t_watchdog=1/ [PCLK/( prescaler value +1)/ Division_factor ] 看门狗的定时周期为T=WTCH×t_watchdog 一旦看门狗定时器被允许,看门狗定时器数据寄存器(WTDAT)的值不能被自动的装载到看门狗计数器(WTCNT)中.因此,看门狗启动前要将一个初始值写入看门狗计数器(WTCNT)中. 调试环境下的看门狗当S3C2410A 用嵌入式ICE 调试的时候,看门狗定时器的复位功能不能启动,看门狗定时器能从CPU 内核信号判断出当前CPU 是否处于调试状态, 如果看门狗定时器确定当前模式是调试模式,尽管看门狗能产生溢出信号,但是仍然不会产生复位信号.5,S3C2410A 相关寄存器WTCON――看门狗定时器控制寄存器看门狗控制寄存器能够禁止或者允许看门狗时钟,从四个不同的时钟源中挑选时钟信号,允许或禁止中断,并且能允许或禁止看门狗时钟输出.如果用户想要使用看门狗作为普通时钟,应该中断使能,禁止看门狗定时器复位.WTDAT――看门狗定时器数据寄存器WTDAT 用于设置看门狗定时器的超时时间值,在初始化看门狗过程中,WTDAT 的值不会自动加载到定时计数器中,首次使用定时器超时值为其初始值即0x8000,以后该寄存器的值会被自动加载到WTCNT 寄存器中.WTCNT――看门狗定时器计数寄存器WTCNT 为看门狗定时器工作的时间计数器的当前计数值,注意在初始化看门狗操作后,看门狗数据寄存器(WTDAT)的值不能自动装载到看门狗计数寄存器(WTCNT)中, 所以看门狗被允许之前应高初始化看门狗计数寄存器的值.6,实验程序由于看门狗是对系统的复位或者中断的操作,所以不需要外围的硬件电路.要实现看门狗的功能,只需要对看门狗的寄存器组进行操作.即对看门狗的控制寄存器(WTCON) , 看门狗数据寄存器(WTDAT) ,看门狗计数寄存器(WTCNT)的操作. 设计流程如下: 设置看门狗中断操作, 包括全局中断和看门狗中断的使能, 看门狗中断向量的定义. 对看门狗控制寄存器(WTCON)的设置,包括设置预分频比例因子,分频器的分频值,中断使能和复位使能等. 对看门狗数据寄存器(WTDAT)和看门狗技术寄存器(WTCNT)的设置. 启动看门狗定时器.6.1 主功能函数int Main(void) {ChangeClockDivider(1,1);ChangeMPllValue(0xa1,0x3,0x1);Port_Init();Uart_Select(0);Uart_Init(0,115200);Uart_Printf("watchdog test is beginning\n");watchdog_test();while(1); }6.2 看门狗复位功能程序实现void watchdog_test(void) {//Prescaler value=100; lock division factor=128 ;PCLK=67.5MHz//t_watchdog=1/[PCLK/(Prescaler value+1)/Division_factor]=0.0002//disable watchdogrWTCON=((100<<8)|(3<<3));//看门狗时钟周期T=WTCNT*t_watchdog=3S//看门狗喂狗rWTDAT=15000;rWTCNT=15000;//disable watchdog interruptrWTCON &= ~(3<<1);//enable Watchdog timer;reset signal.rWTCON|=((1<<5)|(1<<0));while(1); }6.3 看门狗定时器功能程序实现void watchdog_test(void) {//initialize interrupt registersClearPending(BIT_WDT);//建立WatchDog 中断pISR_WDT=(unsigned)watchdog_int;//Prescaler value=100,clock division factor=128//t_watchdog=1/[PCLK/(Prescaler value+1)/Division_factor]=0.00025856//disable watchdogrWTCON=((100<<8)|(3<<3));//看门狗时钟周期T=WTCNT*t_watchdog=4S//看门狗喂狗rWTDAT=15000;rWTCNT=15000;rWTCON|=((1<<5)|(1<<2)); //enable Watchdog timer ang watchdog interrupt //rWTCON|=((1<<5)|(1<<2)|1);//watchdog 复位,时间间隔为4S.rWTCON|=(1<<5)|(1<<2); //每4S watchdog 一次中断.//设置watchdog 为IRQ 中断模式rINTMOD&=0xFFFFFDFF;//开中断EnableIrq(BIT_WDT);while(f_ucSencondNo<11);}。