打印

为什么要重置WDT???

[复制链接]
3784|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhuhuis|  楼主 | 2010-12-9 14:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
教程中第117页的那个例子中LDA WDT,00H ; 为什么要重置WDT???
沙发
tian111| | 2010-12-9 14:55 | 只看该作者
那个中断定时为0.5s,看门狗定时为1s的例子我也有点迷迷糊糊

使用特权

评论回复
板凳
zhuhuis|  楼主 | 2010-12-9 15:03 | 只看该作者
是啊,意思就是说超过1s系统就会复位显示时间12:00,是不是就是说时间增加1s系统就会复位了呢?

使用特权

评论回复
地板
zhuhuis|  楼主 | 2010-12-9 15:16 | 只看该作者
LDA WDT,00H ;重置WDT为什么还要重置???上面已经设定了LDI WDT,0001B ;设置看门狗定时为1s

使用特权

评论回复
5
tian111| | 2010-12-9 15:32 | 只看该作者
我的理解是中断定时设定为0.5s就是每隔CPU0.5s就向看门狗发出信号让它产生复位

使用特权

评论回复
6
happy_10| | 2010-12-9 15:45 | 只看该作者
这个每个0.5s向看门狗发出信号还需要用软件进行设置的吧

使用特权

评论回复
7
zhuhuis|  楼主 | 2010-12-9 15:48 | 只看该作者
嗯,上面程序中已经设定了LDI WDT,0001B ;设置看门狗定时为1s

使用特权

评论回复
8
tian111| | 2010-12-9 16:00 | 只看该作者
你首先明白看门狗是为了程序监控用的,用来监控非正常状态

使用特权

评论回复
9
tian111| | 2010-12-9 16:06 | 只看该作者
也就是说正常状态下,看门狗是不会产生复位的

使用特权

评论回复
10
juginhine| | 2010-12-9 16:12 | 只看该作者
WDT也是一个定时器。只是当WDT定时器定时到了的时候,他的作用是使MCU产生复位。这个复位就叫看门狗复位。这个主要是防止MCU进入死循环或者程序跑飞了后,MCU强制复位进入正常状态。
使用WDT的原则上是,在WDT定时到之前将WDT计数器清零以防止WDT产生复位。如LS所说,定时器设定为0.5s的话,假如清除WDT复位放在定时器处理里面的话,那么WDT定时时间一般要长于定时器0.5s。因为WDT是内部RC震荡,一般受温度电压影响可能有一点点误差。为了保险,一般都设置大于定时器长度。至于为什么要重置WDT,就是正常情况下清除WDT计数防止WDT溢出复位。而程序异常后,可能程序不能按照正常流程清除WDT计数器的话,WDT定时到溢出后就会强制MCU复位而将程序回复正常。

使用特权

评论回复
11
happy_10| | 2010-12-9 16:17 | 只看该作者
程序的正常流程中会定时使看门狗重置,防止溢出,产生复位信号

使用特权

评论回复
12
gongche| | 2010-12-9 16:24 | 只看该作者
例子中是每0.5秒去使看门狗重置,防止其产生复位,而不是使其复位

使用特权

评论回复
13
tian111| | 2010-12-9 16:39 | 只看该作者
为使看门狗不会在正常的流程中产生复位信号,用户的软件程序需要在每次看门狗定时器溢出前使其重置

使用特权

评论回复
14
zhuhuis|  楼主 | 2010-12-9 16:48 | 只看该作者
假如我程序的运行时间为2s,看门狗的定时时间为1s,是不是要在程序的运行时间为1s处重置一次看门狗,然后在程序的2s处再重置一次看门狗呢?

使用特权

评论回复
15
tian111| | 2010-12-9 16:56 | 只看该作者
当然

使用特权

评论回复
16
zhuhuis|  楼主 | 2010-12-9 17:16 | 只看该作者
那只要在看门狗定时器溢出前将其重置就可以了吧

使用特权

评论回复
17
zhaoyu2005| | 2010-12-10 09:02 | 只看该作者
16# zhuhuis
对,就是在狗咬(复位)以前,喂下(重置,也叫清零),要不然就出来咬了

使用特权

评论回复
18
warm_ice| | 2010-12-10 11:23 | 只看该作者
WDT是一个计时器,在开启WDT功能后,它会在计数到设定的时间时,产生一个复位,让程序重新运行。

在程序按设定流程正常运行时,会在WDT计数溢出前来清除WDT的计数值,这样就不会产生WDT复位信号,程序正常运行;而一旦程序因某些原因(设计时未能预料到)出现了异常(如程序跑飞),则不一定会按原来正常要求来清除WDT计数值,这样WDT在计数到设定值时,就会产生复位信号,使芯片复位,程序从头运行。

使用特权

评论回复
19
sysdriver| | 2010-12-10 13:18 | 只看该作者
不要期望WDT的作用

如果程序有跑飞的可能,那么不会出产品的,所以WDT貌似没有用。
既然有跑飞的可能,那么永远都可能跑飞。

使用特权

评论回复
20
kperonline| | 2010-12-10 15:49 | 只看该作者
haishi youyong de

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

728

主题

8464

帖子

6

粉丝