看门狗,又见看门狗……

[复制链接]
2790|9
 楼主| gexingyouxian 发表于 2012-2-26 20:07 | 显示全部楼层 |阅读模式
我现在的看门狗初始化是:

WDTCTL = WDTPW+WDTCNTCL+WDTSSEL+WDTIS0; (WDTCTL = WDT_ARST_250;)

IE1|=WDTIE;

每次主循环末尾刷新看门狗:WDTCTL = WDTPW+WDTCNTCL+WDTSSEL+WDTIS0;


我想实现当程序跑飞时的看门狗复位,比如当判断某些标志不正确时,看门狗复位。怎么做?

例如:我现在想试试看按左键程序时,程序复位。我加了WDTCTL=WDTPW+WDTCNTCL+WDTSSEL;

可是怎么看不出程序重新复位的迹象?
 楼主| gexingyouxian 发表于 2012-2-26 20:07 | 显示全部楼层
看门狗实现的这种复位是不是让程序从main()最开头重新执行?所有寄存器都回到初始值?
acer4736 发表于 2012-2-26 20:38 | 显示全部楼层
例如:我现在想试试看按左键程序时,程序复位。我加了WDTCTL=WDTPW+WDTCNTCL+WDTSSEL;

WDTCTL=WDTPW+WDTCNTCL+WDTSSEL; 的意思是看门狗计数器清0.你要看看你的按键程序是死循环吗?要不把你的程序发出来看看.我的看门狗工作的可正常了.
czdo 发表于 2012-2-26 20:47 | 显示全部楼层
hold住 发表于 2012-2-26 21:14 | 显示全部楼层
可以在你关注的执行那里设置标记,每次喂够之前判断这些标记是否正常,如果正常,那么喂狗,如果不正常跳过喂够。这样就可以啦。
jinpaidianzi 发表于 2012-2-26 21:40 | 显示全部楼层
看门狗实现的这种复位是不是让程序从main()最开头重新执行?所有寄存器都回到初始值?


复位是不是基本上看不出来?时间很快
teabottle 发表于 2012-2-26 21:50 | 显示全部楼层
看门狗实现的复位是让程序从头重新执行,所有寄存器都回到初始值,


复位是能用I/O口状态变化看出来的
wangjinlili 发表于 2012-2-26 22:00 | 显示全部楼层
复位后I/O口OUT不变 DIR不是都清零了吗?
modernthink 发表于 2012-2-27 13:01 | 显示全部楼层
用WDT怎么实现“当判断某些标志不正确时,看门狗复位”,只能用软件自己判断,然后让程序复位吧
liugp25 发表于 2012-2-27 15:01 | 显示全部楼层
进来学习下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

197

主题

1530

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部