【连载】基于AVR XMEGA-A3BU Xplained控制器的Wifi小车制作(4)

作者: 张小艺
上传时间为: 2014-08-23 12:57 AM

本文将介绍智能小车制作过程中看门狗程序。

门狗定时器是一个计数器,基本功能是在发生软件问题和程序跑飞后使系统重新启动。看门狗计数器正常工作时自动计数,程序流程定期将其复位清零,如果系统在 某处卡死或跑飞,该定时器将溢出,并将进入中断。在定时器中断中执行一些复位操作,使系统恢复正常的工作状态,即在程序没有正常运行期间,如期复位看门狗 以保证所选择的定时溢出归零,使处理器重新启动。

原来看门狗程序就是用来 重启动单片机的,当程序出错时。

好吧,废话不多说了,点打开ASF Explorer 菜单下的  ASFWizard wdt.jpg

看到最下面有个 WDT--Watchdog Timer  选中,然后点击配置 wdt2.jpg

然后就会在ASF Explorer 中出现了 ,展开WDT wdt3.jpg

双击  Quick Start Guide,你会发现奇迹 哈哈   不得不赞一下 ASF真的是很棒的软件平台,不管你怎么看,I like it !

  • Set timeout period to 8 cycles or 8 ms://这句是设置WDT计数器的计数长度

   wdt_set_timeout_period(WDT_TIMEOUT_PERIOD_8CLK);

2. Enable WDT:    //WDT使能 wdt_enable();

使用WDT时 ,只需在MAIN函数中加入上面的代码,再在程序中加入

3.   wdt_reset();

我估计它的工作流程就是 首先设置WDT计数器的长度值,然后它会开始自动计数,主程序正常运行时,它的计数器会自动清零,如果主程序卡住了或者跑飞了,出故障了,它的计数器就会一直累加到设定的值,然后就会判定现在出现了故障,启动reset()来软件复位。是不是好简单! 用ASF 来开发自己的程序代码

小结: WDT是一种用软件来重新启动的方法。 记得89C51 和 ATmega128 的最小系统板上都有复位按钮,这是用硬件来复位的。 然后就想到A3BU Xplained板子上有3个按钮+1个触屏按钮,哪个是用做来复位的?  查看了板子的PCB图 resrt1.jpg reset2.jpg

原来XMEGA256芯片也是可以硬件复位的的,但是A3BU Xplained板上上面没有增设这一功能,而是在JTAG仿真时用到了硬件复位 。所以我们在自己的程序中加入WDT的代码 还是很有必要的。

全部评论 ()

创建讨论帖子

登录 后参与评论
系统提示