嵌入式 > 嵌入式开发 > 详情

AVR 看门狗WDT程序

发布时间:2024-05-30 发布时间:
|
系统功能

很多人喜欢养宠物狗,很多单片鸭大侠则喜欢养看门狗,如果您也希望搞条AVR的看门***养,那么本节很适合您。
养看门狗的用意,在于用它监控系统:在程序本该运行的地方喂狗,如果程序卡死或跑飞,将不会运行到那,那样狗没有被喂到,饿死了,控制器复位,得以重启从而进行控制。
本节演示功能:养一只AVR内部看门狗,及时喂狗,狗不饿死,AVR单片鸭不复位;不及时喂狗,狗饿死了,AVR单片鸭就复位。
本节的程序设计较为简单,旨在给出养狗、喂狗,不让狗饿死的简单示例。实际应用时考虑情况较多的要注意什么时候喂狗,放狗。

硬件设计


AVR主控电路原理


LED控制电路原理图

软件设计

//目标系统:基于AVR单片机
//应用软件:ICCAVR

/*01010101010101010101010101010101010101010101010101010101010101010101
----------------------------------------------------------------------
实验内容:
观察喂狗与不喂狗的区别,使用PB口的LED指示灯做状态指示。
----------------------------------------------------------------------
硬件连接:
将PB口的LED指示灯使能开关切换到"ON"状态。
----------------------------------------------------------------------
注意事项:
(1)若有加载库程序,请将光盘根目录下的“库程序”下的“ICC_H”文件夹拷到D盘
(2)请详细阅读:光盘根目录下的“产品资料开发板实验板SMK系列SMK1632说明资料”
----------------------------------------------------------------------
10101010101010101010101010101010101010101010101010101010101010101010*/

#include
#include "D:ICC_HCmmICC.H"

#define DISP_DDRDDRB
#define DISP_PORTPORTB

/*--------------------------------------------------------------------
程序名称:看门狗WDT初始化程序
程序功能:
注意事项:
提示说明:
输入:
返回:
--------------------------------------------------------------------*/
void wdt_init(void)
{
asm("wdr");//clr wdt
WDTCR=0x0F;//enable wdt,clk = 2048,2.1S
}
/*--------------------------------------------------------------------
程序名称:
程序功能:
注意事项:
提示说明:
输入:
返回:
--------------------------------------------------------------------*/
void main(void)
{
uint8 i;

DISP_DDR = 0XFF;
wdt_init();

while(1)
{
DISP_PORT++; //数据显示向上加,作AVR正常运行的指示
asm("wdr"); //喂狗,去除此句将导致狗饿死,AVR复位
delay50ms(20);
}
}

系统调试

在AVR的运行程序中设置让PB显示端口自加。若AVR正常工作,及时喂狗,则单片机设置的显示端口正常自加。去除语句:asm("wdr");单片机不断复位,程序得不到允许,自加数据没有显示往上加。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
便宜有好货.XMOS推出世界上成本最低的AI处理器