大家好:我今天接到一个比较棘手的任务,项目以前是经理做的,因为偶尔会产生外部中断导致系统复位的问题,所以我们的产品一直没有能顺利推向市场。现象大致如下:在很多情况下外部中断不会出现复位,但偶尔有外部中断发生之后,大概经过1S钟这样,似乎看门狗起了作用就产生复位。不知道大伙有没有遇到过,麻烦大伙帮忙分析分析,多谢!
这是程序编制有问题所致。开启看门狗后,一定要在其溢出周期内清零看门狗定时器即“喂狗”,否则看门狗将引发复位。中断程序设计不合理运行时间过长,大于看门狗溢出周期,或者,中断管理有问题导致周而复始的进入中断而长时间没有喂狗,以及,进入中断后程序因一些变量的非受控陷入死循环等,这些都将导致非正常的看门狗复位。
好好的检查程序吧,这实在是低级的不能再低级的错误了。
上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
如果说看门狗溢出,那么在正常试的情况下一般都不会出现问题,这个只是偶尔会出现问题,而且没有规律,如果说看门狗没有及时喂狗这个我肯定是知道的。然后你说的中断管理的问题,中断里面我现在已经精简了代码,只有几个标志位,而且没有在中断里面调用别函数,也已经清除了中断标志位,或许你可以和我说说这个MSP430管理中断的一些要点,谢谢!!
你的这个外部中断引脚有没有处理好,会不会产生了干扰,使晶振停振了。430自身的抗干扰能力比较差,需要布板时自己处理好。
我很好奇你的外部中断是什么,你是如何确定 外部中断 与 复位 之间的必然关联的
曾经我们智能赛车也出现了偶尔复位的情况,最开始怀疑静电,做了各种屏蔽都不管用,后来发现是光电编码器输出的问题,换了一个合适的上拉电阻就好了,再也没有意外复位
我想说的是不要仅仅听别人对问题的描述,还要自己去具体分析查看,找到根源才能解决问题
如果可能的话,试着简化系统,一项一项删除,看看去掉哪块之后问题没了
今天排查了一天,还没有找到原因,测试了整个下午,出现偶然复位的情况就两次。就像楼上说的,可能根本不是中断的问题,或许是别的原因导致的。。。。这段进入休眠和退出休眠的代码要重新写一遍,然后再仔细测试。之前因为这个问题很隐蔽,测试工程师也没有发现,只能自己边写边测试了