找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3557|回复: 5
收起左侧

单片机看门狗与中断冲突问题

[复制链接]
ID:477651 发表于 2019-9-4 21:08 | 显示全部楼层 |阅读模式
程序中添加了看门狗保护,防止死机。喂狗采用定时器中断实现,该中断设置了最高优先级。但该程序与源程序的定时器0中断、串口中断产生冲突,源程序定时器0中断用于产生时间,喂狗中断会导致计时不准确,串口通信不可靠等问题。求助,谢谢。
回复

使用道具 举报

ID:607671 发表于 2019-9-4 23:08 | 显示全部楼层
调整喂狗时间不就行了
回复

使用道具 举报

ID:401564 发表于 2019-9-5 01:48 | 显示全部楼层
喂狗怎么用定时器中断来干呢?它会被更高等级的中断打断的,很有可能喂狗不成功而复位的
你可以设定看门狗的时间为几秒钟,放在主函数或者循环中,看门狗的时间要很长,但喂狗的时间大概是是几百毫秒喂一次,这样一来,多个中断被触发的时候,看门狗还有很长的时间
回复

使用道具 举报

ID:477651 发表于 2019-9-5 09:16 | 显示全部楼层
Y_G_G 发表于 2019-9-5 01:48
喂狗怎么用定时器中断来干呢?它会被更高等级的中断打断的,很有可能喂狗不成功而复位的
你可以设定看门狗的 ...

用的是c8051f020单片机,22.1184MHZ晶振,看门狗的复位时长计算公式为[4^(3+WDTCN[2:0])] × TSYSCLK ,没办法实现很长时间的设置,最多几十毫秒
回复

使用道具 举报

ID:401564 发表于 2019-9-5 22:27 | 显示全部楼层
这IC的看门狗时钟是不可调节的,用22M晶振的话,看门狗最多可以是50毫秒左右
但这么长的时间还不行吗?
如果还不行的话就只能是到处喂狗了,你可以在别的中断进入之后就喂狗一次,延时函数喂狗一次,这都没有关系的了,但你不能专门的一个中断来喂狗,这个中断一旦被更高等级的中断打断了,就很有可能会复位的
你可以这样:进入串口中断喂一次,进入定时器中断喂一次,保证在进入执行时间很长的函数之后,第一件事就是喂狗
回复

使用道具 举报

ID:477651 发表于 2019-9-6 08:54 | 显示全部楼层
Y_G_G 发表于 2019-9-5 22:27
这IC的看门狗时钟是不可调节的,用22M晶振的话,看门狗最多可以是50毫秒左右
但这么长的时间还不行吗?
如果 ...

谢谢,也只能这样试试了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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