dsp看门狗定时器

dsp看门狗定时器
dsp看门狗定时器

看门狗定时器

看门狗在外围监控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)——该寄存器包含了用于看门狗配置的如下控制位

2看门狗禁止位

2看门狗标志位

2看门狗核对位(3位)

2看门狗分频选择位(3位)

1.1.2看门狗定时器时钟

看门狗定时器时钟(WDCLK)是一种低频率的时钟。当CPUCLK(为根据SCSR1中分频位对外部时钟分频后值)为40MHz时,WDCLK 理论上为78125Hz。WDCLK时钟是由对CPU的输出时钟CLKOUT 进行分频所产生。这就能够确保当CPU处于IDLE1和IDLE2 模式时,看门狗仍能进行计数。WDCLK是在外围设备中产生(不是在CPU中产生),WDCLK的频率可由如下公式进行计算:

WDCLK=CLKOUT/512

当看门狗定时器被允许运行时,WDCLK可在DSP的CLKOUT引脚测出(需要对该复用引脚进行设置,确定是输出CLKOUT还是

WDCLK时钟)。在看门狗定时器被允许运行时,看门狗计数器应该在器溢出之前被清零,否则DSP将被复位。

1.1.3看门狗的停止

当CPU的停止信号产生时,WDCLK将被中止。这种情况是通过如下方式实现的:通过停止对从CLKOUT产生WDCLK的时钟分频器的时钟而实现中止WDCLK的产生。

注意:当实时仿真器在运行时,看门狗定时器时钟不会产生。这和F/C240不一样

1.1.4看门狗定时器的操作

看门狗定时器是一个由从预分频器出来的时钟进行驱动的连续增计数的计数器。在看门狗计数器溢出之前如果WDKEY寄存器没有对其进行清零,该定时器将对系统复位以保证系统软件和硬件的正常运行。

WDCLK是由芯片内的时钟模块产生,并且在除HALT模式之外的任何操作模式下都是激活的。WDCLK使看门狗定时器不考虑芯片内的任何寄存器状态的情况下运行。除了HALT低功耗模式,因为它可以使WDCLK信号中止。WDCNTR的当前状态可以在对其进行操作的任何时候进行读操作。

1.1.4.1看门狗预定标的选择

8位WDCNTR的输入时钟可以是WDCLK时钟信号或者是从独立运行计数器中出来的六个分频信号中任何一个。该6位的独立运行的计数器在WDCLK时钟的驱动下连续的进行增计数。只要给看门狗定时器输入WDCLK时钟,看门狗将开始起作用。预定标器的六路分频信号由WDPS2—0位进行选择。这种分频可使看门狗在WDCLK时钟为78125Hz时溢出时间从3.28ms到209.7ms。在芯片处于正常工作状态时,独立运行计数器是不能被停止或复位的,除了系统的复位。清除WDCNTR不能清除独立运行计数器。

1.1.4.2对看门狗定时器的操作

在WDCNTR寄存器溢出之前,向WDKEY写相应的数将使

WDCNTR被清零。当向WDKEY写55h时,WDCNTR将可以

被清零,当紧接着向WDKEY写AAh时,WDCNTR就将被清

零。向WDKEY写除55h或者AAh之外的任何值都将导致系统

复位。只有向WDKEY写55h后写AAh才能使WDCNTR复位。

1.1.4.3看门狗复位

当WDCNTR溢出时,看门狗定时器才强制使系统复位。复位发生在WDCNTR溢出一个时钟周期之后。只要WDCLK在正常工作,

溢出就不能被停止。只有当WDCLK没有工作,振荡器处于低

功耗模式时看门狗定时器才无法溢出使系统复位。看门狗定时

器可以通过设置WDCR寄存器中的WDDIS位使其停止工作。

注意在240XA设备中没有WDDIS引脚。在SCSR2 中的

watchdog override 位提供了WDDIS引脚的功能。

1.1.4.4看门狗的设置

开门狗独立于CPU的操作并且一般是打开的状态。其不需要任

何CPU的初始化操作。当系统复位发生时,开门狗定时器默认

为其输入时钟为最快的时钟(在78125Hz的WDCLK信号下溢

出时间为3.28ms)。当复位结束时,CPU开始执行代码,看门

狗计数器开始计数。

1.2看门狗控制寄存器

下面表中详细讲述了看门狗控制寄存器中各位的作用。

1.2.1看门狗计数寄存器

8位的看门狗计数寄存器(WDCNTR)包含了看门狗计

数器的当前值。该寄存器以WDCR中设置的时钟频率进

行持续的计数。当WDCNTR溢出时,一个时钟周期后

系统开始复位。当向WDKEY写合适的数值序列后

WDKEY将对WDCNTR清零以阻止系统复位的发生。

尽管如此,其不能对独立运行计数器清零。

看门狗计数寄存器的8位为只读位,向其写数没任何作用。

1.2.2看门狗复位键寄存器

当向WDKEY先写55h后写AAh后其将给WDCNTR清

零。除55h和AAh之后的任何值将导致系统复位。

1.2.3看门狗定时器控制寄存器

WDCR包含了对开门狗进行配置的控制位。包含复位标

志位,核对位,以及对输入时钟进行预分频的选择位。

1.2.4.4 看门狗核对位逻辑

开门狗定时器核对位(WDCR5—3位)一直与一个恒定值(101)进行比较,如果核对位的值与101不同,其将使系统复位。这

种逻辑的作用是防止软件向WDCR中赋不正确的值,或者是

外面的刺激因素(电压尖峰,电磁干扰,或者是其他影响因素)。

通过这种方式可以防止WDCR的值出现错误。(个人理解: 电

磁干扰或者软件以及其他因素有可能使WDCR出现错误,当

WDCR出现错误时,将导致整个看门狗的错误运行,因此,通过

这种方法,如果WDCR中5到3位出现与初值不同时就意味着该

控制寄存器已经出现错误了,这时必须使系统出现复位才能解

决错误).向WDCR5—3写除101以外的任何值都将引发系统

的复位。读核对位时读出数始终为000,向其写数无效。

第七位:看门狗复位标志位。复位发生时,改为置1

0:标明看门狗定时器自从最近一次清除来没有复位过。

1:标明看门狗定时器已经复位。

第六位:看门狗禁止位。当SCSR2中的OVERRIDE位为

1时,向其写1将关闭看门狗。

0:看门狗使能。

1:看门狗关闭。

清除SCSR2寄存器中的OVERRIDE位将使WD

由关闭状态变为使能状态。

第五、四、三位:该三位组合起来为101时系统正常工作,

任何一位发生变化将导致系统复位。

第二、一、零位:该三位为WDPS位,通过该三位的组

合使看门狗计数器得到不同频率的时钟。

预定标器逻辑

看门狗定时器控制寄存器

看门狗复位键寄存器

看门狗计数寄存器

看门狗功能框图

看门狗定时器参考资料

看门狗定时器参考资料: 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); }

MSP430教程10:MSP430单片机WDT看门狗定时器解析

看门狗定时器用来防止程序因供电电源、空间电磁干扰或其它原因引起的强烈干扰噪声而跑飞的事故。程序中设置看门狗清零指令 WDTCTL=WDTPW+WDTCNTCL,当程序跑飞不能及时清零看门狗,导致看门狗溢出复位,这样程序可以恢复正常运行状态。 一、WDT寄存器包括WDTCNT和WDTCTL,两个寄存器在上电和系统复位内容全部清零 1.记数单元WDTCNT:WDTCNT是16位增记数器,由MSP430选定的时钟电路产生的固定周期脉冲信号对记数器进行加法记数。WDTCNT不能直接软件存取,必须通过看门狗定时器的控制寄存器WDTCTL来控制。 2.控制寄存器WDTCTL:WDTCTL由两部分组成,高8位用作口令,即5AH(头文件中定义为WDTPW),低8位是对WDT操作的控制命令。写入WDT控制命令时先写入口令WD TPW,口令写错将导致系统复位。读WDTCTL时不需口令,低字节WDTCTL的值,高字节读出始终为69H。 bit 15-8 7 6 5 4 3 2 1 0 口令HOLD NMIES NMI TMSE L CNTCL SSEL IS1 IS0 IS1 SI0 选择看门狗定时器的定时输出,T为WDTCNT的输入时钟源周期。 TMSEL W DT工作模式选择 0 0 T*2的15次 方 0 看门狗模式 0 1 T*2的13次

方 1 定时器模式 1 0 T*2的9次 方 NMI 选择RST/NMI 引脚功能 1 1 T*2的6次 方 RST/NMI为复位端 SSEL 选择WDTCNT的时钟 源 1 RST/NMI为非屏蔽中断输入 0 SMCL K 1 ACLK NMIES 选择NMI中断的边沿触发方 式 HOLD 停止看门狗定时器工作 0 上升沿触发NMI中 断 0 看门狗功能激活 1 下降沿触发NMI中 断 1 时钟禁止输入,记数停止

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软件设计流程图:

内部与外部看门狗定时器的比较

内部与外部看门狗定时器的比较 摘要:本文对内部(集成在处理器内部)看门狗定时器(WTD)与外部(基于硬件) WDT的优势和劣势进行了对比。内部看门狗便于设计,但容易失效。MAXQ2000微控制器的WDT可以作为内部看门狗的一个例子。基于硬件的看门狗定时器需要占用额外的电路板空间,但在对于可靠性要求较高的设计中确实不可或缺的。本文给出了一个对照表,总结了每种WDT方案的优缺点。 引言 看门狗定时器(WDT)在出现无效的软件运行状态时用来强行复位(硬件复位)嵌入式微处理器或微控制器,失效状态可以是简单地触发寄存器的某一位,或者是射线干扰或EMI (电磁辐射)。 本文介绍了一些针对具体应用选择最佳定时器的考虑。 WDT的典型应用 防止微处理器闭锁是WDT的一个典型应用,通常,嵌入式软件有一个“主循环”程序,用其调用子程序以实现不同的任务。每次程序循环对WDT进行一次复位,如果任何原因造成程序循环操作失败,看门狗定时器则发生超时,对器件进行复位。 具有WDT功能的系统非常适合检测误码,中断(包括存储器故障,EMI对存储器或接口放电)可能导致临时性的误码。这些误码会导致处理器输入、输出数据的极性翻转,当误码没引入到程序信息中时,微处理器将会执行错误的代码。很有可能造成处理器开始执行操作数,而非操作代码。程序开始执行这种错误代码时,将造成程序运行不正常,无法提供看门狗清零信号,从而导致处理器复位。合理的系统设计能够在复位后恢复系统的正常运行。 需要注意的是,WDT不能检测瞬态故障,按照定义,只有在WDT计数器达到预定的时间间隔时才会复位处理器。正是这一原因,需要选择一个最短超时周期,以便在系统失控之前由WDT产生复位,使系统恢复正常工作。 内部和外部WDT WDT可以内置于微处理器,例如:MAXQ2000微控制器;也可以是一个独立的IC (外部WDT),或作为支持ASIC的一部分。无论是内部WDT,还是外部WDT,各有其优缺点。内部定时器有助于节省成本,但容易受程序运行失效的影响。相对成本较高的外部WDT具有一个独立的时钟源,能够提供更高的可靠性;经过适当配置,外部WDT不会受程序失效的影响。 WDT的基本原理 WDT的核心电路是计数寄存器,时钟源连续递增计数寄存器的值,计数器发生溢出时,看门狗逻辑电路强制系统复位。为防止复位,必须周期性地将计数寄存器清零,称其为“喂

dsp看门狗定时器

看门狗定时器 看门狗在外围监控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)——该寄存器包含了用于看门狗配置的如下控制位 2看门狗禁止位 2看门狗标志位

第十八章看门狗定时器

第十八章看门狗定时器 概述 S3C2410的看门狗定时器用于当系统被噪声或系统错误等故障打断时返回控制器操作状态。它可以用作一个普通的16位内部定时器来请求中断。WDT产生一个128个PCLK周期的复位信号。 特性 —具有中断请求的正常内部定时器模式 —当定时器计数值到达0时产生一个128个PCLK周期的内部复位信号 看门狗定时器操作 图18-1描述了WDT的功能方框图。WDT只使用PCLK作为其时钟源。PCLK 频率经过预定标器,然后再进行分频产生相应的WDT时钟。 预定标器的值和分频因数在WDT控制寄存器WTCON中指定,有效的预定标器的值在0-(2的8次方-1)之间,分频因数可选为16、32、64、128。 使用下式计算WDT频率和每个定时器时钟周期的容差 t_watchdog = 1/( PCLK / (Prescaler value + 1) / Division_factor ) WTDAT和WTCNT 一旦WDT使能,WTDAT寄存器的值不能自动加载进WTCNT,因此必须在WDT启动前向WTCNT写入初始值。 调试环境的考虑 当S3C2410在使用嵌入式ICE调试模式时,WDT将自动关闭。 WDT可以通过CPU核心信号--DBGACK判断当前是否处于调试模式,一旦DBGACK信号被断言,WDT的复位输出将会无效,因为看门狗被中止工作。

WDT控制寄存器WTCON WTCON寄存器允许使能/禁止WDT、选择4个不同的时钟信号源、使能/禁止中断、使能/禁止WDT输出。 WDT用于从故障后复位CPU,如果不需要复位,则应该禁止WDT。 如果希望将WDT用作普通定时器,使能中断并关闭看门狗。 WDT数据寄存器WTDAT WTDAT寄存器中的值指定溢出的时间。它不会在初始化WDT时自动加载到WTCNT中,但是用0x8000(初始值)将导致第一次溢出。这种情况下,WTDAT的值将自动加载到WTCNT中。 WDT计数寄存器 WTCNT显示WDT的当前值。注意WTDAT的值不会在初始化WDT使能时自动加载到WTCNT中,因此在使能WDT前必须手动设置WTCNT的初始值。

嵌入式看门狗定时器

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

S3C2440看门狗定时器(推荐)

看门狗定时器的主要作用当程序因为干扰而跑飞后,能够使系统复位。从而防止系统跑飞,提高系统稳定性。 先来说说看门狗的工作原理: 设本系统程序完整运行一周期的时间是Tp,看门狗的定时周期为Ti,Ti>Tp,在程序正常运行时,定时器就不会溢出,若由于干扰等原因使系统不能在Tp时刻修改定时器的记数值,定时器将在Ti时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控的作用。 看门狗设计步骤: 1,设置看门狗中断操作,包括全局中断操作和看门狗中断的使能,看门狗中断向量的定义。[html]view plaincopyprint? 1.#define rINTMSK (*(volatile unsigned *)0x4a000008) //Interrupt mask control 2.#define rINTSUBMSK (*(volatile unsigned *)0x4a00001c) //Interrupt sub mask [html]view plaincopyprint? 1.//开中断 2.rINTMSK&= ~(BIT_WDT_AC97); 3.rINTSUBMSK&= ~(BIT_SUB_WDT); 2,对看门狗控制寄存器WTCON设置,包括设置预分频比例因子,分频器的分频值,中断使能,复位使能。 WTCON相关位的作用可从下图看出: 其中t_watchdog的计算方法为:

如预分频值=100; 时钟除数因子=128 ;PCLK=67.5MHz,则 定时器时钟周期t_watchdog=1/[PCLK/(预分频值+1)/时钟除数因 子]=1/[67.5*1000000/(100+1)/128]=0.0002 预分频值,时钟除数因子的范围如下: [html]view plaincopyprint? 1.rWTCON=((100<<8)|(3<<3)); //预分频值=100; 时钟除数因子=128 ; [html]view plaincopyprint? 1.rWTCON|=(1<<0);//允许复位 3,启动看门狗。 [html]view plaincopyprint? 1.rWTCON |= ((1<<5)|(1<<2)); //允许看门狗定时器和允许中断产生 4,喂狗,即对WTDAT看门狗数据寄存器和WTCNT看门狗计数寄存器的设置。这要在在中断发生前,重新对看门狗定时器的寄存器进行赋值,使它的定时器重新开始计时。而不至于引起系统复位。 [html]view plaincopyprint? 1.rWTDAT=20000; //WTDAT看门狗数据寄存器,看门狗定时器重载的计数值 2.rWTCNT=20000; //WTCNT看门狗计数寄存器,看门狗定时器当前计数值 3.//看门狗时钟中断周期T=WTCNT*t_watchdog=4S watchdog.c 实现看门狗功能,防止程序跑飞: [html]view plaincopyprint?

AT89S51单片机看门狗定时器的使用

AT89S51 看门狗定时器由一个14位定时器及WDTRST(地址为6AH)寄存器构成。开启看门狗定时器后,14位定时器会自动计数,每16384(214)个机器周期溢出一次,并产生一个高电平复位信号,使系统复位。对于12MHZ的时钟脉冲每16384us(约0.016s)产生一个复位信号。 如果启动看门狗定时器,当系统超过0.016s没有动作(程序跑飞),看门狗定时器自动复位,让系统归复于正常运作状态。为了系统既能正常工作又不会出现死机(程序跑飞),在0.016s 内必须喂狗一次,即对看门狗定时器进行复位,看门狗的启动和复位的方法是一样的。 在汇编语言中启动或复位看门狗定时器的命令如下。 MOV 6AH, #1EH MOV 6AH, #0E1H 若要在C语言中使用看门狗定时器功能,由于reg51.h中并没有声明WDTRST寄存器,所以必须先声明WDTRST寄存器。 Sfr WDTRST=0xa6; 进行声明以后可以用一下命令启用或复位看门狗定时器。 WDTRST=0x1e; WDTRST=0xe1; 下面用一个C语言进行说明 #include Sfr WDTRST=0xa6; Main() { ……; WDTRST=0x1e; WDTRST=0xe1; While(1) { WDTRST=0x1e;

WDTRST=0xe1; ……; ……;这部分执行时间必须少于0.016s } } 以上程序中系统在做一个无限循环的动作,通过看门狗定时器可以防止程序在执行过程中跑飞。因为只要程序一跑出while()循环,看门狗定时器溢出以后得不到复位,所以自动复位系统,让程序从mian()开始重新运行。 但是在C语言应用看门狗定时器也特别小心,一定要在看门狗定时器启动后的0.016s内喂一次狗。 注:在汇编语言中每条指令的执行时间都是可以准确算出来,下面是一个汇编语言编写的8路led向左移程序应用看门狗定时器的实例。 ORG 00H ;1 1us MOV 0A6H,#1EH ;2 1us MOV 0A6H,#0E1H ;3 1us START: MOV A,#0FEH ;4 1us LOOP: MOV P2,A ;5 1us CALL DELAY ;6 2us RL A ;7 2us JMP LOOP ;8 2us DELAY: MOV R7,#200 ;9 1us DV: MOV R6,#250 ;10 1us DJNZ R6,$ ;11 2us MOV 0A6H,#1EH ;2 1us

看门狗定时器

看门狗定时器 (一)什么是看门狗 为了给初学者一个系统的概念,先介绍一下看门狗的基本概念。当嵌入式系统运行时受到外部干扰或者系统错误,程序有时会出现"跑飞",导致整个系统瘫痪。为了防止这一现象的发生,在对系统稳定性要求较高的场合往往要加入看门狗(WATCHDOG)电路。看门狗的作用就是当系统“跑飞”而进入死循环时,恢复系统的运行。 (二)看门狗的工作原理 给出看门狗的基本的工作原理:见下两条: 1. 其基本原理为:设本系统程序完整运行一周期的时间是Tp,看门狗的定时周期为Ti,Ti>Tp,在程序运行一周期后就修改定时器的计数值,只要程序正常运行,定时器就不会溢出,若由于干扰等原因使系统不能在Tp 时刻修改定时器的计数值,定时器将在Ti 时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控作用。 2. 在一个完整的嵌入式系统或单片机小系统中通常都有看门狗定时器,且一般集成在处理器芯片中,看门狗实际上就是一个定时器,只是它在期满后将自动引起系统复位。 (三)S3C2410 的看门狗 对于我们所使用的S3C2410 的看门狗定时器有两个功能: 1. 作为常规时钟,并且可以产生中断。 2. 作为看门狗定时器使用,当时钟计数减为0(超时)时,它将产生一个128个时钟周期的复位信号。 S3C2410的看门狗可以被用做一个普通的十六位的记数器来请求中断服务。 下图为看门狗时钟的电路示意图,看门狗时钟使用PCLK 作为它的时钟源,PCLK通过预分频产生适合的看门狗时钟。

预分频值和分频因子在看门狗时钟控制器寄存器(WTCON)中被指定。预分频值的有效范围从0 到28-1。分频因子可以选择16,32,64 或者128。 看门狗定时器计数值的计算公式如下: 输入到计数器的时钟周期为 t_watchdog=1/[PCLK/(Prescaler value+1)/Division_factor] 看门狗的定时周期为 T=WTCN T×t_watchdog 注意:一旦看门狗的时钟已经开始使用,它的数据寄存器(WTDAT)中的值将不会自动读到时间寄存器中间去(WTCNT),由于这个原因,你必须在看门狗记时器启动之前就将一个初始值写入到看门狗时间记数寄存器(WTCNT)中间去 (四)看门狗的相关寄存器 看门狗控制寄存器(WTCON) 它能够禁止或允许看门狗时钟,从四个不同的时钟源中挑选时钟信号,允许或禁止中断并且能允许或禁止看门狗时钟输出。 如果用户想要使用看门狗作为普通时钟,请允许中断并且禁止看门狗时钟。

1带I2C串行CMOSEEPROM,精密复位控制器和看门狗定时器的监控电路-CAT1163(16k)

带I2C串行CMOS EEPROM,精密复位控制器和看门狗定时器的监 控电路-CAT1163(16k) 特性 看门狗定时器输入(WDI) 兼容400KHz 的I2C总线 操作电压范围为2.7V~6.0V 低功耗CMOS 技术 16 字节的页写缓冲区 内置误写保护电路 —Vcc锁定 —写保护管脚WP 复位高电平或低电平有效 —精确的电源电压监控 —支持5V,3.3V 和3V 的系统 —5 个复位门槛电压可供选择 1,000,000个编程/擦除周期 手动复位 数据可保存100 年 8 脚DIP 封装或8 脚SOIC 封装 商业和工业级温度范围 描述 CAT1163 为基于微控器的系统提供了一个完整的存储器和电源监控解决方案。它们利用低功耗CMOS技术将16k带硬件存储器写保护功能的串行EEPROM 存储器、用于掉电保护的电源监控电路和一个看门狗定时器集成到一块芯片上。存储器采用I2C 总线接口。 当系统由于软件或硬件干扰而被终止或“挂起”时,1.6 秒的看门狗电路将复位系统,使系统恢复正常。CAT1163的看门狗监控着WDI管脚。 电源监控和复位电路可在系统上电/下电时保护存储器和系统控制器,防止掉电条件的产生。CAT1163的5个门槛电压可支持5V、3.3V和3V的系统。一旦电源电压超出范围,复位信号有效,禁止微控制器、ASIC或外围器件继续工作。复位信号在电源电压超过复位门槛电压后的200ms内仍保持有效。由于带有高电平和低电平有效的复位信号,因此CAT1163可以很方便地连接到微控制器和其它IC。另外,复位管脚还可用作手按键手动复位的去抖输入。

CAT1163 的存储器构造成16字节的页。除此之外,写保护管脚WP和V CC 检测电路提供的硬件数据保护功能可防止在Vcc降到低于复位门槛电压或上电时Vcc上升到复位门槛电压之前对存储器的写操作。 器件提供8脚DIP和表贴8脚SOIC两种封装形式。 管脚配置 CAT1163 器件编号最小门槛电压最大门槛电压 -45 4.50 4.75 -42 4.25 4.50 -30 3.00 3.15 -28 2.85 3.00 -25 2.55 2.70 功能框图

14-LPC111x_看门狗定时器(WDT)

u p .w h u t.e d u .c n UM10398 第14章:LPC111x看门狗定时器(WDT) Re Rev v.00.10—11J a nuary20 20110U s er manual 1.如何阅读本章 所有LPC111x系列处理器的WDT模块完全一致。 2.特性 ?如果没有周期性重装计数值(即喂狗),则产生片内复位。 ?支持调试模式。 ?可通过软件允许看门狗,但禁止看门狗需要硬件复位或看门狗复位/中断。 ?如果看门狗被允许,不正确/不完整的喂狗时序会产生复位/中断。 ?具有看门狗复位的标志。 ?可编程的32位定时器(带有内部预分频器)。 ?时钟周期可选,从(T WDCLK×256×4)到(T WDCLK×232×4),取(T WDCLK×4)的倍数。 ?可在系统控制块中选择内部RC振荡器(IRC)、主时钟或看门狗振荡器,来做为 看门狗的时钟(WDCLK)源,见表3–23。这样,看门狗定时器在不同功耗条件 下,有多种可能计时选择。为增加可靠性,还提供了一个看门狗定时器专用的 完整内部时钟源,它不依赖于外部晶振及其相关元件和线路。 3.应用 看门狗的目的是为了使微控制器在程序运行进入错误状态时,使系统在一个合理的时间内 复位。当看门狗被允许之后,如果用户程序没有在预定的时间内进行“喂狗”(或重新装 载计数值),看门狗将复位系统。 4.描述 看门狗定时器包括一个固定的4分频器和1个32位计数器,时钟通过4分频器送给送定时 器。每到一个时钟,定时器计数值减1。开始递减的值,最小必须是0xFF;如果设定小 于0xFF的值,则默认将0xFF装载到计数器。因此,看门狗最小时间是(TWDCLK×256 ×4),最大时间是(TWDCLK×232×4),取(TWDCLK×4)的倍数。 看门狗必须按如下方法使用: 1.在WDTC寄存器中设定看门狗定时器重装载值。 2.在WDMOD寄存器中设定看门狗定时器工作模式。 3.向WDFEED寄存器先写入0xAA,再写0x55启动看门狗。

LPC2103之看门狗定时器

LPC2103之看门狗定时器 WatchDog Timer (WDT)page225 看门狗定时器的定时范围为TPCLK x 256 x 4 到TPCLK x 232 x 4)。看门狗定时器的设置步骤如下:?在WDTC 寄存器设 置看门狗定时器的重装值?在WDMOD 寄存器设置模式?先后写入0xaa 和0x55 到WDFEED 寄存器以启动看门狗定时器?为防止看门狗产生复位/中断,必须在 看门狗计数器下溢前进行喂狗当看门狗定时器下溢,程序计数器将如同产生了 外部复位信号一样从0x00000000 地址重新启动。看门狗定时输出标志 (WDTOF)能够检测并是否看门狗导致了复位。WDTOF 标志位必须软件清除。 看门狗相关寄存器寄存器功能访问复位值地址WDMOD 看门狗模式寄存器, 这个寄存器包括了看门狗定时器的基本模式和状态R/W00xE000 0000WDTC 看 门狗定时器常量寄存器,存放定时器计数值R/W0XFF0xE000 0004WDFEEDWatchdog Feed sequence register,写入oxaa 和0x55 重新加载计数值WONA0xE000 0008WDTV 看门狗定时器值寄存器,该寄存器读出定时计 数当前值RO0XFF0xE000 000CWatchdog Mode register (WDMOD - 0xE000 0000)看门狗操作模式选择WDENWDRESET 操作模式0X (0 or 1)不启动看门狗定时器 10 看门狗中断模式。运行看门狗中断,但WDRESET 不使能。当看门狗定时 器下溢,WDINT 标志位将置位并且产生看门狗中断请求11 看门狗复位模式。 运行看门狗中断且WDRESET 使能。看门狗定时器下溢将复位控制器,一旦 WDEN 或WDRESET 位设置后将不能够软件清除,只有在外部复位或者看门 狗定时器下溢时才会被清除。当看门狗定时器溢出时,看门狗定时器溢出标志 位WDTOF 置位。该标志位由软件清除。当看门狗定时器溢出时,看门狗终端 标志位WDINT 置位。任何复位发生时将清除该标志位。看门狗模式寄存器位 信号功能复位值0WDEN 看门狗中断使能位(只可设置)01WDRESET 看门狗

MSP430教程10:MSP430单片机WDT看门狗定时器

MSP430教程10:MSP430单片机WDT看门狗定时器 看门狗定时器用来防止程序因供电电源、空间电磁干扰或其它原因引起的强烈干扰噪声而跑飞的事故。程序中设置看门狗清零指令 WDTCTL=WDTPW+WDTCNTCL,当程序跑飞不能及时清零看门狗,导致看 门狗溢出复位,这样程序可以恢复正常运行状态。 一、WDT 寄存器包括WDTCNT 和WDTCTL,两个寄存器在上电和系统复 位内容全部清零 1.记数单元WDTCNT:WDTCNT 是16 位增记数器,由MSP430 选定的时钟电路产生的固定周期脉冲信号对记数器进行加法记数。WDTCNT 不能直接软 件存取,必须通过看门狗定时器的控制寄存器WDTCTL 来控制。 2.控制寄存器WDTCTL:WDTCTL 由两部分组成,高8 位用作口令,即 5AH(头文件中定义为WDTPW),低8 位是对WDT 操作的控制命令。写入WDT 控制命令时先写入口令WDTPW,口令写错将导致系统复位。读WDTCTL 时不需口令,低字节WDTCTL 的值,高字节读出始终为69H。bit 15-8 765 4 32 10 口令HOLDNMIES NMITMSELCNTCL SSELIS1 IS0 IS1 SI0 选择看门狗定时器的定时输出,T 为WDTCNT 的输入时钟源周期。TMSELWDT 工作模式选择00 T*2 的15 次方0 看门狗模式01 T*2 的13 次方1 定时器模式10 T*2 的9 次方NMI 选择RST/NMI 引脚功能11 T*2 的6 次方0RST/NMI 为复位端SSEL 选择WDTCNT 的时钟源1RST/NMI 为非屏蔽中断输入0 SMCLK 1 ACLKNMIES 选择NMI 中断的边沿触发方式HOLD 停止看门狗定时器工作0 上升沿触发NMI 中断0 看门狗功能激活 1 下降沿触发NMI 中断1 时钟禁止输入,记数停止 二、WDT 的操作

看门狗指令专讲

看门狗复位指令WDR(Watch Dog Reset)无操作数,看门狗复位指令又称看门狗,在S7-200CPU程序系统中允许看门狗定时器被重新触发(复位),这样可以增加此扫描所允许的时间。如果强烈的外部干扰使PLC偏离正常的程序执行路线.看门狗定时器不再被复位,定时时间到时,PLC将停止运行,看门狗定时器定时时间的默认值为500ms。 当PLC的特殊I/O模块和通信模块的个数较多时进入RUN模式时对这些模块的缓冲存储器的初始化时间较长,可能导致看门狗定时器动作。带数字量输出的扩展模块也存一个监控定时器,每次使用看门狗复位指令,应该对每个扩展模块的某一个输出字节使用一个立即写指令(BIW)来复位每个模块的看门狗。 如果FOR-NfEXT循环程序的执行时间过长,可能超过监控定时器的定时时间,可以将WDR指令插入到循环程序中,而且在终止本次扫描之前,下列操作过程将被禁止。通信(R由端口方式除外),I/O更新(立即I/O除外),强制更新。SM位更新(SM0,SM5?SM29不能被更新),运行时间诊断,由于扫描时间会超过25s, 10ms和100ms定时器将不会正确累计时间,在中断程序中的STOP指令,如果带数字输出的扩展模块没有被S7-200写,则此看门狗定时器将关断输出。 跳转指令JMP若在它对应的标号之后(即程序往回跳),可能因连续反复跳步使它们之间的程序被反复执行,使监控定时器动作。为了避免出现这样的情况.可以在]MP 指令和对应的标号之间插入WDR指令。 使用WDR指令时要小心,因为如果用循环指令去阻止扫描完成或过度地延迟扫描完成的时间。那么在终止本次扫描之前,下列操作过程将被禁止: ?通信(自由端口方式除外) ?I/O更新(立即I/O除外)。?强制更新。?SM位更新(SM0,SM5?SM29不能被更新)。?运行时间诊断。?由于扫描时间超过25s,10ms和100ms定时器将不会正确累计时间。 ?在中断程序中的STOP指令。 ?带数字發输出的扩展模块也包含一个看门狗定时器.如果模块没有被S7-200写,则此看门狗定时器将关断输出。在扩展的扫描时间内.对每个带数字量输出的扩展模块进行立即写操作,以保持正确的输出。

相关文档
最新文档