打印

430f149为什么么加了看门狗还是偶尔有无法重启的问题

[复制链接]
5147|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
guan_hui|  楼主 | 2012-8-14 22:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有没有使用F149的大虾啊,请教点问题哦,在我开发的产品里,现在遇到一些比较棘手的问题,请高手分享下经验:
    现开发的产品需要考虑低功耗,所有大部分处于休眠状态,定时唤醒,又因为速率关系,主要是用于RFID,所有现用的是8M运行,PCB设计的时候没有预留32K晶振 ,考虑到设备休眠和8M晶振看门狗溢出时间太短,所以我在看门狗这块是这样使用的,在定时器里面自增一个变量,在单片机醒来时在while里面将该变量清零,如果判断到该变量大于某个值(大于休眠时间的一个值)时测认为程序跑飞了,这个时候我在定时器里打开看门狗等着看门狗溢出使设备重启,但现在的情况时,大部分时间设备都可以正常重启,但有时候设备死掉就无法重启了,估计是定时器死掉了,现求高手支招,在我的这款产品需求下,看门狗这块我如何处理呢,不想加外部看门狗,主要是功耗问题

相关帖子

沙发
figo20042005| | 2012-8-14 23:06 | 只看该作者
你要查看下它到底死在哪了,这样就比较容易重启

使用特权

评论回复
板凳
leaderpig| | 2012-8-14 23:47 | 只看该作者
不懂,坐等

使用特权

评论回复
地板
leaderpig| | 2012-8-14 23:47 | 只看该作者
哈哈

使用特权

评论回复
5
dxb_dxb| | 2012-8-23 20:29 | 只看该作者
我们的产品要求的也是低功耗,同样用的是F149,最好把看门狗加上,没有多大的功耗的,如果不想加看门狗,就来个手动复位电路吧!(这样有点麻烦)我们的产品在测试的时候有一次真的死翘翘了,当时也测过了,看门狗喂狗复位信号给出了,可是还是不能复位。可能是焊接的问题吧!所以还是加个“保险”吧

使用特权

评论回复
6
shenmu2012| | 2012-8-24 09:37 | 只看该作者
楼主加上看门狗的,然后单步、多步的仿真调试的看看,就可知道程序死到哪了啊

使用特权

评论回复
7
guan_hui|  楼主 | 2012-8-24 22:44 | 只看该作者
已经确认过了,一般死的话是定时器挂掉了,设计的产品用主要是915MHZ,GPS和GSM三者的集成应用,同时对RFID的实时性要求很高,现选用F149略感吃力,时序多了,长时间运行比较容易导致定时器死掉

使用特权

评论回复
8
hansonhe| | 2012-8-26 23:10 | 只看该作者
如果定时器跑飞最好确认PC指针飞到哪儿去了?是仿真调试确认的吗?这里有个建议:楼主目前的代码编译后还有多少Flash空间?建议搂住剩余的Flash全部填充为空指令。

使用特权

评论回复
9
guan_hui|  楼主 | 2012-8-29 22:07 | 只看该作者
现在最头疼的是就是很难扑捉到这个点,一般连续运行一两天是没问题的,但时间一长就死机了,我是在定时器里面开狗的,能很明显看到系统死机后自动重启,但是长时间运行48小时以上,就彻底死了,没法自动重启

使用特权

评论回复
10
wjzx111056| | 2012-8-30 22:03 | 只看该作者
单步调试看看吧!我的建议是最好是把你的代码进行优化!这样代码简洁更利于解决问题。
   代码优化的原则有:1、选择合适的算法和数据结构
                     2、使用尽量小的数据类型能够使用字符型(char)定义的变量,就不要使用整型(int)变量来定义;能够使用整型变量定义的变量就不要用长整型(long int),能不使用浮点型(float)变量就不要使用浮点型变量。
                      3、使用自加、自减指令
                      4. 减少运算的强度,可以使用运算量小但功能相同的表达式替换原来复杂的的表达式。
                      5.用移位实现乘除法运算

使用特权

评论回复
11
永远的不知| | 2012-8-31 14:04 | 只看该作者
1# guan_hui
如果用内部看门狗,看门狗定时器和mclk是用的一个时钟源吗?最好不要用同意时钟源。
另外,你的看门狗复位逻辑也有些问题,如果程序跑飞了,有可能根本不执行你大于某个值的判断。

使用特权

评论回复
12
zhl100| | 2012-8-31 21:36 | 只看该作者
430中断不能嵌套,中断地方定住了,就出不来

使用特权

评论回复
13
figo20042005| | 2012-9-4 21:20 | 只看该作者
LZ查到问题所在了没?分享下

使用特权

评论回复
14
guan_hui|  楼主 | 2012-9-5 23:28 | 只看该作者
11# 永远的不知
我是在定时器里自增某个变量,在while里清零,同样是在定时器里判断这个值,如果跑飞了,就没法清零,同样如果定时器挂了,就没法喂狗,只要二者有其一不满足,就会复位,还有楼下那位,430中断可以嵌套,在进入中断后,手动打开中断开关就行。纠结了很久始终都没法有效解决,目前就只能加上外部狗用,经反复测试,确定是中断过多所致,产品包含了GPS,GSM,RFID三大模块,处理起来,f149很吃力,关闭一些中断后,无法重启的问题就没有,二代产品已改用STM32来做,现在已经测试OK了,连续老化1周没出问题 ,呵呵,我早就该换的,用f149的时候,经我反复优化,内存还是接近2K,不要与资源较劲了

使用特权

评论回复
15
guan_hui|  楼主 | 2012-9-5 23:29 | 只看该作者
11# 永远的不知
我是在定时器里自增某个变量,在while里清零,同样是在定时器里判断这个值,如果跑飞了,就没法清零,同样如果定时器挂了,就没法喂狗,只要二者有其一不满足,就会复位,还有楼下那位,430中断可以嵌套,在进入中断后,手动打开中断开关就行。

使用特权

评论回复
16
happybird21| | 2012-9-7 17:05 | 只看该作者
编写一些中断测试程序试试吧,有时候程序会跑飞

使用特权

评论回复
17
firstblood| | 2012-9-7 18:09 | 只看该作者
建议楼主检查下供电的电源部分的啊,供电不正常也会引起死机的

使用特权

评论回复
18
GG_GG| | 2012-9-8 09:21 | 只看该作者
时钟配置的问题吧!

使用特权

评论回复
19
梅花望青竹| | 2012-9-8 21:52 | 只看该作者
肯能变量处理的问题

使用特权

评论回复
20
51xlf| | 2012-9-9 10:40 | 只看该作者
看看变量变化的时候,是否超出了变化范围

使用特权

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

本版积分规则

1

主题

10

帖子

0

粉丝