对于有WATCHDOG功能的单片机,如何去检查确认其是否起作用?比如说有的单片机要在程序执行HANGUP时,WATCHDOG才执行RESET,如何确认呢?

答:以HOLTEK最基本的I/O单片机HT48R05A-1为例说明。在单片机特殊寄存器STATUS中有PD和TO位,它们是可读不可写的。读取PD和TO的值,就可以判断出不同的复位原因,例如上电复位、正常工作下RES复位,HALT状态下RES复位、正常工作下WDT复位、以及HALT状态下WDT复位。因此只需要判断此两位的数值,就可以确认WDT是否起作用了。
如果需要WDT在HALT(即HANGUP)状态时发生复位动作,那么只需在正常工作时正确的喂狗(即CLR WDT),且看门狗的时钟来源选择内部RC时钟,当程序进入HALT状态后一旦WDT溢出会发生复位了。

生成海报
点赞 0

创世纪

单片机学习,电子制作DIY学习与分享,各种新鲜的,有趣的,好玩的,一起来吧!机器人、无人机、树莓派/Raspberry Pi、arduino、极客、创客等

暂无评论

相关推荐

C51单片机使用点滴

8051单片机是我们最常见的一种单片机,我用8051已经很久了,也教过一段时间的单片机课程,在这里把自己的心得与大家分享一下。 一、硬件部分 1、一定要记得

在电路上有一个温控开关串联在供电回路,正常情况电阻很小,温度升高后,电阻增加。这时cpu的工作电压大概在3.1v左右,好象是工作在复位状态,液晶不断闪烁,想在软件中这样判断:如果有连续5次上电复位,且每次间隔不超过100ms,就关闭所有功能。但是这样的话,cpu会一直工作在复位状态,会不会有问题?

答:也就是说,电压会在3.1V左右波动,而CPU的最低工作电压是在3.1V,所以会造成CPU一直复位。如果是这种情况,可能会造成CPU复位不正常。正常的上电复位是指电源电压从0V上升到VDD;掉电复位是指电源电压从VDD跌落到0V,后又恢复到VDD的过程;所以不管怎样,复位过程必须是电压从0V上升到VDD的过程。如果象所说的那样,电压从3.1V以上掉到3.1V以下,而又没有完全掉到0V,然后又上升,这样很容易造成CPU复位不完全而无法正常工作。 一般的解决方法是采用低电压复位电路,可以采用三极管复位电路,或采用低电压复位IC,如HOLTEK的HT70xx系列就是很好的低电压复位IC,可以到以下网址查阅到相关的资料:http://www.holtek.com.cn/products/power_4.htm

在此以PIC16F87X为例:MCU处于sleep时,用WDT定时,如何使其在宽温度范围内工作定时相对一致,误差尽量小呢?

答:一般MCU处于sleep时,WDT(看门狗)是停止状态,用WDT的主要目的,是在程序运行当中,MCU受到外面杂讯干扰,导致程序运行乱掉或MCU当掉,此时就须WDT(一般WDT时钟来源是选用内部RC振荡)来自救及做复位动作,而当MCU处于sleep时,其MCU是处于省电模式状态,因主振停止所以程序不运行,此时就WDT可以停止动作(此模式WDT时钟来源是选用主晶振系统),如果MCU处于sleep时,又要WDT能继续动作,此时只有一个目的,就是用WDT的时间段来做定时工作(因程序停止运行,无法清除WDT计数器,故WDT计数一定会溢出),而在这个模式下因主振停止(因要省电)的WDT时钟来源只能选用内部RC振荡,所以RC振荡的频率会受工作温度及电压变动而产生飘移,所以要省电模式下不建议用WDT来做定时。 如果要省电模式下做定时工作,有一个很好建议,可采用HOLTEK MCU双振荡系列,如HT49XX,HT47XX,HT48XX,HT46R6X等系列,其优点在省电模式下,其主振停止而保持第二振荡系统维持振荡,此振荡系统为RTC(Real Time Clock 32768Hz振荡系统),工作电流维持在2~3uA(工作电压3V)之间,又因是用32768晶振,不受工作温度及电压变动的影响,可准确做定时工作。

在很多情况下,以单片机为主控制器的测量系统要长时间保持无故障运行,因此其自诊断就成为关键。请介绍一下有关单片机系统的故障自诊断的一些知识?

答:要保证系统可以长时间故障运行,防止干扰是很重要的。最有效的方法是去除干扰源、隔断干扰路径,但往往很难做到,所以只能看单片机抗干扰能力够不够强了。单片机干扰最常见的现象就是复位;至于程序跑飞,其实也可以用软件陷阱和看门狗将程序拉回到复位状态;所以单片机软件抗干扰最重要的是处理好复位状态。 一般单片机都会有一些标志寄存器,可以用来判断复位原因;另外也可以自己在RAM中埋一些标志。在每次程序复位时,通过判断这些标志,可以判断出不同的复位原因;还可以根据不同的标志直接跳到相应的程序。这样可以使程序运行有连续性,用户在使用时也不会察觉到程序被重新复位过。