第七章-定时器

第七章  定时器

一.通用定时器概述

定时器或计数器的逻辑电路本质上是相同的,它们之间的区别主要在用途上。它们都是主要由带有保存当前值的寄存器和当前寄存器值加1或减1逻辑组成,其内部工作原理图是以一个N位的加1或减1计数器为核心,计数器的初始值由初始化编程设置,计数脉冲的来源有两类:系统时钟和外部事件脉冲


定时工作方式:

若编程设置定时/计数器为定时工作方式时,则N位计数器的计数脉冲来源于内部系统时钟,并经过M分频。每个计数脉冲使计数器加1或减1,当N位计数器里的数加到0或减到0时,则会产生一个“回0信号”,该信号有效时表示N位计数器里的当前值是0。因为系统时钟的频率是固定的,其M分频后所得到的计数脉冲频率也就是固定的,因此通过对该频率脉冲的计数就转换为定时,实现了定时功能。

计数工作方式:

若编程设置定时/计数器为计数方式时,则N位计数器的计数脉冲来源于外部事件产生的脉冲信号。有一个外部事件脉冲,计数器加1或减1,直到N位计数器中的值为0,产生“回0信号”。

二.S5PV210的脉宽调制定时器

1.PWM定时器概述

    S5PV210有五个32脉冲宽度调制定时器。这些定时器为ARM分系统产生内部中断。此外,定时器0、1、2、3包含一个PWM功能模块,用于驱动外部I/O信号。定时器0中的PWM可选择的死区发生器,能够支持一个大电流设备。定时器4是没有外部引脚的内部定时器。

定时器将APB—PCLK作为时钟源。定时器01共用一个可编程8比特分频器,该分频器为PCLK提供第一层分频定时器234共用一个不同的8比特分频器。每个定时器有自己的专用时钟分频器,用于提供第二层的时钟分频器(分频器分为2、4、8、16分频)。

    每一个定时器有自己的由定时器时钟分频得到的32比特减法计数器。减法计数器最初从定时器计数缓冲寄存器(TCNTBn)中得到初值,然后在定时器时钟控制下进行减法操作。在自动重载工作状态,如果减法计数器降到了0,TCNTBn相应的值会重载到减法计数器来启动下一个循环。

    PWM功能要用到TCMPBn比较缓冲寄存器的值。如果在定时器控制逻辑下,减法计数器的值与比较寄存器的值相匹配,定时器逻辑会改变输出电平。因此,比较缓冲寄存器决定了PWM输出的开启和关闭时间。

    TCNTBn和TCMPBn寄存器都是都是双缓存配置,能够使定时器参数在循环的中间得到更新。新的数值直到当前时钟循环完成后才会起作用。

定时器组成:

     减法计数器、初值寄存器、比较寄存器、观察寄存器、控制逻辑等5部分构成。


输入时钟频率的公式:

Timer input clock Frequency = PCLK / {prescaler value+1} / {clockdivider }
{prescaler value} = 0~255
{ clock divider } = 2, 4, 8, 16

PWM定时器的寄存器

寄存器声明:

// define Timer register
#define rTCFG0       (*(volatile unsignedint *)0xEA000000)
#define rTCFG1       (*(volatile unsignedint *)0xEA000004)
#define rTCON        (*(volatile unsignedint *)0xEA000008)
#define rTCNTB0   (*(volatile unsignedint *)0xEA00000C)
#define rTCMPB0   (*(volatile unsignedint *)0xEA000010)
#define rTCNTO0   (*(volatile unsignedint *)0xEA000014)

    ……
    前两个是定时器配置寄存器,主要用来设置预分频值和分割器值。第三个是控制寄存器,主要用来设置各定时器功能,第四个是计数缓冲寄存器,第五个是比较缓冲寄存器,第六个是计数观察寄存器

2. PWM定时器的寄存器

1)        定时器配置寄存器0(TCFG0)

2)        定时器配置寄存器1(TCFG1)

3)        定时器控制寄存器(TCON)

4)        定时器n计数缓冲寄存器(TCNTBn)

5)        定时器n 比较缓冲寄存器(TCMPBn)

6)        定时器n的观察寄存器(TCNTOn)

3. PWM双缓冲定时器

PWM双缓冲定时器工作流程:


1)程序开始,设置TCMPBn、TCNTBn这两个寄存器,表示定时器n的比较值、初始计数值。

2)设置TCON寄存器启动定时器n,这时TCMPBn、TCNTBn的值将被装入内部寄存器TCMPn、TCNTn中,在定时器n的时钟频率下,TCNTn开始减1计数,其值可以通过读取TCNTON寄存器得知。

3)当TCNTn的值等于TCMPn的值时,定时器n的输出管脚TOUTn反转,TCNTn继续减1计数。

4)当TCNTn的值到达0时,其输出管脚TOUTn再次反转,并触发定时器n的中断。

5)当TCNTn的值到达0时,如果在TCON寄存器中将定时器n设置为自动加载,则TCMPBn和TCNTBn寄存器的值被自动装入TCMPn和TCNTn寄存器中,下一次计数流程开始。

PWM定时器控制示例程序(P157)

三.看门狗定时器

1. 看门狗定时器概述

watchdog,中文名称叫做“看门狗”,全称watchdog timer,从字面上我们可以知道其实它属于一种定时器。普通的定时器一般起计时作用,计时超时(Timer Out)则引起一个中断,例如触发一个系统时钟中断。watchdog本质上是一种定时器,那么普通定时器所拥有的特征它也应该具备,当它记时超时时也会引起事件的发生,只是这个事件除了可以是系统中断外,它也可以是一个系统重起信号(Reset Signal),能发送系统重起信号的定时器我们就叫它watchdog

PCLK为系统时钟,看门狗定时器的时钟由PCLK经过预分频后再分割得到。预分频器值和频率分割因子由看门狗定时器的控制寄存器(WTCON)进行编程设定,可选范围是0~255。频率分割因子可选择的值为16、32、64、128。

    下面公式计算看门狗定时器的计数时钟周期:

         T_watchdog = 1/ (PCLK / (预分频器值 + 1) / 分割因子)

    看门狗定时器在计数器变为0时,会产生一个宽度为128个PCLK的复位脉冲信号。程序在正常工作时,应该定期将看门狗定时器重置。如果程序跑飞,则看门狗定时器回0时会将系统复位,防止应用系统出现死机。

2. 看门狗定时器寄存器

1)        看门狗定时器控制寄存器(WTCON)

2)        看门狗定时器数据寄存器(WTDAT)

3)        看门狗定时器计数寄存器(WTCNT)

看门狗定时器参考程序(P161)

四.RTC实时时钟

实时时钟部件RTC是用于提供年、月、日、时、分、秒、星期等实时时间信息定时部件。

RTC部件可以将年、月、日、时、分、秒、星期等信息的8位数据以BCD码格式输出。它由外部时钟驱动工作,外部时钟频率为32.768kHz晶体,必须XTIrtc和XTOrtc引脚接外部晶体,并接合适的电容。同时RTC部件还可以具有报警功能。

RTC控制器


RTC编程(P165),实验指导书(P112)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值