WDT实验

1.WDT简介

Watch Dog Timer即看门狗定时器,其主要作用是当发生软件故障时,可产生复位信号使SOC复位,其本质是一个计数器

WDT工作原理:

2.Exy4412下的WDT控制器

总览:
Exynos 4412 SCP中的监视器计时器(WDT)是一种计时设备。由于噪声和系统错误导致故障后,您可以使用此设备恢复控制器的操作。您可以使用WDT作为一个普通的16位间隔计时器来请求中断服务。WDT产生复位信号

WDT的特点:

支持具有中断请求的正常时间间隔计时器模式。
如果计时器计数达到0(超时),激活内部重位信号。
支持电平触发的中断机制

WDT使用PCLK作为其源时钟。8位预计算器按PCLK频率生成相应的WDT,并再次划分得到的频率。

上图显示了WDT的功能方框图。WDT控制(WTCON)指定预调节器值和频率划分因子。有效的预计算值范围从0到(28-1)。您可以选择频率划分因子为: 16、32、64或128。使用此公式来计算WDT时钟频率和每个计时器时钟周期的持续时间:

pclk = 100 MHZ;
t_watchdog = 1/(PCLK/(Prescaler value + 1)/Division_factor)
如果Prescaler value = 255,Division_factor = 128;
则 t_watchdog = 3051;
  1. Register Map Summary
    Base Address: 0x1006_000
RegisterOffsetDescriptionReset Value
WTCON0x0000Watchdog timer control register0x0000_8021
WTDAT0x0004Watchdog timer data register0x0000_8000
WTCNT0x0008Watchdog timer count register0x0000_8000
WTCLRINT0x000CWatchdog timer interrupt clear registerUndefined

本次WDT实验主要是要验证在CPU正常运行时,程序间隔地往WDT中赋值,从而让WDT一直存在,当CPU出现错误时,WDT由于不会再被赋值从而减到0,产生复位信号。
主要用到WTCON和WTCNT两个寄存器。

2.1 WTCON

2.1WTCNT

3.WDT编程

#include "exynos_4412.h"
void delay(unsigned int Time)
{while(Time--);
}
int main()
{	/*设置一级分频*/WDT.WTCON = WDT.WTCON | (0xff << 8 );
//	WDT.WTCON = WDT./*设置二级分频*/WDT.WTCON = WDT.WTCON | (0x3 << 3);/**WTCNT递减频率 = pclk/256/128 = 3052** *//*禁止中断*/WDT.WTCON = WDT.WTCON & (~(1 << 2));/*使能WDT产生复位信号*/WDT.WTCON = WDT.WTCON | (1 << 0);/*设置计数器的值*/WDT.WTCNT = (3052 * 5);/*使能WDT,计数器开始递减*/WDT.WTCON = WDT.WTCON | (1 << 5);while(1){printf("WDT.WTCNT = %d\n",WDT.WTCNT);	/*喂狗*/WDT.WTCNT = 3052;delay(100000);}return 0;
}

本文链接:https://my.lmcjl.com/post/8805.html

展开阅读全文

4 评论

留下您的评论.