S3C2410接口之 看门狗控制器原理与编程

来源:互联网 发布:国密算法 .net 编辑:程序博客网 时间:2024/06/06 22:26

S3C2410接口之 看门狗控制器原理与编程

1. 看门狗:是一种电路,具有监视并恢复程序正常运行的功能,从而达到增强系统的稳定性。它本质上是一种定时器电路

2. 稳定性和定时器之间有什么样的关系呢?

3. 看门狗增强系统稳定性的基本原理:设一系统程序完整运行一周期的时间是Tp,看狗的定时周期为Ti,要求Ti>Tp。在程序运行一周期后,修改定时器的计数值,只要程序正常运行,定时器就不会溢出。若由于干扰等原因使系统不能在Tp 时刻修改定时器的计数值,定时器将在Ti 时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控作用。

s3c2410的看门狗控制器

S3C2410 的看门狗定时器有两个功能:

1)定时器功能:可以作为常规定时器使用,它是一个十六位的定时器,并且可以产生中断,中断名为INT_WDT,中断号是0x09

2)复位功能:作为看门狗定时器使用,当时钟计数减为0(超时)时,它将产生一个128个时钟周期的复位信号。

S3C2410 ARM9的看门狗主要由五部分构成:时钟、看门狗计时器、看门狗数据寄存器、复位信号发生器、控制逻辑等。

 S3C2410 ARM9的看门狗工作原理:

PCLK 经过预分频、再分频,使得到达看门狗的频率能够没有那么高,这样看门狗才处理得了。

• S3C2410 看门狗定时时间

预分频器为8,其值为:0---255

再分频器可选择值为163264128

输入到计数器的时钟周期为:

T_wtd=1/[PCLK/(Prescaler+1)/Division_factor]

看门狗的定时周期为:

T=WTDAT(看门狗的计数器的初值)×T_wtd

•  S3C2410 看门狗的特殊功能寄存器:(共3个,其基地址为0x53000000

• 寄存器

• 描  述 

• 初值

• 偏移地址 

•  WTCON

• 看门狗控制寄存器

• 0x8021

• 0

•  WTDAT

• 看门狗数据寄存器

• (主要是给计数器填数的)

• 0x8000

• 4

•  WTCNT

• 看门狗计数寄存器

• 0x8000

• 8

•  1看门狗控制寄存器(WTCON

• Register

• Off Add 

• R/W 

• Description

• Reset 

• Value 

• WTCON

• 0

• R/W

• 看门狗控制寄存器

• 0x8021

• 

字段名 

意    义 

初值 

Prescaler Value

15:8

 预分频值。0---255

0x80

Reserved

7:6

 保留(为0) 

00

Watchdog Timer

5

 看门狗控制位。

 0:禁止;1:允许

1

Clock Select

4:3

 再分频值选择。 0016

 0132106411128

00

Interrupt

Generation

2

 看门狗中断控制。

 0:禁止; 1:允许。

0

Reserved

1

 保留(为0) 

0

Reset

Enable

0

 看门狗复位功能控制。

 0:禁止; 1:允许。

1

• 

• 2看门狗计数寄存器(WTCNT)(最大填数为216次方)

Register

Off Add 

R/W 

Description

Reset 

Value 

WTCNT

8

R/W

看门狗计数寄存器

0x8000

字段名 

意    义 

初值 

Count Value

15:0

 看门狗的当前计数值

0x8000

• s3c2410的看门狗控制器编程步骤

• 1初始化看门狗控制器

• 时钟设置、输出类型设置设置:WTCON相应位赋值;

• 计数器初始值设定:WTCNT相应位赋值

• 数据寄存器赋值:给WTDAT相应位赋值;

• 2如果把看门狗作为一个普通的定时器使用,还必须把看门狗定时中断处理程序填入中断向量表中,并相关的中断控制相关寄存器初始化;

• 3使能看门狗控制寄存器:给WTCON相应位赋值(必须在完成上面的工作之后才使能看门狗控制寄存器)

例:编写一程序,利用S3C2410看门狗中断产生频率为1kHz的方波,并且从GPB0引脚输出。设S3C2410PCLK50MHz

• 编程思路:

      如果我们能每隔1/2000秒让GPB0管脚上的输出电平反向(正确的,因为一个方波就是1ms,而电平持续的时间就是方波持续时间的一半),就可以在GPB0管脚上输出1KHz的方波。

      我们可以设置看门狗定时器的定时周期为1/2000秒,再在看门狗的定时中断处理程序中让GPB0管脚上的输出电平方向。

      而看门狗的每计一次数的时间由PCLK、预分频值、再分频值决定,其关系为:1/计一次数的时间=PCLK/[(预分频值+1)*再分频值]

注意:这里说的1kHZ的方波是指一秒钟有一千个高低电平的组合。所以,1000hz就是一个方波就是1ms,所以一个电平持续的时间就是0.5ms


转自:http://wenku.baidu.com/view/2b1ab842336c1eb91a375d6c.html

原创粉丝点击