请教各位,c8051f310看门狗

[复制链接]
 楼主| xbyu520 发表于 2014-1-4 13:16 | 显示全部楼层 |阅读模式
一般情况下,程序没问题。但产品使用场合各种各样,于是就想开通c8051f310的看门狗,听说是硬件狗。
可是为什么开了狗,就不正常。关狗就正常呢。我配置狗65.3ms溢出一次,在定时器3 中断服务程序中清狗。30毫秒进T3中断一次。
 楼主| xbyu520 发表于 2014-1-4 13:19 | 显示全部楼层
这个是我的部分程序截图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| xbyu520 发表于 2014-1-4 13:21 | 显示全部楼层
已经设置成T3 30毫秒中断一次的。看门狗65.3毫秒。应该没问题的啊
 楼主| xbyu520 发表于 2014-1-4 13:22 | 显示全部楼层
这个是中断服务程序中清0

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| xbyu520 发表于 2014-1-4 13:25 | 显示全部楼层
使用的外部12Mhz晶体振荡器作为sysclk 12分频后给PCA
ningling_21 发表于 2014-1-4 14:26 | 显示全部楼层
正确的做法是:
先关狗,再初始化;
在主程序中定时喂狗;
禁止在中断中喂狗。
 楼主| xbyu520 发表于 2014-1-4 15:33 | 显示全部楼层
定时器中断中喂狗,为什么不可以呢?不是一样的吗?程序要是死了,不是一样不能喂狗,然后狗自动复位,程序恢复正常。
ayb_ice 发表于 2014-1-4 15:57 | 显示全部楼层
定时喂狗是对的
但不知道你程序是否正确

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
ayb_ice 发表于 2014-1-4 15:58 | 显示全部楼层
RT:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| xbyu520 发表于 2014-1-4 16:11 | 显示全部楼层
刚刚百度了一下,有人说不能在中断中喂狗,理由是会发生主循环跑飞了,但是定时器中断还正常。这样狗就形同虚设了。关键是我主程序循环一遍需要较长时间,我现在选择的PCA时钟不能改(改了很多东西要重调)。喂狗  PCA0CPH4 = 0x00;只能65.3毫秒内进行,怎么办?????主程序时间已经比65.3毫秒多很多了
 楼主| xbyu520 发表于 2014-1-4 16:15 | 显示全部楼层
重新写了下最小程序,发现可以在定时器中断服务程序中掌控狗了。但主程序循环一遍需要的时间长,喂狗时间又很短65.3毫秒,该怎么处理呢?
 楼主| xbyu520 发表于 2014-1-4 16:31 | 显示全部楼层

重新写了下最小程序,发现可以在定时器中断服务程序中掌控狗了。但主程序循环一遍需要的时间长,喂狗时间又很短65.3毫秒,如果在主程序中喂狗,该怎么处理呢?
 楼主| xbyu520 发表于 2014-1-4 16:32 | 显示全部楼层


重新写了下最小程序,发现可以在定时器中断服务程序中掌控狗了。但主程序循环一遍需要的时间长,喂狗时间又很短65.3毫秒,如果在主程序中喂狗,该怎么处理呢
gx_huang 发表于 2014-1-4 16:58 | 显示全部楼层
给你一个350的参考初始化代码:
        PCA0MD&=0xbf;
        TMOD=0x02;TH0=0;TR0=1;
        PCA0MD=0x04;        //采用T0时钟输入
        PCA0CPL2=0x25;
        PCA0MD|=0x20;        //使能WDT LOCK
        PCA0MD|=0x40;        //使能WDT
        PCA0CPH2=0;                //清WDT
WDT时钟选择T0时钟,溢出周期就会很长的。
不要自己都不仔细看数据手册的。
CPS2-0=001,选择T0溢出作为时钟。

即使WDT周期短,也应该在主循环中分次插入清看门狗指令。
gx_huang 发表于 2014-1-4 17:00 | 显示全部楼层
选择了一个MCU,就意味着你需要话费一定时间搞清楚各种内部资源。
受不了了 发表于 2014-1-4 17:01 来自手机 | 显示全部楼层
既然狗不能养好,以前没狗时好好的,又何必自找麻烦养狗呢
ningling_21 发表于 2014-1-4 17:23 | 显示全部楼层
xbyu520 发表于 2014-1-4 16:15
重新写了下最小程序,发现可以在定时器中断服务程序中掌控狗了。但主程序循环一遍需要的时间长,喂狗时间又 ...

改用外部的狗,1秒喂狗一次甚至更长都可以啦...
gx_huang 发表于 2014-1-4 17:29 | 显示全部楼层
ningling_21 发表于 2014-1-4 17:23
改用外部的狗,1秒喂狗一次甚至更长都可以啦...

310的WDT不可能这么短的,可以很长的。
是LZ自己没有搞清楚而已。
dirtwillfly 发表于 2014-1-4 20:48 | 显示全部楼层
把喂狗的时间设置的长一点就可以了
 楼主| xbyu520 发表于 2014-1-5 08:26 | 显示全部楼层
感谢各位朋友的热情帮助,我仔细看了一下数据手册,发现8位pwm信号频率和PCA时钟源有关,看门狗周期又和PCA时钟源有关。如果我想改变看门狗周期,pwm信号的频率就必须要改变了,pwm驱动设备要重新调整了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:工作不养闲人,团队不养懒人。赚不到钱赚知识,赚不到知识赚经历,赚不到经历赚阅历,让人迷茫的原因只有一

43

主题

854

帖子

6

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