当前位置:文档之家› 单片机看门狗的作用

单片机看门狗的作用

单片机看门狗的作用

单片机看门狗的作用

看门狗的作用是系统CPU正常工作时定时给看门狗喂狗,复位定时器,如果系统出问题,没有给看门狗喂狗,看门狗就由于超时将CPU复位。

?

?系统用初始化后注册看门狗中断

request_irq(WDT0_ACCSCSSNBARK_INT, wdog_bark_handler, 0, apps_wdog_bark, NULL);

?

?和初始化看门狗的超时时间bark time,

?

?__raw_writel(timeout, msm_tmr0_base + WDT0_BARK_TIME);

?

?__raw_writel(timeout + 3*WDT_HZ, msm_tmr0_base + WDT0_BITE_TIME);

?复位看门狗,使能看门狗和中断极性。

?

?__raw_writel(1, msm_tmr0_base + WDT0_EN);

?

?__raw_writel(1, msm_tmr0_base + WDT0_RST);

?

?enable_percpu_irq(WDT0_ACCSCSSNBARK_INT,

IRQ_TYPE_EDGE_RISING);

?

实验5-2 看门狗实验

实验5-2 看门狗定时器应用实验 1、实验目的 了解watchdog 的作用 掌握S3C2410A 的watchdog 定时器的使用方法 2、实验内容 实现看门狗复位 编程实现看门狗喂狗 3、实验设备 S3C2410A 开发板 ADS1.2 集成开发环境,ARM 仿真器、串口连接线 4、实验原理 4.1 看门狗功能简述 嵌入式系统运行时受到外部干扰或者系统错误,程序有时会出现“跑飞”,导致整个系 统瘫痪。为了防止这一现象的发生,在对系统稳定性要求较高的场合往往要加入看门狗(watchdog)电路。看门狗的作用就是当系统“跑飞”而进入死循环时,恢复系统的运行。 4.2 看门狗的工作原理 其基本原理为:设本系统程序完整运行一周期的时间是Tp,看门狗的定时周期为Ti, Ti>Tp,在程序正常运行时,定时器就不会溢出,若由于干扰等原因使系统不能在Tp 时刻修改定时器的记数值,定时器将在Ti 时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控的作用。 4.3 S3C2410A 的看门狗 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 ]

看门狗电路及原理

看门狗电路。在单片机中,为了能使得程序能够正常的运行。设定的及时根据程序所返回的值检测程序运行情况的定时电路。 在主程序中设定一定的值,把这个值在看门狗定时电路数值益处之前定时赋给看门狗赋给定时电路,让看门狗定时器复位。主程序的赋值周期要小于看门狗定时电路的运行周期。 看门狗 百科名片 单片机"看门狗" 在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"(watchdog) 目录[隐藏] 应用 基本原理 看门狗使用注意 看门狗运用 设计思路 [编辑本段]应用 看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,

即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。 [编辑本段]基本原理 看门狗,又叫watchdog timer,是一个定时器电路, 一般有一个输入,叫喂狗(kicking the dog or service the dog),一个输出到MCU的RST端,MCU正常工作的时候,每隔一端时间输出一个信号到喂狗端,给WDT 清零,如果超过规定的时间不喂狗,(一般在程序跑飞时),WDT 定时超过,就会给出一个复位信号到MCU,使MCU复位. 防止MCU死机. 看门狗的作用就是防止程序发生死循环,或者说程序跑飞。工作原理:在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。所以在使用有看门狗的芯片时要注意清看门狗。硬件看门狗是利用了一个定时器,来监控主程序的运行,也就是说在主程序的运行过程中,我们要在定时时间到之前对定时器进行复位如果出现死循环,或者说PC指针不能回来。那么定时时间到后就会使单片机复位。常用的WDT芯片如MAX813 ,5045, IMP 813等,价格4~10元不等. 软件看门狗技术的原理和这差不多,只不过是用软件的方法实现,我们还是以51系列来讲,我们知道在51单片机中有两个定时器,我们就可以用这两个定时器来对主程序的运行进行监控。我们可以对T0设定一定的定时时间,当产生定时中断的时候对一个变量进行赋值,而这个变量在主程序运行的开始已经有了一个初值,在这里我们要设定的定时值要小于主程序的运行时间,这样在主程序的尾部对变量的值进行判断,如果值发生了预期的变化,就说明T0中断正常,如果没有发生变化则使程序复位。对于T1我们用来监控主程序的运行,我们给T1设定一定的定时时间,在主程序中对其进行复位,如果不能在一定的时间里对其进行复位,T1 的定时中断就会使单片机复位。在这里T1的定时时间要设的大于主程序的运行时间,给主程序留有一定的的裕量。而T1的中断正常与否我们再由T0定时中断子程序来监视。这样就够成了一个循环,T0监视T1,T1监视主程序,主程序又来监视T0,从而保证系统的稳定运行。51 系列有专门的看门狗定时器,对系统频率进行分频计数,定时器溢出时,将引起复位.看门狗可设定溢出率,也可单独用来作为定时器使用。凌阳61的看门狗比较单一,一个是时间单一,第二是功能在实际的使用中只需在循环当中加入清狗的指令就OK了。AVR系列中,avr-libc 提供三个API 支持对器件内部Watchdog 的操作,它们分别是:wdt_reset() // Watchdog 复位wdt_enable(timeout) // Watchdog 使能wdt_disable() // Watchdog 禁止C8051Fxxx单片机内部也有一个21位的使用系统时钟的定时器,该定时器检测对其控制寄存器的两次特定写操作的时间间隔。如果这个时间间隔超过了编程的极限值,将产生一个WDT复位。-------------------------------------------------------------------------------- [编辑本段]看门狗使用注意

MAX813看门狗电路

看门狗电路设计 在工业现场运行的单片机应用系统,由于坏境恶劣,常有强磁场、电源尖峰、电火花等外界干扰,这些干扰可能造成仪表中单片机的程序运行出现“跑飞”现象,引起程序混乱,输出或显示不正确,甚至“死机”。系统无法继续正常的运行,处在一种瘫痪状态,它的硬件电路并没有损坏,只是内部程序运行出现了错误,这时,即使干扰消失,系统也不会恢复正常,这就需要采取一些措施来保障系统失控后能自动恢复正常,“程序运行几天来视系统”(Watchdog看门狗)就是常用的一种抗干扰措施,用以保证系统因干扰失控后能自动复位。为了提高仪表可靠性及抗干扰能力,通常在智能仪表中采用“看门狗”技术。 看门狗电路它实质上是一个可由CPU复位的定时器,它的定时时间是固定不变的,一旦定时时间到,电路就产生复位信号或中断信号。当程序正常运行时,在小于定时时间隔内,单片机输出一信号刷新定时器,定时器处于不断的重新定时过程,因此看门狗电路就不会产生复位信号或中断信号,反之,当程序因出现干扰而“跑飞”时,单片机不能刷新定时器,产生复位信号或产生中断信号使单片机复位或中断,在中断程序中使其返回到起始程序,恢复正常。 它的工作原理如同图3-4所示的两个计时周期不同的定时器T1和T2是两个时钟源相同的定时器,设T1=1.0s,T2=1.1s,而用T1定时器的溢出脉冲P1同时对T1和T2定时器清零,只要T1定时器工作正常,则定时器T2永远不可能计时溢出。当T1定时器不在计时,定时器T2则会计时溢出,并产生溢出脉冲P2。一旦产生溢出脉冲P2,则表明T1出了故障。这里的T2即是看门狗。利用溢出脉冲P2并进行巧妙的程序设计,可以检测系统的出错,而后使“飞掉”的程序重新恢复运行。 图3-4 看门狗工作原理示意图 看门狗电路的应用,使单片机可以在无人关态下实现连续工作。看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这

看门狗的作用

目前,在许多情况下,设计人员会用软件实现以往由硬件才能完成的电路功能,其中部分原因是低成本的微处理器(μP)为大家提供了广泛的选择。软件常常是解决问题成本最低、灵活性最高的方案,但它也迫使设计人员进行一些额外的测试以确保系统的可靠性。当然,如果程序没有代码错误也就不存在上述问题,细心的测试能够在1000条指令中减少1至10条错误。而设计人员则希望在10,000条指令中出错率不要超过十处。在台式机系统中出现导致系统瘫痪的软件错误并不可怕,因为用户只需重新启动系统即可,它只会造成少量数据的丢失。然而,对于运行在工控系统的软件,系统则必须能够在没有人为干预的条件下恢复故障。这一特性在两种情况下非常关键:一种是高有效性系统,如服务器、电话系统以及生产线等;另一种是高可靠性系统,因为这种系统一旦出现错误将造成伤害,如汽车、医疗设备、工业控制、机器人、自动门等。即使不考虑这些要求严格的应用,系统在无需用户干预的条件下自动(按下复位键或重新上电)从故障状态下恢复也是很有益处的,这种设备的好处是显而易见的,因为用户不希望设备内部出现问题。改善这类系统可靠性的一种简单、有效的措施是采用看门狗电路。 1看门狗看门狗实际上是一个计数器,它需要在一定的看门狗延时周期内被清零,如果没有清零动作,看门狗电路将产生一个复位信号以使系统重新启动或建立一个非屏蔽中断(NMI)并执行故障恢复子程序。大多数看门狗电路是沿触发,这样,无论是上升沿还是下降沿触发看门狗的输入端(WDI)通常都能够清计数器。WDI引脚一般连接在处理器的一个I/0口,这条口线可由软件触发。图1所示是微处理器通过在WDl脚发送脉冲清除看门狗定时器以防止复位的连接方式,实际上,清看门狗计数器的命令必须在主程序内。如果看门狗没有被清零,复位后软件将从地址为0000(启动程序)的子程序处开始运行。计算主程序的运行时间往往很困难,因为在此期间可能需要多次调用子程序,这与系统输入有关。因此,设计人员常常选择看门狗延时周期远远高于测试到的或计算出的循环时间。图2所示是正常工作情况下(看门狗在延时周期内被请零)的看门狗信号和复位信号。图3所示为看门狗计数器溢出时引发一次复位的时序示意图。工业标准的看门狗电路延时周期一般在l00ms~2s范围内,当然,也有些可调节或定制的看门狗电路能够覆盖更宽的延时范围(30ms至几分钟)。如果主程序的执行时间对于看门狗电路而言过长,设计人员可以在主程序的不同部位多次执行看门狗触发命令,也可以选用看门狗延时周期更长的器件。一种防止系统滞留在死循环的技术是在主程序的初始化部分将相应的I/O引脚置为高电平,而在主程序的另一部分将其置为低电子。如果软件在主程序的起始部分进入了死循环,由于WDI始终保持高电平,看门狗将产生延时输出而使系统复位。如果采用一个低-高-低的脉冲,看门狗将被清零,但系统仍处于阻塞状态。为解决这个问题,一种比较成熟的方法是对程序中的多项任务进行监视,并对每项任务设置一个标志,只有当全部标志置位后,看门狗电路才被触发。执行全部任务的时间要比看门狗超出周期短。在更复杂的系统中,还存在一些潜在问题,如存储器泄漏、堆栈溢出等,此时系统同样需要对这些情况进行监视,尽管对这些问题的讨论超出了本文的范围,但通过合理的程序设计、认真审核代码或采用特殊的软件工具也可以解决上述问题。 2 内部看门狗与外部看门狗许多μP都集成了可编程看门狗功能,软件控制可禁止其工作。通常内置看门狗易受代码错误的影响,它无法提供外部独立看门狗电路所具有的保护能力,因此在对安全性能要求较高的应用中(如自动门、医疗设备、机器人等),内置看门狗是无法接受的,从而使管理层采用独立的外部看门狗电路。现利用外部看门狗电路降低高可靠性系统的风险是一个极好的尝试。 2.1简单的看门狗+复位通常看门狗延时将重新复位系统,大多数看门狗电路与μP复位集成在一起,它同时可以监视处理器的供电电压。在出现看门狗延时或电源电压跌落的情况下均可产生复位动作,MAX823~MAX825系列产品就包含了这两种功能,它们可提供标准的复位电压门限、标准的看门狗延时周期和复位延迟,仅消耗6μA电流。而且这些器件具有超小型SC70封装。 2.2工厂预置看门狗系列 MAX6316~MAX6322系列可

用CD4060制作看门狗报警电路

用CD4060制作看门狗报警电路 看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,它实际上是一个计数器,一般给看门狗一个大数,程序开始运行后看门狗开始倒计数。如果程序运行正常,过一段时间CPU应发出指令让看门狗,重新开始倒计数。如果看门狗减到0就认为程序没有正常工作,强制整个系统复位。 原理图: CD4060芯片特性 1) 电压范围宽,应该可以工作在3V~15V,输入阻抗高,驱动能力差外,跟74系列的功能基本没有区别; 2) 输入时,1/2工作电压以下为0,1/2工作电压以上为1; 3) 输出时,1=工作电压;0=0V; 4) 驱动能力奇差,在设计时最多只能带1个TTL负载; 5) 如果加上拉电阻的话,至少要100K电阻; 6) 唯一现在使用的可能就是计数器,CD4060的计数器可以到14级二进制串行计数。 以AT89C51为例: 看门狗电路由14位二进制计数器CD4060和三极管VT1、VT2等组成。

Vout接单片机AT89C51的引脚输出口P1.7,由单片机的CPU向看门狗电路发送喂狗信号——正脉冲,在两个正脉冲间隔内,P1.7保持为低电平(此功能要结合软件才能实现,相应的软件设计在下面介绍)。我们知道,单片机AT89C51的I/O口带灌电流负载的能力比较大,每个引脚低电平时的吸入电流为20 mA,带拉电流负载的能力却很小,实测情况是,每个引脚高电平时的输出电流仅25μA,现在P1.7口被设计成带拉电流负载的方式,为了提高P1.7口带拉电流负载的能力,所以,电路中设置了上拉电阻R3。 14位二进制计数器CD4060的计数脉冲由其内部振荡器和外接阻容元件R1、R2、C1组成的电路产生,振荡周期为 T0SC=2.2×R1×C1=0.22 ms 振荡器产生的计数脉冲(矩形波)可以直接引出,同时还可以从CD4060的10个输出端Q4~Q10和Q12~Q14得到不同分频系数的方波输出,各方波输出信号的周期如表1所示。这样,如果CD4060得不到CPU通过P1.7口发送来的喂狗信号——正脉冲,则CD4060的输出端Q14在1.8S内将产生一个完整周期的方波信号,而且低电平在前,高电平在后,其高电平经三极管VT1、VT2处理后形成单片机AT89C51的复位信号,使单片机AT89C51复位。由此可见,单片机AT89C51正常工作时,只要在0.9S内从P1.7口送出一个正脉冲,便可及时清零看门狗,输出端Q14就不会产生定时溢出信号,从而使看门狗电路对单片机系统不起作用。并且,从CD4060的10个输出端Q4~Q10和Q12~Q14可以得到不同周期的方波信号,经三极管VT1、VT2处理后形成单片机系统的复位信号,可以适应不同用户应用程序,从而该硬件看门狗电路可以适应不同的单片机应用系统。 对MCS-51系列的单片机而言,它所需要的复位信号是高电平宽度大于2个机器周期的正脉冲,例如,单片机的时钟脉冲频率为12 MHz时,则所需要的复位信号高电平宽度为2μs以上就可以了,而由上面的分析可知,CD4060的Q14输出的是高电平宽度为0.9 s的方波,如果让它直接作为单片机的复位信号,则单片机的复位时间势必在0.9 s以上,这样尽管可以使程序跑飞的单片机复位,但是显然没有做到尽快地引导跑飞的程序到正确的轨道来,如果这样做的话,对于某些单片机应用系统而言可能带来非常严重的后果。图1中的三极管VT1、VT2及其周围阻容元件构成波形转换电路,把较宽的正脉冲变换为较窄的正脉冲,从而较好地解决了上述的问题。三极管VT1、VT2构成的2级直接耦合放大器作为缓冲器使用,它是CD4060的输出端Q14的灌电流负载,C2、R8是微分电路。 经分析后不难看出,电路中的R7、R8、C2还具有单片机上电复位的功能。 2 上电复位与看门狗信号复位的不同处理过程 由于程序跑飞很可能会造成一些随机破坏事件,对某些系统而言,希望尽可能从断点处恢复运行,因此,有必要妥善解决跑飞的程序回复后的处理。 单片机应用系统上电时,上电复位电路会使得单片机处于复位状态,这一般称为冷启动,这种情况下,单片机处于复位状态表现为: (1) 程序计数器PC的值为0000H。 (2) I/O口(P0、P1、P2、P3(1))为FFH状态,即准双向I/O口的输入状态。 (3) 堆栈指示器SP=07H,即堆栈底为片内RAM的07H单元。 (4) 除上述状态外,所有特殊功能寄存器SFR的有效位均为0。 (5) 上电复位时,由于是重新供电,RAM在断电时数据丢失,上电复位后为随机数。

C51单片机看门狗电路及程序设计方案

C51单片机看门狗电路及 程序设计案 院系:信息工程学院 年级:2010级 电子一班禹豪 电子一班训虎 电子二班邓启新 一、引言 在由单片机构成的微型计算机系统中,程序的正常运行常常会因为来自外界的电磁场干扰等原因而被打断,从而造成程序的跑飞,而陷入死循环。由此导致单片机控制的系统无法继续工作,造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片或程序,俗称"看门狗"(watchdog) (1)看门狗电路基本原理 看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连**,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。 *此处设计原理实际上为下文中硬件看门狗设计思路。

(2)看门狗电路一般设计式 “看门狗”电路一般分为硬件看门狗与软件看门狗两种设计式。 硬件看门狗是利用了一个定时器,来监控主程序的运行,也就是说在主程序的运行过程中,我们要在定时时间到之前对定时器进行复位。如果出现死循环,或者说PC指针不能回来,那么定时时间到后就会使单片机复位。常用的WDT芯片如MAX813,5045,IMP 813等,价格4~10元不等. 软件看门狗技术的原理和硬件看门狗类似,只不过是用软件的法实现(即利用单片机部定时器资源,通过编程模拟硬件看门狗工作式),以51系列为例:因在51单片机中有两个定时器,在利用部定时器资源来对主程序的运行进行监控时。可以对T1(或T0)设定一定的定时时间(设定的定时值要小于主程序的运行时间),当产生定时中断的时候对一个变量进行赋值(此变量在主程序运行的开始已有一个初值)。当主程序运行至最后时对此变量的值进行判断,如果值发生了预期的变化,就说明T0中断正常,如果没有发生变化则使程序复位。 考虑到设计要求,本设计采用软件看门狗设计思路。 二、看门狗电路整体设计思路 根据设计要求,本设计利用C51单片机部自带的定时器1进行编程,并配合少量电路实现“看门狗“电路功能。整个设计分为软件部分与硬件部分,如下: (1)软件部分设计原理: 软件设计分为三部分:“看门狗“定时器设置程序、溢出中断服务程序和喂狗代码。 1.1设计思路: 1)在主程序开头,“看门狗“定时器设置程序设置定时器1计时50ms。 2)当定时达50ms时,定时器1产生溢出中断,溢出中断服务程序开始工作,将看门狗标志num加1。当num的值等于100时,说明看门狗定时器已经计时5s,此时,单片机I/O端口P1.0输出高电平,对程序进行复位。 3)在此过程中,喂狗代码将被穿插于程序中循环体末尾。当循环体结束时,喂狗代码执行,关闭定时器1、清空num并重新初始化定时器设置。若循环体进入死循环,喂狗代码无法执行,num将一直累加至100,此时程序复位。 注:喂狗代码放置位置可根据num预计数值进行调整:当num门限值较小,即看门狗计数时间较短时,喂狗代码可放于程序中各循环体之后或均匀分布于整个主程序中。当num门限值较大,即看门狗计数时间较长时,喂狗代码可放于程序主循环体末尾。但是需注意看门狗计数时间必须长于正常工作时间,以免非正常复位。 1.2软件设计流程图:

嵌入式系统看门狗的使用

嵌入式系统看门狗的使用随着32 位微控制器在嵌入式产品中的广泛应用,嵌入式操作系统也逐渐被大量应用。由于嵌入式操作系统的使用, 大大降低了复杂应用系统中软件开发的工作量, 使得嵌入式软件能够采用现代的软件开发技术进行代码编写和调试, 从而也提高了软件的质量。但在嵌入式应用中, CPU 必须可靠工作, 即使因为某种原因进入一个错误状态, 系统也应该可自动恢复。看门狗的用途就是使微控制器在进入错误状态后的一定时间内复位。 看门狗的基本原理 所谓“看门狗”是指在系统设计中通过软件或硬件方式在一定的周期内监控系统的运行状况。如果在规定时间内没有收到来自系统的触发信号, 则系统会强制复位, 以保证系统在受到干扰时仍然能够维持正常的工作状态。它主要有寄存器、定时器和看门狗模等部件构成, 其内部结构如图1 所示。 图1、看门狗内部结构 在这里看门狗的原理我想大家都已经比较熟悉,我不再罗嗦 关于看门狗在前后台运行的程序(无OS)上使用很简单,我们只需要定时的去喂狗就可以。但是对于使用的嵌入式操作系统的软件我们上面的简单喂狗方式就行不通了。原因是系统是会执行任务调度的。每一个任务在运行时就相当于一个前后台系统。任一时刻只会有一个任务获得CPU的支配权而运行。这样就要求我们必须在每一个任务中都要执行喂狗动作。这样一来虽然达到了及时喂狗而不至于让系统复位的目的,但是如果有一个任务现在异常而不能运行的话,或者是两个任务因为资源问题发生死锁,系统其它的任务还会继续喂狗。这样应用程序虽然出了问题,但是系统依然在按正常运行。 所以在OS中使用看门狗就变得复杂起来。 下面我说一下我是如何在OS中使用看门狗的。以uCOS-II在STM32的平台上使用为例首先我为每一个任务分配一个软件看门狗计数器。这样就形成了软件看门狗计数器队列。这个队列在系统中使用的是全局变量(关于全局变量的使用可以看我上面一篇的“谈谈在UCOS中使用全局变量”一文)。,设置一个优先级别最高的任务作为监视器,以监视各应用任务是否正常运行,该监视器即为软件看门狗.该任务对其他任务都设定一个计时器,每个被监视的任务在设定的时间内对软件看门狗中相应的定时器定时清零,即“喂软狗”.在其他任务都正常工作的情况下,软件看门狗对内置硬件看门狗定时器周期性清零,即“喂狗”.若某个任务出现故障,则该任务在设置的时间内对软件看门狗不“喂软狗”,此时与之对应的定时器溢出,软件看门狗发送指令,把该任务的堆栈地址指到其起始

avr单片机看门狗程序

单片机看门狗程序 /*此程序实现单片机"看门狗"WDT的功能*/ #include "p18f458.h" unsigned long i; /*系统初始化子程序*/ void initial() { TRISD = 0X00; /*D口设为输出*/ } /*延时子程序*/ void DELAY() { for (i=19999;--i;) continue; } /*主程序*/ main () { initial(); /*初始化,设定看门狗的相关寄存器*/ PORTD = 0X00; /*D口送00H,发光二极管亮*/ DELAY(); /*给予一定时间的延时*/ PORTD = 0XFF; /*D口送FFH,发光二极管灭*/ while(1)

{ ; } /*死循环,等待看门狗溢出复位*/ } -------------------汇编语言版本的单片机看门狗程序---------------- ;此程序实现"看门狗"WDT的功能 ;此单片机看门狗由https://www.doczj.com/doc/194395183.html,独家提供 LIST P=18F458 INCLUDE "P18F458.INC" DEYH EQU 0X20 DEYL EQU DEYH+1 ORG 0X00 GOTO MAIN ORG 0X30 ;*************初始化子程序***************** INITIAL CLRF TRISD ;D口设为输出 RETURN ;**************延时子程序************************** DELAY MOVLW 0XFF MOVWF DEYH AGAIN1

实验八 看门狗实验

实验八看门狗实验 一、实验目的 1、了解看门狗的作用; 2、掌握看门狗的使用方法。 二、实验内容 1、编程实现看门狗功能,观察看门狗作用; 2、编程实现看门狗喂狗。 三、实验设备 1、硬件: JX44B0实验板; PC机; JTAG仿真器; 2、软件: PC机操作系统(WINDOWS 2000); ARM Developer Suite v1.2; Multi-ICE V2.2.5(Build1319); 四、基础知识 1、用ADS集成开发环境,编写和调试程序的基本过程; 2、应用程序的框架结构。 五、实验说明 1、看门狗的功能和工作原理 嵌入式系统运行时受到外部干扰或者系统错误,程序有时会出现“跑飞”,导致整个系统瘫痪。为了防止这一现象的发生,在对系统稳定性要求较高的场合往往要加入看门狗电路。看门狗的作用就是当系统“跑飞”而进入死循环时,恢复系统的运行。 其基本原理为:当本系统程序完整运行一周期的时间为Tp,看门狗的定时周期时Ti,Ti>Tp,在程序运行一周期后,就修改定时器的计数值,(俗称“喂狗”),只要程序正常运行,定时器就不会溢出,若由于干扰等原因使系统不能在Tp时刻修改定时器的计数值,定时器将在Ti时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控作用。 在一个完整的嵌入式机系统或单片机最小系统中通常都有看门狗定时器。而且一般集成在处理芯片中,看门狗实际上就是一个定时器,只是它在期满后将自动引起系统复位。 2、S3C44B0看门狗的控制 S3C44B0的看门狗定时器有两个功能: 1)为常规定时器使用,而且可以引发中断; 2)为看门狗定时器使用,期满时,它可以产生128个时钟周期的复位信号。 下图是S3C44B0看门狗的示意图。输入时钟为MCLK(该时钟频率等于系统的主频),它经过两级分频,最后将分频后的时钟作为该定时器的输入时钟,当计数器期满后可以产生中断或者复位信号。

单片机看门狗(Watchdog)的工作原理及其应用

单片机看门狗(Watchdog)的工作原理及其应用 2010年05月16日星期日 23:00 在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环。程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果。所以,出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"(watchdog)。 看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行。这个时候,看门狗电路就会由于得不到单片机送来的信号。便在它和单片机复位引脚相连的引脚上送出一个复位信号。使单片机发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。 看门狗,又叫 watchdog timer,是一个定时器电路。一般有一个输入,叫喂狗(kicking the dog or service the dog),一个输出到MCU的RST端,MCU 正常工作的时候,每隔一端时间输出一个信号到喂狗端,给 WDT 清零。如果超过规定的时间不喂狗,(一般在程序跑飞时),WDT 定时超过,就会给出一个复位信号到MCU,是MCU复位,防止MCU死机。看门狗的作用就是防止程序发生死循环,或者说程序跑飞。 工作原理:在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。所以,在使用有看门狗的芯片时要注意清看门狗。 硬件看门狗是利用了一个定时器,来监控主程序的运行,也就是说在主程序的运行过程中,我们要在看门狗定时器定时时间到之前对其进行复位。如果出现死循环,或者说PC指针不能回来,那么定时时间到后就会使单片机复位。常用的WDT芯片如MAX813 ,5045, IMP 813等,价格4~10元不等。 软件看门狗技术的原理和这差不多,只不过是用软件的方法实现,我们还是以51系列来讲,我们知道在51单片机中有两个定时器,我们就可以用这两个定时器来对主程序的运行进行监控。我们可以对T0设定一定的定时时间,当产生定时中断的时候对一个变量进行赋值,而这个变量在主程序运行的开始已经有了一个初值,在这里我们要设定的定时值要小于主程序的运行时间,这样在主程序的尾部对变量的值进行判断,如果值发生了预期的变化,就说明T0中断正常,如果没有发生变化则使程序复位。对于T1我们用来监控主程序的运行,我们给T1设定一定的定时时间,在主程序中对其进行复位,如果不能在一定的时间里对其进行复位,T1 的定时中断就会使单片机复位。在这里T1的定时时间要设的大于主程序的运行时间,给主程序留有一定的的裕量。而T1的中断正常与否我们再由T0定时中断子程序来监视。这样就够成了一个循环,T0监视T1,T1监

单片机看门狗程序

单片机看门狗程序 /*此程序实现单片机”看门狗”WDT的功能*/ #include”p18f458.h” unsignedlongi; /*系统初始化子程序*/voidinitial(){TRISD = 0X00;/*D 口设为输出*/} /*延时子程序*/voidDELAY(){for(i=19999;--i;)continue;} /*主程序*/main (){initial();/*初始化,设定看门狗的相关寄存器*/PORTD = 0X00;/*D 口送00H,发光二极管亮*/DELAY();/*给予一定时间的延时*/PORTD = 0XFF;/*D 口送FFH,发光二极管灭*/while(1){;}/*死循环,等待看门狗溢出复位*/} -------------------汇编语言版本的单片机看门狗程序----------------;此程序实现”看门狗”WDT的功能;此单片机看门狗由51hei 独家提供LISTP=18F458INCLUDE”P18F458.INC” DEYHEQU0X20DEYLEQUDEYH+1 ORG0X00GOTOMAINORG0X30 ;*************初始化子程序*****************INITIALCLRFTRISD;D 口 设为输出RETURN ;**************延时子程序 **************************DELAYMOVLW0XFFMOVWFDEYHAGAIN1M OVLW0XFFMOVWFDEYLAGAIN2DECFSZDEYLGOTOAGAIN2DECFSZDEY HGOTOAGAIN1NOPRETURN ;************单片机看门狗主程序

看门狗实验预习报告

实验8 看门狗实验 一、实验项目 1、利用watchdog产生定时中断,起定时器作用; 2、编程实现喂狗、看门狗和重启系统。 二、实验类型 验证性。 三、计划学时 2学时。 四、实验目的 1、了解watchdog的作用; 2、掌握lpc2103的watchdog定时器的使用方法。 五、实验设备与平台 1、实验设备:计算机(PC),ARM9-2410EP增强型嵌入式教学实验系统,Multi-ICE仿真器。 2、平台:Windows、ADS1.2。 六、涉及的知识点 定时器的使用方法,看门狗的作用以及使用方法。 七、实验相关知识 看门狗功能简述: 嵌入式系统运行时受到外部干扰或者系统错误,程序有时会出现“跑飞”,导致整个系统瘫痪。为了防止这一现象的发生,在对系统稳定性要求较高的场合往往要加入看门狗(watchdog)电路。看门狗的作用就是当系统“跑飞”而进入死循环时,恢复系统的运行。 看门狗的工作原理: 设系统程序完整运行一周期的时间是Tp,看门狗的定时周期为Ti。在程序正常运行时,Ti>Tp,看门狗的定时器就不会溢出;若由于干扰等原因使系统不能在Tp时刻内修改看门狗定时器的记数器的记数值,定时器将在Ti时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控的作用。 S3C2410A的看门狗简介: S3C2410A的看门狗定时器有两个功能: 1、作为常规时钟,并且可以产生中断;

2、作为看门狗定时器使用,当时钟计数减为0(超时)时,它将产生一个128个时钟周 期的复位信号。 主要特性如下: 通用的中断方式的16bit定时器; 当计数器减到0(发生溢出),产生128个PCLK周期的复位信号。 下图为看门狗的电路示意图,看门狗时钟使用PCLK作为它的时钟源,PCLK通过预分频产生适合的看门狗时钟。 图5.1 Watchdog定时器框图 八、实验内容与步骤 1.实验说明 由于看门狗是对系统的复位或者中断的操作,所以不需要外围的硬件电路。要实现看门 狗的功能,只需对看门狗的寄存器组进行操作。即对看门狗的控制寄存器(WTCON)、看 门狗数据寄存器(WTDAT)、看门狗计数寄存器(WTCNT)的操作。 设计流程如下: *设置看门狗中断操作,包括全局中断和看门狗中断的使能,看门狗中断向量的定义。 *对看门狗控制寄存器(WTCON)的设置,包括设置预分频比例因子、分频器的分频值、 中断使能和复位使能等。 *对看门狗数据寄存器(WTDAT)和看门狗计数寄存器(WTCNT)的设置。 *启动看门狗定时器。 2.看门狗复位功能实验步骤 (1)创建一个工程SHY5_WATCHDOG_1; (2)将“实验程序文档/Include/”目录下的8个头文件2410lib.h 2410slib.h 2410addr.h def.h

51单片机的看门狗

“看门狗”概念及其应用 在由单片机构成的系统中,由于单片机的工作有可能会受到来自外界电磁场的干扰,造成程序的跑飞,从而陷入死循环,程序的正常运行被打断,由单片机控制的系统便无法继续工作,这样会造成整个系统陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称“看门狗”(watch dog)。 加入看门狗电路的目的是使单片机可以在无人状态下实现连续工作,其工作过程如下:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过单片机的程序控制,使它定时地往看门狗芯片的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,给看门狗引脚送电平的程序便不能被执行到,这时,看门狗电路就会由于得不到单片机送来的信号,便将它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,从而单片机将从程序存储器的起始位置重新开始执行程序,这样便实现了单片机的自动复位。 通常看门狗电路需要一个专门的看门狗芯片连接单片机来实现,不过这样会给电路设计带来复杂,STC单片机内部自带有看门狗,通过对相应特殊功能寄存器的设置就可实现看门狗的应用,STC89系列单片机内部有一个专门的看门狗定时器寄存器,Watch Dog Timer 寄存器,其相应功能见下个知识点。 看门狗定时器寄存器(WDT_CONTR) STC单片机看门狗定时器寄存器在特殊功能寄存器中的字节地址为E1H,不能位寻址,该寄存器用来管理STC单片机的看门狗控制部分,包括启停看门狗、设置看门狗溢出时间等。单片机复位时该寄存器不一定全部被清0,在STC下载程序软件界面上可设置复位关看门狗或只有停电关看门狗的选择,大家根据需要可做出适合自己设计系统的选择。其各位的定义如表4.2.1所示。 表1看门狗定时器寄存器(WDT_CONTR)

单片机复位看门狗电路

705系列复位电路 #概述 GC705/706/707/708/813L是一组CMOS微处理器监控电路,可用来监控微处理器系统供电异常、电池故障和工作状态。和采用分立元件及多片IC组合成电路相比,明显减小了系统电路的复杂性和元器件的数量,并提高了系统的可靠性和精度。 GC705/706/813L具备以下四项基本功能: 1)电源开机,关机及电源供电不足时给出复位输出。 2)内含独立的看门狗电路输出。如看门狗电路输入在1.6秒内未得到翻转信号,看门狗电路输出端将变成低电平。 3)内含门限1.25V的检测器,用于掉电报警,电池欠电监测和监测加错电源的状况(以+5V为准)。 4)手动复位时,给出确定脉宽的负向复位脉冲 GC707/708和GC705/706基本功能一致,区别只在于GC705/706芯片中的第8脚正脉冲的复位(RESET)输出取消了,换成了看门狗定时器,原第6脚空脚被用做看门狗电路的输入端。GC813L则除了第7脚输出正脉冲的RESET外,其它功能和GC705/706完全一样。这几种电路的管脚功能定义和差异详见管脚定义图和管脚说明附表。 #应用范围 计算机,微处理器和微控制器系统;嵌入式控制器系统;智能仪器仪表;通信系统;工业自动化系统;电池供电手持设备等等。

# 电气参数 除非特殊说明,Vcc = 4.75V~ 5.5V (GC705/GC707/GC813), Vcc =4.5V~5.5V (GC706/GC708),T A = T MIN to T MAX 参数 符号 测试条件 最小值典型值 最大值 单位 GC705、706、707、708 1.0 5.5 电源电压范围 Vcc GC813 1.1 5.5 V GC705、706、813 150 350 电源电流 Icc GC707、708 50 350 uA GC705、707、813 4.50 4.65 4.75 GC706、708 4.25 4.40 4.50 复位门限 V RT GC706T 3.00 3.08 3.15 V 复位门限迴差 40 mV 复位脉冲宽度 t RS 140 200 280 ms I SOURSE =800uA VCC-1.5 I SINK = 3.2mA 0.4 GC705~708,VCC=1V ,I SINK = 50uA 0.3 GC707\708,I SOURCE =800uA VCC-1.5 GC707\708,I SINK = 1.2mA 0.4 复位输出电压 GC813,I SOURCE =4uA,V CC = 1.1V 0.8 V 看门狗计时长度 t WD GC705\706\813 1.00 1.60 2.25 秒 WDI 脉冲宽度 t WP VIL =0.4V ,VIH =(VCC)(0.8) 50 ns 下限 0.8 WDI 输入阈值 上限 GC705\706\813 V CC =5V 3.5 V GC705\706\813,WDI =VCC 50 150 WDI 输入电流 GC705\706\813,WDI =0V -150 -50 uA GC705\706\813,I SOURCE =800uA VCC-1.5 WDI 输出电压 GC705\706\813,I SINK =1.2mA 0.4 V MR 上拉电流 MR =0V 100 250 600 uA MR 脉冲宽度 t MR 150 ns 下限 0.8 MR 输入阈值 上限 2.0 V MR 到RESET 的 延迟 t MD 250 ns PFI 输入阈值 VCC =5V V PFI 输入电流 -25 25 nA I SOURCE =800uA VCC-1.5 PFO 输出电压 I SINK =3.2mA 0.4 V

AVR学习笔记十二、AVR内部的看门狗操作实验

A VR学习笔记十二、A VR内部的看门狗操作实验 -------基于LT_Mini_M16 12.1 基于A Tmega16内部看门狗操作实验 12.1.1、实例功能 A VR单片机的多数型号都有芯片内置的看门狗(watch dog)电路,看门狗电路实际上是一个定时器电路,该定时器采用独立的内部1M的RC振荡器驱动。 根据设置的看门狗定时时间,当程序运行时间超过定时时间后,如果没有及时复位看门狗(就是俗称的“喂狗”),看门狗定时器就会发生溢出,这个溢出将导致程序的复位,从而保证在程序跑飞的情况下,不会长时间没有响应。 本实例就利用WINA VR中自带的看门狗的操作函数来对A Tmega16的内部看门狗进行操作。 本实例有两个功能模块: ●了解WINAVR自带的看门狗操作函数。 ●编写程序,实现对ATmwga16内部口看门狗的操作。 通过本实例的学习,掌握以下知识点: ●如何利用WINA VR自带的看门狗操作函数实现对A Tmega16的内部看门狗的操作。 12.1.2 WINA VR中自带看门狗操作函数的说明 WINA VR中自带了看门狗操作函数,利用这些函数可以很轻松的实现对A VR单片机内部的看门狗进行控制。 如果要使用WINA VR中自带的看门狗操作函数,首先要在程序中包含看门狗操作函数的头文件,使用如下语句即可: #include 下面我们来了解一下看门狗的操作常量的定义。 ●复位看门狗定时器。程序允许在使能看门狗定时器后,在溢出时间到达之前,调用该函数将看门狗复位。如果在规定时间内不调用此函数,则会发生看门狗溢出,导致程序复位。 #define wdt_reset() _asm_ _volatile_(“dwr”) ●使能看门狗定时器,同时设置看门狗溢出时间 #define wdt_enable(timeout) _wdt_write((timeout) | _BV(WDE)) ●关闭看门狗定时器 #define wdt_disable() _wdt_write(0) ●定义看门狗定时器溢出时间 #define WDTO_15MS 0 #define WDTO_30MS 1 #define WDTO_60MS 2 #define WDTO_120MS 3 #define WDTO_250MS 4 #define WDTO_500MS 5 #define WDTO_1S 6 #define WDTO_2S 7 12.1.3 电路和连接 本实例只是对A VR单片机内部看门狗定时器的操作。没有用到任何外部电路(当然电源电路、复位电路、下载电路等构成单片机工作的最基本电路还是需要的。^_^)。 12.1.4 程序设计

相关主题
文本预览
相关文档 最新文档