基于AVR XMEGA-A3BU Xplained控制器的Wifi小车制作(8)---看门狗
其他
3622 人阅读
|
0 人回复
|
2013-04-18
TA的每日心情 | 开心 2025-8-26 14:48 |
|---|
签到天数: 445 天 连续签到: 1 天 [LV.9]以坛为家II
状元
- 积分
- 6332
|
本帖最后由 木子鱼 于 2013-5-8 20:56 编辑
最近两天女友生病了,我也是做什么事都木有激情 。今天还好,女友身体好了,我也很开心。 {:soso_e176:}
昨晚怀着悲凉的心情看了下 宏晶公司的STC89C51系列的PDF 偶翻看了看门狗程序的简介,以前做89C51,ATMega128的程序编程,都没有想到过要去用看门狗程序,其实是我不懂,何为看门狗程序? 有啥用途?
然后看完昨晚的简洁,然后百度了下 :看门狗定时器是一个计数器,基本功能是在发生软件问题和程序跑飞后使系统重新启动。看门狗计数器正常工作时自动计数,程序流程定期将其复位清零,如果系统在某处卡死或跑飞,该定时器将溢出,并将进入中断。在定时器中断中执行一些复位操作,使系统恢复正常的工作状态,即在程序没有正常运行期间,如期复位看门狗以保证所选择的定时溢出归零,使处理器重新启动。
原来看门狗程序就是用来 重启动单片机的,当程序出错时。
好吧,废话不多说了,点打开ASF Explorer 菜单下的 ASFWizard
看到最下面有个 WDT--Watchdog Timer 选中,然后点击配置
然后就会在ASF Explorer 中出现了 ,展开WDT
双击 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图
原来XMEGA256芯片也是可以硬件复位的的,但是A3BU Xplained板上上面没有增设这一功能,而是在JTAG仿真时用到了硬件复位 。所以我们在自己的程序中加入WDT的代码 还是很有必要的。 哈哈 |
|
|
|
|
|
|
|
|