AT91SAM9260定时器计数器模块(翻译)
来源:互联网 发布:linux入门教程 pdf 编辑:程序博客网 时间:2024/04/30 18:52
发现自己看了英文资料后,很容易见忘,因此翻译了AT91SAM9260芯片的定时计数器模块一节的内容,同时在翻译之时,也加上了自己的理解。作为笔记备忘!
34.1:描述
AT91SAM9260芯片有两个定时计数器模块:TCB0(TC0、TC1、TC2)和TCB1(TC3、TC4、TC5),偏移地址分别为0xFFFA 0000和0xFFFD C000,每个定时计数器模块包含3个一样的16bit定时计数器通道,每个通道能独立编程,可以出色地完成诸如频率测量、事件计数、间隔测量、脉冲产生、延时和PWM信号等等功能。
每个定时计数器通道有3个外部时钟、5个内部时钟(注:这5个内部时钟是主时钟的分频)和2个用户可编程的多用途输入输出信号作为时钟源,同时每个通道能驱动产生一个中断信号。
AT91SAM9260定时器计数器模块含有2个对3个定时计数器通道起作用的寄存器。
通道模块控制寄存器允许使用同样的指令同时启动3个定时计数器。
通道模块模式寄存器用来选择外部时钟信号输入(注:每个通道都都有一个连接外部时钟信号输入的选择开关,通道1对应XC0;通道2对应XC1;通道3对应XC2)。
34.5.2: 16bit计数器
每个通道有一个16bit计数器,其值在所配置的时钟源的上升沿向上计数,当计数值达到0xffff并越到0x0000时,此时计数器发生溢出, 寄存器TC_SR (Status Register)的位COVFS被置1。通过读取计数器值寄存器TC_CV可实时读取计数器的当前值。计数器在一个触发条件下能被复位,此时其值为0x0000。
34.5.3:时钟选择
定时器计数器模块的外部时钟输入要么被连接到外部时钟信号输入TCLK0, TCLK1 or TCLK2,要么被连接到内部IO信号TIOA0, TIOA1 or TIOA2。
每个通道可以为它的计数器独立选择为内部时钟源(TIMER_CLOCK1, TIMER_CLOCK2, TIMER_CLOCK3, TIMER_CLOCK4, TIMER_CLOCK5)还是外部时钟源(XC0, XC1 or XC2),通过配置TC通道模式寄存器 TC_CMRx(x=0,1,2)的位TCCLKS[2..0]来完成是选择内部时钟源还是选择外部时钟源。(注:如果选择外部时钟,还需设置模块模式寄存器选择哪钟外部时钟源作为输入)
被选择的时钟源可以设置为反向输入。
34.5.4:时钟控制
每个通道的时钟可以以两钟方式控制计数器的时钟:使能/禁止;启动/停止。
34.5.5:定时计数器操作模式
每个通道能够独立的工作在两种模式:
1)捕获模式,提供信号测量功能,此时,TIOA和TIOB引脚配置为输入;
2)波形模式,用来产生波形信号功能,此时,TIOA总是配置为输出,如果没有选择为外部触发,TIOB引脚也配置为输出。
通过编程 TC通道模式寄存器 TC_CMRx(x=0,1,2)的位WAVE来选择定时计数器的工作模式。
34.5.6:触发
一个触发会复位计数器并且启动计数器的时钟。
对于定时计数器模块的两种工作模式,有三种可使用的触发模式且操作方式相同,同时,提供了一个外部触发模式,这种触发模式在两种工作模式下稍微有些不同。
34.5.7:捕获操作模式
把通道模式寄存器TC_CMR (Channel Mode Register)的位WAVE置为0,则定时计数器模块进入捕获操作工作模式。
在捕获操作模式下,TC通道能够完成TIOA和TIOB引脚输入信号的脉冲计时、频率、周期、占空比和相位等测量的功能。
34.5.8:捕获寄存器A和寄存器B
捕获操作模式下,寄存器A(RA)和寄存器B(RB)用作捕获寄存器(注:此时RA和RB为只读寄存器),这就是说,当在TIOA引脚上发生了一个可编程的事件后,计数寄存器TC_CV的值能被导入到RA或RB寄存器中。
34.5.10:波形操作模式
如前所述,这种工作模式用来产生波形信号,包括PWM信号等等。
在波形操作模式下,通道模式寄存器TC_CMR (Channel Mode Register)的位WAVE必须置1;此模式下,TIOA总是被配置为输出,而TIOB是输入还是输出,要看TIOB是否被配置为了外部事件信号,如果道模式寄存器TC_CMR 的位EEVT[1..0]配置为00,则TIOB被设置为外部事件信号输入引脚,其它值时,TIOB被设置为输出,产生波形信号。
34.5.11:波形选择
定时计数器值寄存器TC_CV值的递增行为由通道模式寄存器TC_CMR 的位WAVSEL[1..0]的设置决定。但不管如何设置,RA(寄存器A)、RB(寄存器B)、RC(寄存器C)都能用作比较寄存器。RA寄存器用来控制TIOA引脚的输出,RB寄存器用来控制TIOB引脚的输出(如果配置正确的话),RC寄存器用来控制TIOA和/或TIOB引脚的输出。
34.5.11.1 WAVSEL = 00时:
- AT91SAM9260定时器计数器模块(翻译)
- AT91SAM9260定时器计数器模块(翻译)
- 51定时器/计数器(3)
- 定时器/计数器
- 定时器/计数器
- 8052计数器(定时器0和计数器1)
- TIM通用定时器(一)计数器模式
- 51单片机定时器/计数器(1)
- 51单片机定时器/计数器(2)
- 51单片机中断系统(定时器、计数器)
- 计数器模块
- 计数器模块
- 计数器模块
- 计数器定时器的应用
- 计数器与定时器
- 单片机 计数器与定时器
- 定时器计数器初值求解
- 定时器/计数器设计实验
- oracle 体现结构
- OGRE的材质脚本 (四)
- GLUT出现无法解析符号
- 爱我为什么还要和别的男人上床
- ogre材质脚本属性
- AT91SAM9260定时器计数器模块(翻译)
- 图文:简单方便的在 Ubuntu10.04 下安装 C# 开发环境 IDE
- Backgroundworker 类与 .net Timer组件
- 开源VtigerCRM的安装
- 求基于单片机做个16*64点阵中文和图像系统,实现左移、右移、闪烁、上翻、下翻等功能
- 闲谈图书馆
- HTML学习 NO3
- 我的第一篇CSDN博客
- java多线程学习四:后台线程