目的:用STC15W201S实现对外部主芯片电路的看门狗(以下统称外部看门狗);同时确保自身稳定,也设计自身的看门狗程序(以下统称内部看门狗)。
描述:外部主芯片定时向STC15W201S的引脚P3.3发送STATUS1脉冲信 ,STC15W201S检测信 ,若超过一段时间未检测到脉冲信 ,通过引脚P1.0发送POWERCONTROL长脉冲信 给电源将其断电重启。
实现:主芯片每6s发送一个500ms的高电平喂狗脉冲信 ,考虑某些意外因素和项目考虑,看门狗设计成每30s判断一次该30s内喂狗脉冲次数,大于等于4次则说明主芯片正常,否则为不正常;若超过3分钟的不正常状态,则发送60s的低电平信 重启电源。
思路:外部看门狗,由于引脚P3.3为外部中断1的引脚,可以用中断和定时器来判断发过来的脉冲信 是否为喂狗信 。内部看门狗则使用芯片自带的看门狗寄存器功能。
下图为STC15W201S系列单片机引脚图:
(图像取自STCMCU官 文档)
本项目所需的内容不多
由于该单片机有两个定时/计数器T0和T2,作为定时器,T0有4种工作方式选择,T2只有一种(16位自动重装载)。本模块只需要T0和T2都用16位自动重装载,T0用于累计计算外部看门狗脉冲长度,T2用于内部看门狗循环喂狗。
外部看门狗:
将外部中断1设为上升和下降沿均可触发,当上升沿触发时,开定时器0,当下降沿触发,关定时器0,计算这一个脉冲的长度,当大于300ms时,判断为喂狗脉冲。
内部看门狗:
使用的看门狗寄存器和定时器2来设计,看门狗寄存器设计为4.19秒预装时间,超过4.19秒将重启单片机,定时器2的中断设计为每0.5秒喂一次狗,可以判断单片机运行状况是否正常。
(PS:本来想画流程图,但是这CSDN的模板写不了就算了)
代码如下
设计的主要问题是中断和定时器的各种寄存器的选择,都可以在STCMCU官 上可以查询,找到模板。程序灵活多变,可根据需求更改逻辑。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!