·上一文章:看门狗不起作用
·下一文章:LIDA DDS一11A型电导率仪显示数值不稳定、跳字
用仿真器对目标板仿真时运行正常,说明系统软件与电路板上的硬件都没有什么大的问题。仔细检查那嘀嘀嗒嗒的声音是电路板上的继电器所为,整个系统似乎在不断地“启动”,又被不停地“复位”着。
折腾了一段时间,将寻找问题的“焦点”移到了仿真器编程器及其操作软件上。其中编程器软件有个操作界面:打开编程操作软件烧写PHILIPS的P87LPC系列单片机时,需要进行相应芯片型号的选择及相关配置字的设置。在配置字设置的窗口界面上有看门狗、复位控制、振荡器类型等相关的状态选项(如图1所示)。看门狗的“启动看门狗”或“关闭看门狗”的选择可能就是本问题的关键。
依照这种猜测笔者做了几个相关的实验,证实猜测是对的——当选择“关闭看门狗”选项进行编程烧写后系统就能正常运行了。但是,关闭了看门狗就意味着损失了看门狗的一切功能!为什么选择“启动看门狗”系统就不能正常运行呢?为此又检查了锅炉控制器的电路结构及源程序,发现PHIl,IPS公司的P87LPC系列单片机内部看门狗的设置与ATMEL公司的AT89S5X系列单片机内部的看门狗设置不一样,后者看门狗什么时候启动可由具体的程序软件来控制,而前者是由配置字的设置来控制的,编程烧写时一旦选择启动看门狗,看门狗就“活”了。
再琢磨图2所示的锅炉控制器的电路,其主要由P87LPC767、时钟电路DS1302、数据存储电路24LC02等组成,也正因为系统中有了 时钟电路和数据存储电路,所以在单片机的“初始化”阶段,即在进入主程序大循环之前需要有不少数据的读取及存储。而在这许多的读取及存储过程中不曾采取“喂狗”措施,难怪看门狗“急”了、要“咬人”了,因此除了在大循环中正常的“喂狗”外,在其初始化读写数据过程中插入几条“喂狗”程序问题就解决了。