大家来看看 这样养狗行吗?
本帖最后由 wind2100 于 2014-7-7 15:17 编辑去一新公司 之前的程序这样养狗!,, 有人反应 半小时 或是一个小时 有复位,正在找硬件和软件的问题.
"/* Watchdog mode -> reset after expired time */
/* WDT is clocked by fSMCLK (assumed 1MHz) */
#define WDT_MRST_32 (WDTPW+WDTCNTCL) /* 32ms interval (default) */"
.....
BCSCTL1 = CALBC1_8MHZ;
DCOCTL= CALDCO_8MHZ;
........
for (i=160;i>0;i--)
{
if (x){
TA1CCTL1 &= ~CCIFG;
WDTCTL = WDT_MRST_32;
while (!(TA1CCTL1 & CCIFG));
TA1CCR1 = DATA*Multiplier;
WDTCTL = WDT_MRST_32;
Delay_mS(20);
WDTCTL = WDT_MRST_32;
}
if (y){
TA1CCTL2 &= ~CCIFG;
WDTCTL = WDT_MRST_32;
while (!(TA1CCTL2 & CCIFG));
TA1CCR2 = DATA*Multiplier;
WDTCTL = WDT_MRST_32;
Delay_mS(20);
WDTCTL = WDT_MRST_32;
}
}
......... 被LZ的标题吸引过来了 x 且 y 条件32ms都不满足,狗就咬了 swap2013 发表于 2014-7-7 16:33
x 且 y 条件32ms都不满足,狗就咬了
满足一样有可能 会咬人
Delay_mS(20);里面还有中断啊
初一看 肯定有问题 8M的情况下 4MS就狗就 咬人了.
还DELAY 20MS ,
再一测试Delay_mS(20);只有 2.5MS
还是通过,看起来狗不会咬人了,
但是....这种写法
你们也这样干吗? 奶奶的我是被楼主的标题吸过来的 WEIZ666 发表于 2014-7-7 17:06
奶奶的我是被楼主的标题吸过来的
这标题 没错吧 !!! wind2100 发表于 2014-7-7 17:07
这标题 没错吧 !!!
你说喂狗就没错了 喂狗 和养狗 是有点区别的 养了你才得喂呀没养你还喂啥
老是饿着狗不如不养 wind2100 发表于 2014-7-7 16:57
满足一样有可能 会咬人
Delay_mS(20);里面还有中断啊
还是你想得多,一般我不这么用狗
实话说,用不好狗不用也没关系 swap2013 发表于 2014-7-8 11:43
还是你想得多,一般我不这么用狗
实话说,用不好狗不用也没关系
是的 软件看门狗纯对复杂软件防止软件出错用的,
并不能对一些复杂电子环境,来的各种干扰造成的死机或是程序跑飞.
除非软硬兼施
何况这MSP430 的看门狗还是 主时钟下面分的频,非独立时钟.
..........................
后面证实了,就是这个狗 没养好 , 现在重养一条以前4MS就饿了,现在搞了一个几S才饿的狗.
(看看那个程序里面,那么多DELAY WHILE有时要等上10多MS执行一次,这怎么喂得饱. 还不知道哪里喂. )
借这个话题 也告戒新手,不要乱养狗.要养就要养好.我记得之前看到过有这样的贴.
现在的情况是已经生产了几千套,这个MSP430有FUSE, 要重换IC. 不像其它IC还可以清除升级.
正在测试中呢....
wind2100 发表于 2014-7-8 13:40
是的 软件看门狗纯对复杂软件防止软件出错用的,
并不能对一些复杂电子环境,来的各种干扰造成的死机或 ...
JTAG读烧断了,还可以用BSL写进去的 那脚太小,SSOP20 引脚还没引出来...
我是只在主循环里喂一次狗,
程序中delay很少,即使用也us、ns级的延时,确保程序能在很短时间内循环一次,不要让CPU在那死等。 yu_studio 发表于 2014-7-9 09:22
我是只在主循环里喂一次狗,
程序中delay很少,即使用也us、ns级的延时,确保程序能在很短时间内循环一次, ...
终于 有经验的站出来了 看出问题了. 有可能得狂犬病
页:
[1]