找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4106|回复: 17
打印 上一主题 下一主题
收起左侧

单片机看门狗设定到了4秒复位,为何会经常性地复位?

[复制链接]
跳转到指定楼层
楼主
    近日做一产品,用的是STC8A8KS4A12单片机,看门狗设定到了4秒复位,为何会经常性地复位? 运行的程序没有读写数组或指针类的,不会有数据溢出,只是一些IO操作,哪位大师给些建议。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:401564 发表于 2020-8-11 22:04 | 只看该作者
看你喂狗的位置对不对,不对的话会超时复位的
回复

使用道具 举报

板凳
ID:804115 发表于 2020-8-11 22:13 | 只看该作者
是否有周期性喂狗,且喂狗周期小于4秒?
回复

使用道具 举报

地板
ID:813295 发表于 2020-8-11 23:34 | 只看该作者
1692483014 发表于 2020-8-11 22:13
是否有周期性喂狗,且喂狗周期小于4秒?

喂狗的周期从1ms到1000ms,绝没有超过4秒的机会
回复

使用道具 举报

5#
ID:213173 发表于 2020-8-12 06:03 | 只看该作者
1.看门狗设置不当
2.喂狗时间不当
3.喂狗位置不当
4.程序跑飞导致看门狗复位
5.其它原因导致复位
程序正常工作不会触发看门狗复位,所以也就不能直接观察到看门狗复位,需要验证看门狗是否工作正常。可以在按键程序里加一句死循环来验证看门狗。这是很容易做的。
回复

使用道具 举报

6#
ID:401564 发表于 2020-8-12 08:13 | 只看该作者
你不觉得应该把电路和代码上传上来看一下吗?喂狗周期小于4秒的话,程序肯定是没有问题的了
那就有可能是电路本身布线或者原理的问题了
回复

使用道具 举报

7#
ID:235954 发表于 2020-8-12 08:38 | 只看该作者
短时间进行系统参数初始化一次,增强稳定性
回复

使用道具 举报

8#
ID:654028 发表于 2020-8-12 09:22 | 只看该作者
看门狗有问题确实不好找,只能自己把程序从头到尾走一遍,看看有没有死循环没有加喂狗,或者哪里时间比较长没加,或者是快喂狗的时候程序跑去其它地方运行了,导致喂狗不成功
回复

使用道具 举报

9#
ID:123289 发表于 2020-8-12 11:25 | 只看该作者
做一个程序跟踪标记:BJ(公共变量).
1、程序一开始就“显示”它(你能有知道它是什么值即可,未必真的要显示)
2、你给每一个程序段、小节都设置一个代码,且在本段、小节开始时,将它写入到BJ中。
3、这样当看门狗动作后,BJ值就能指出你在哪里出了问题。
回复

使用道具 举报

10#
ID:804115 发表于 2020-8-12 13:22 | 只看该作者
push3675 发表于 2020-8-11 23:34
喂狗的周期从1ms到1000ms,绝没有超过4秒的机会

那好,按照如下方式调试:
1. 屏蔽掉所有与看门狗无关的代码,时钟配置的可以留一下,如果需要串口打印,则也留一下串口;
2. 关闭所有中断;
3. while(1)大循环中,延迟一个小于2秒的时间喂狗;
如果还不行,那就看看你配置的狗的时间是不是正常的,还有就是确认的你的狗到底有没有喂成功。

如果这样可以了,那么就一个功能块,一个功能块将屏蔽掉的代码添加回去,直到出现复位,再分析这个功能块是如何造成复位的。
回复

使用道具 举报

11#
ID:813295 发表于 2020-8-12 20:53 | 只看该作者
yzwzfyz 发表于 2020-8-12 11:25
做一个程序跟踪标记:BJ(公共变量).
1、程序一开始就“显示”它(你能有知道它是什么值即可,未必真的要 ...

这是个好办法,学习了,刚好这块板子有数码显示,一定要试试!
回复

使用道具 举报

12#
ID:813295 发表于 2020-8-12 21:20 | 只看该作者
非常感谢这么多朋友的解答,现在细说下我做的事情:
1. 初始化完毕后进入循环,每次循环只做一件事并同时喂狗。每次做的事情不同,只是切换不同的模拟开关去采样相对应的电压, 加不同的延时多次采样,时间最长的要持续到1秒(看门狗4秒溢出)才完成,采样的数值结果进行累加。
2. 以上操作只是在包含切换开关动作的中才会出现跑飞的现象,屏蔽掉这些动作后一切正常。
3. 所有这些操作在MSP430AFE上从来不出问题,移植到STC上就出问题,问题现象包括,死机(看门狗失效)、自己复位(不超时)、内存乱套、Flash内容乱套。
4. MSP430的板子和现在的板子都是双层布线,单片机背面除几条引出线都是敷铜,无大电流器件,离单片机3cm远处的模拟开关切换的是12V300mA的纯电阻负载。
综合以上因素,才开始怀疑STC8A8K的抗干扰性和稳定性的问题。
回复

使用道具 举报

13#
ID:213173 发表于 2020-8-13 08:20 | 只看该作者
push3675 发表于 2020-8-12 21:20
非常感谢这么多朋友的解答,现在细说下我做的事情:
1. 初始化完毕后进入循环,每次循环只做一件事并同时 ...

用不同品牌的MCU移植程序要熟悉两者硬件特性,程序也要做相应调整。STC8系列还不算是一款成熟产品,ADC功能还不完善,不宜用在工业环。在使用STC15W408AS的看门狗时利用PCON寄存器判断看门狗冷/热复位+EEPROM测试,如果不是刻意加标记几乎感觉不到复位动作。从命名规则看STC8还不是工业级产品。产品手册也没有提《全部175℃ 8小时高温烘烤,高品质制造保证》。




回复

使用道具 举报

14#
ID:401564 发表于 2020-8-13 08:24 | 只看该作者
STC的抗干扰性能其实一般,并没有它自己说的那么好
但从楼主的描述来看,基本可以认为是程序的问题,要么再认真检查一下,要么把电路和代码上传,也许是可以找到答案的
抗干扰这种东西是不太好检测的,用过那么多次的STC8A4K,目前还没有出现过稳定性的问题,大多还是自己代码本身的问题
只要在大电流,开关管和电感附近,一般是不会有事的
移植这东西就不好说了,要不是什么大程序,一般还不如重写来得快
回复

使用道具 举报

15#
ID:813295 发表于 2020-8-13 21:00 | 只看该作者
Y_G_G 发表于 2020-8-13 08:24
STC的抗干扰性能其实一般,并没有它自己说的那么好
但从楼主的描述来看,基本可以认为是程序的问题,要么再认 ...

说起移植需解释一下,该产品初期开发是用的是STC15W408AS, 所有功能都是没有问题的,只是8位的ADC满足不了要求,后来换成了MSP430AFE253,已经生产了上万件,一切都很正常,现在有了要加数码管显示功能的要求,所以才换成STC8A8K,这两种单片机的程序已经是滚瓜烂熟,不存在移植过程产生的错误。

    经各位朋友的热心解答,问题基本定位在被干扰上了,初步结论便是STC8A8K抗干扰能力不强,不如STC15W408,下一步打算换成STM32F031继续试验,有结果了再来向大家汇报。
回复

使用道具 举报

16#
ID:401564 发表于 2020-8-14 08:21 | 只看该作者
push3675 发表于 2020-8-13 21:00
说起移植需解释一下,该产品初期开发是用的是STC15W408AS, 所有功能都是没有问题的,只是8位的ADC满足不 ...

一开始就是用STC15系列的,如果可以的话,换成STC8A系列就更应该是可以的
STC在抗干扰方面的性能的确一般,如果STC15系列没有干扰方面的问题,那么换成STC8A系列就应该是没有问题的
但,所谓的干扰实际上一定是要有干扰源的,大电流,高频开关管或者电感,又或者是RF等等高级信号,如果没有的话,就不一定是干扰的问题
STC的产品本身就是DIY或者测试架用的最好,如果是批量的话,特别是上10K以上,最好是不要用,真心的不放心,虽然个人用STC最多,
如果是感觉是干扰的问题,最好是换PIC12F系列,价格和STC8A差不多,PIC抗干扰基本是没的说了,如果连PIC12F系列都不行,那就只能换PIC的OTP型单片机了,听说这好像是最强悍的,本人没用过
回复

使用道具 举报

17#
ID:235954 发表于 2020-8-18 16:42 | 只看该作者
我设置4MS喂一次狗
回复

使用道具 举报

18#
ID:813295 发表于 2020-11-10 20:05 | 只看该作者
    向大家汇报一下,前面说换成STM32F030进行试验,现在已经彻底完工,AD测量精度、抗干扰性能都已达到了要求,现在已经正式投产。这个意法单片机我最喜欢的是ADC的自校准功能,如果不经分压电路直接采样,那么采样结果基本就可以当真实数据来用,不再需要另外校准。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表