C51环境下W77E58Watchdog的应用

来源 :电子产品世界 | 被引量 : 0次 | 上传用户:flyby
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:在单片机的应用中,逐步引入了高级语言,C语言就是其中一种。但是如果C语言应用不当很可能会引起单片机系统无法正常运行,重点介绍了利用C51作为编程语言在使用W77E58时,如果程序在定义全局变量或静态变量时进行了初始化会对Watchdog的复位产生的影响及其解决方法。
  关键词:C51;Watchdog;W77E58
  
  引言
  
  W77E58是华邦公司设计的一片增强型MCS-51单片机,它的最高工作频率40MHZ,指令系统采用4个机器周期,具有3个16位定时器,12个中断,32KB flashEPROM程序空间,两个UART串口等特性。尤其适用于对存储器资源有一定要求和对软件运行速度有特别要求的场合,目前在工业控制中得到了广泛应用。单片机系统受干扰后,经常出现的问题是程序执行进入一种“跑飞”或“死机”状态,为此,可以采用Watchdog技术保持系统的正常运行。在W77E58已经集成了一个用户可编程的看门狗定成器,因此只要硬件接法正确,在软件设计中调用相应语句即可启动Watchdog。
  C语言可以缩短开发周期,降低开发成本,而且开发出的系统易于维护、可靠性高、可移植性好,笔者编制程序使用的是C51。程序中开启使用watchdog定时器后,发现当看门狗定时器溢出引起系统复位后系统无法重新
  

开始正常运行,即复位后程序运行到main()函数之前一直在不停的复位,经过详细分析之后发现是由于在定义全局变量或静态变量时进行变量初始化使得初始化程序执行时间长于看门狗设置的最长时间引起的。
  
  W77E58Watchdog简介
  
  W77E58自带有看门狗定时器,此定时器是一个独立于CPU自行运行的定时器,系统可通过编程将其设置为系统监控器,时基发生器或事件定时器。该定时器基于一组分频器,对系统时钟频率进行分割。分频器输出可选,并决定溢出时间。溢出时,如果看门狗有效(且看门狗定时器打开),将引起系统复位,系统复位将使“飞掉”的程序重新恢复运行,以达到提高程序运行的可靠性。看门狗溢出中断以及看门狗复位可利用软件进行设置,将两者合并或分离(即看门狗定时器溢出并使系统复位以及看门狗定时器仅溢出而不引起系统复位)。
  看门狗定时器先用RWT来启动,这保证看门狗定时器从一个确定的状态开始运行。RWT位用来启动看门狗定时器。该位会自动清零,就是说在软件向该位写入1后,系统会自动把该位清为0。将RWT设为1后,看门狗定时器会对时钟周期进行计数。超时时间由WDl和WD0位来决定(CKCON.7和CKCON.6)。超时时间到以后,WDIF位置位,之后看门狗定时器将等待512个时钟周期,如果EWT=1且在等待期间没有对RWT进行操作,那么512个时钟周期以后会产生看门狗定时器复位。这个复位会连续两个周期同时WTRF标志位置位,软件可以用此来判断是否是看门狗定时器复位。
  表1给出了看门狗定时器的溢出值,对于不同的时钟频率,看门狗定时器就会产生不同的溢出时间。当使能看门狗定时器复位后,这个复位会在其溢出并经过512个时钟周期后结束。看门狗定时器在上电或掉电复位后,看门狗定时器复位不会关闭看门狗定时器,但会将其重新启动,软件应重新启动定时器把它放入一个确定的状态。
  CPU使用W77E58,主程序由C语言开发的系统,最初在设计编制Watchdog定时器程序时发现开启Watchdog定时器后,当定时器溢出引起系统复位后系统无法重新开始正常运行,即复位后程序运行到main()函数之前一直在不停的复位。经过认真分析发现原来是在定义全局变量或静态变量时对这些变量进行初始化引起的。
  
  问题产生的原因
  
  用C语言编程时,系统复位Reset后所执行的第一个程序模块并不是使用者的主程序main(),而是一个隐藏在KEIL—C51标准程序库中称为startup.a51的程序模块。startup.a51的主要作用是将单片机内部所有RAM单元清零,接着startup.a51被执行的仍然是一个隐藏在KEIL-C51标准程序库中被称为init.a51的程序模块,init.a51的主要工作是初始化程序的全局变量或静态变量。完成上述初始化程序之后,才会开始执行main()程序。由前面的介绍可知看门狗定时器在上电或掉电复位后,看门狗定时器复位不会关闭看门狗定时器,即在系统热启动(看门狗或其他原因引起的复位)程序重新开始运行startup.a51、init.a51时,看门狗定时器仍在继续运行;由于运行startup.a51、init.a51花费的时间比较长,即使将看门狗定时器中断时间设置为最长,程序运行到main()程序之前看门狗定时器将溢出并引起系统复位。所以由热启动引起系统复位时,看门狗定时器在运行到main()函数之前将反复引起系统复位此时系统将无法进入main()程序运行。
  
  问题解决的方法
  
  针对上述情况W77E58C51编程环境下初始化程序执行时间长于看门狗设置的最长时间,如果想使watchdog正常运行下面提供了两种方法:
  1.最简单的方法是在程序中定义全局变量和静态变量时不要对这些变量赋以初值,对这些变量的赋置可以放在程序中进行。这样系统复位(Reset)后程序在运行到main()函数之前只运行startup.a5l,运行startup.a51所占用的时间比较短,程序运行到main()函数时看门狗定时器将不溢出。当程序运行到main()函数时可以将main()的第一条语句写为“喂狗”(将看门狗定时器值复零)指令,这样可以确保热启动时看门狗定时器不溢出,系统得以正常运行。对于W77E58单片机来说其内部资源有限,程序代码空间为32K,如果程序量比较大,精简指令减少程序代码是非常有必要的,采用这种方法时程序代码中不包含有init.a51初始化程序全局变量或静态变量的代码,可以有效的缩减程序代码。
  如果程序量比较少,为了简便在定义全局变量和静态变量时对这些变量进行了初始化,在这种情况下可以在将init.a51添加到项目程序中。Init.a51模块中包含有watchdog宏,在初始化程序执行时间长于看门狗设置的最长时间的时候可以设置这个宏,即在系统热启动程序重新运行到init.a51时,首先执行“喂狗”指令,这样可以确保程序在运行到main()之前看门狗不溢出,系统可以正常运行。
  
  结语
  
  在恶劣的现场环境下受到外部干扰,单片机系统会出现“死机”、程序“跑飞”等现象,Watchdog技术是恢复系统的有效方法之一。随着C语言在开发单片机系统中越来越广泛的被应用,确保C51环境下正常运行Watchdog也尤为重要。文中给出了使用W77E58作为系统CPU,在利用C语言编制程序时定义全局变量或静态变量时进行变量初始化对Watchdog的使用产生的影响及解决方法,当然利用C语言编程在使用其他CPU的Watchdog时也可以借鉴此种方法,利用这种方法可以保证Watchdog的正常运行,有效提高单片机系统运行的可靠性。
其他文献
摘要:本文介绍了基于FreescaleColdfire处理器系列的MCF5213芯片,以及Zigbee无线通讯技术实现无线对讲系统的参考设计。  关键词: MCF5213;音频采集;Zigbee
期刊
杰尔系统(Agere Systems)宣布推出TrueONE网络解决方案,该公司称此方案采用了全新的而且更简化的技术方法,帮助网络服务供应商解决了最迫切、最关键的商业和技术难题。据介绍,杰尔的新型解决方案和软件平台可帮助服务供应商将其运营和业务模型从传统的核心与边缘网络、有线和无线网络,进一步向家庭及企业网领域延伸。这种延伸通过提供新型电信级的消费和企业服务,扩展了市场机会、为运营商创造了新型、可
期刊
据市场调研公司IDC报道,2006年世界手机市场可望超过8.5亿部,2008年9亿多部,2009年达9.5亿部。2005年拍照手机的比重估计占40~42%,预测2007~09年间可提高至U60-80%。据统计2005年世界拍照手机的具体出货量为3.4亿部,预计2009年将提高到7.4亿部(图1),年均增长率为21.5%。
期刊
近几年,无论是手机代表的无线移动网络及其基础设施,还是以蓝牙(Bluetooth)、无线局域网(WLAN)、Zigbee等长、短距离的无线通信技术,或者是WiMax、RFID等面向特定应用的专门技术,给人们带来了种种方便,也在悄悄改变着产业的格局。作为各种无线技术基础的RF技术,也在不断吸纳新技术、新设计,以满足系统对于更大数据传输量、更低的功耗和成本要求、更苛刻的信号可靠性要求等挑战。从另一侧面
期刊
摘 要:介绍MAX274有源滤波器的特性及计算电路参数的原理和数学推导过程。并介绍了MAXIM公司专用滤波器设计芯片配套开发软件的使用方法。给出了简洁、有效的滤波器设计解决方法,设计了通带范围为300Hz一3400Hz的音频有源切比雪夫型带通滤波器。实际滤波效果良好。  关键词:带通滤波器;切比雪夫(Chebyshev)型滤波器;MAX274    引言    在语音数字系统设计中,为了防止在数
期刊
英特尔(Intel)和美光科技(MicronTechnology)近日宣布,两家公司成立的合资公司IM FlashTechnologies已经开始50nmNAND闪存产品生产,并分别由两家公司提供样片。据介绍,目前所提供的产品只是4GB的NAND闪存,而未来计划则是在2007年提供更多可供选择密度的NAND闪存。  美光科技公司存储产品副总裁BrianShirley介绍说:“美光科技在2004年
期刊
摘 要:在基于流光放电的烟气脱硫技术中,电源控制系统的设计一直是个难点,本文提出一种基于DSP芯片的数字PID技术在脱硫直流电源中的应用设计方案。控制系统采用DSP芯片提高了系统的控制精度和处理速度,采用改进的数字PID的控制算法改善了系统对干扰的响应速度,增强了对干扰的实时处理能力。最后给出仿真及实验结论。关键词:烟气脱硫;开关电源;数字PID;DSP    引言    随着我国经济的发展,在
期刊
飞思卡尔的PowerQUICC通信处理器自推出后得到了广泛的应用,过去¨年以来,通信处理器模块(CPM)作为基于PowerQUICC架构的通信主流应用,满足开发商对于系统设计的协议处理需求。PowerQUICC架构采用一个PowerPC核心,主要用于控制平面处理和基于RISC的独立CPM,负责处理外围设备处理任务和多个通信协议(ATM、以太网、HDLC)从而与PowerPCCPU协调一致地工作。
期刊
纵观整个中国数字电视市场,有线电视(CATV)数字化和IPTV各具特色。有线电视数字化的列车已经启动了,即将进入加速阶段,现在需要解决的问题是如何加速和用什么方式加速。
期刊
与其他常用的自动识别技术如条形码和磁条一样,无线射频识别(RFID)技术也是一种自动识别技术。每一个目标对象在射频读卡器中对应唯一的电子识别码(UID),或者“电子标签”。标签附着在物体上标识目标对象,如纸箱、货盘或包装箱等。射频读码器(应答器)从电子标签上读取识别码。  基本的RFlD系统由三部分组成:天线或线圈、带RFID解码器的收发器和RFID电子标签(每个标签具有唯一的电子识别码)。表1显
期刊