历史上的今天
今天是:2025年06月11日(星期三)
2020年06月11日 | 单片机系统软件看门狗的设计思路解析
2020-06-11 来源:elecfans
硬件看门狗是利用了一个定时器,来监控主程序的运行,也就是说在主程序的运行过程中,我们要在定时时间到之前对定时器进行复位如果出现死循环,或者说PC指针不能回来。那么定时时间到后就会使单片机复位。常用的WDT芯片如MAX813,5045,IMP 813等,价格4~10元不等。

软件看门狗
软件看门狗技术的原理和这差不多,只不过是用软件的方法实现,我们还是以51系列来讲,我们知道在51单片机中有两个定时器,我们就可以用这两个定时器来对主程序的运行进行监控。我们可以对T0设定一定的定时时间,当产生定时中断的时候对一个变量进行赋值,而这个变量在主程序运行的开始已经有了一个初值,在这里我们要设定的定时值要小于主程序的运行时间,这样在主程序的尾部对变量的值进行判断,如果值发生了预期的变化,就说明T0中断正常,如果没有发生变化则使程序复位。
对于T1我们用来监控主程序的运行,我们给T1设定一定的定时时间,在主程序中对其进行复位,如果不能在一定的时间里对其进行复位,T1 的定时中断就会使单片机复位。在这里T1的定时时间要设的大于主程序的运行时间,给主程序留有一定的的余量。而T1的中断正常与否我们再由T0定时中断子程序来监视。这样就够成了一个循环,T0监视T1,T1监视主程序,主程序又来监视T0,从而保证系统的稳定运行。
系统软件"看门狗"的设计思路:
1.看门狗定时器T0的设置。在初始化程序块中设置T0的工作方式,并开启中断和计数功能。系统Fosc=12 MHz,T0为16位计数器,最大计数值为(2的16次方)-1=65 535,T0输入计数频率是.Fosc/12,溢出周期为(65 535+1)/1=65 536(μs)。
2.计算主控程序循环一次的耗时。考虑系统各功能模块及其循环次数,本系统主控制程序的运行时间约为16.6 ms。系统设置"看门狗"定时器T0定时30 ms(T0的初值为65 536-30 000=35 536)。主控程序的每次循环都将刷新T0的初值。如程序进入"死循环"而T0的初值在30 ms内未被刷新,这时"看门狗"定时器T0将溢出并申请中断。
3.设计T0溢出所对应的中断服务程序。此子程序只须一条指令,即在T0对应的中断向量地址(000BH)写入"无条件转移"命令,把计算机拖回整个程序的第一行,对单片机重新进行初始化并获得正确的执行顺序。
下一篇:单片机开发规则与注意事项
史海拾趣
|
請問各位高手~ 現在我已經在手機的\"開始\"->\"設定\"->\"連線\" 中新增一個GPRS連線,名稱為eeworld 那請問一下我在REGISTRY當中如何找到 我在HKEY_LOCAL_MACHINE\\Comm\\ConnMgr\\Providers\\{7C4B7A37-5FF7-4bc1-80F6-5DA7870BB1AA}\\Connec ...… 查看全部问答> |
|
CPU:CORE2 E4500 795 主板:技嘉P31-DS3L 600 内存:KINGSTON 1G*2 DDR2-800 150*2 硬盘:酷鱼160G ...… 查看全部问答> |
|
某一种仪器可以通过数据线和电脑连接,也就是信号能够通过电脑进行处理,这种信号是数字的还是模拟的? 另外,如果一种仪器比如手持测电流的能立即显示在小屏幕上的,是数字信号还是模拟信号? … 查看全部问答> |
|
配置sqlce连接管理器里面的虚拟目录后 在设备上输入http://服务器名/虚拟目录名/sscesa20.dll之后显示找不到页面 问题如上 创建虚拟目录时使用的是匿名访问 或Basic athentication 两种方式 接着下一步 到如图所示 c:\\33.bmp 这里就不知道要不要选中了 我是没有选 HTTP pemissions 也只选中了 只读 和 目录浏览 有漏洞或者错误的地方请大家帮忙指出来 ...… 查看全部问答> |
|
初学单片机,部分程序如下: void timer0() interrupt 1 { TMOD=0x01; TH0=(65535-50000)/256; TL0=(65535-50000)%256; EA=1; ET0=1; TR0=1; tt1++; if(tt1==20) { LIGHT=~ LIGHT; tt1=0; } } ...… 查看全部问答> |




