新闻中心

EEPW首页>嵌入式系统>设计应用> AVR单片机(学习ing)-ATMEGA16的定时/计数器

AVR单片机(学习ing)-ATMEGA16的定时/计数器

作者: 时间:2016-11-27 来源:网络 收藏
2)T/C0计数寄存器—TCNT0



通过T/C 寄存器可以直接对计数器的8 位数据进行读写访问。对TCNT0 寄存器的写访问
将在下一个时钟阻止比较匹配。在计数器运行的过程中修改TCNT0 的数值有可能丢失一
次TCNT0 和OCR0 的比较匹配。
3)输出比较寄存器—OCR0


输出比较寄存器包含一个8 位的数据,不间断地与计数器数值TCNT0 进行比较。匹配事
件可以用来产生输出比较中断,或者用来在OC0 引脚上产生波形。
4)中断屏蔽寄存器—TIMSK


• Bit 1 – OCIE0: T/C0 输出比较匹配中断使能
当OCIE0 和状态寄存器的全局中断使能位I 都为”1” 时,T/C0 的输出比较匹配中断使能。
当T/C0 的比较匹配发生,即TIFR 中的OCF0 置位时,中断服务程序得以执行。
• Bit 0 – TOIE0: T/C0 溢出中断使能
当TOIE0 和状态寄存器的全局中断使能位I 都为”1” 时,T/C0 的溢出中断使能。当T/C0
发生溢出,即TIFR 中的TOV0 位置位时,中断服务程序得以执行。
5)定时/计数器中断标志寄存器—TIFR


• Bit 1 – OCF0: 输出比较标志0
当T/C0 与OCR0( 输出比较寄存器0) 的值匹配时,OCF0 置位。此位在中断服务程序里
硬件清零,也可以对其写1 来清零。当SREG 中的位I、OCIE0(T/C0 比较匹配中断使能
) 和OCF0 都置位时,中断服务程序得到执行。
• Bit 0 – TOV0: T/C0 溢出标志
当T/C0 溢出时, TOV0 置位。执行相应的中断服务程序时此位硬件清零。此外, TOV0
也可以通过写1 来清零。当SREG 中的位I、TOIE0(T/C0 溢出中断使能) 和TOV0 都置
位时,中断服务程序得到执行。在相位修正PWM 模式中,当T/C0 在0x00 改变记数方
向时, TOV0 置位(这里我还真的不会~~ )。
下面的是个补充:具体我也不知道~因为我也没有用过,回头用了再来更新,哈。


4、16位定时/计数器T/C1
16位的T/C 可以实现精确的程序定时( 事件管理)、波形产生和信号测量。其主要特点如下
• 真正的16 位设计( 即允许16 位的PWM)
• 2 个独立的输出比较单元
• 双缓冲的输出比较寄存器
• 一个输入捕捉单元
• 输入捕捉噪声抑制器
• 比较匹配发生时清除寄存器( 自动重载)
• 无干扰脉冲,相位正确的PWM
• 可变的PWM 周期
• 频率发生器
• 外部事件计数器
• 4 个独立的中断源(TOV1、 OCF1A、OCF1B 与ICF1)
先看看图吧:

寄存器:
定时器/ 计数器TCNT1、输出比较寄存器OCR1A/B 与输入捕捉寄存器ICR1 均为16 位
寄存器。访问16 位寄存器必须通过特殊的步骤,详见P85“ 访问16 位寄存器” 。T/C 控
制寄存器TCCR1A/B 为8 位寄存器,没有CPU 访问的限制。中断请求( 图中简写为
Int.Req.) 信号在中断标志寄存器TIFR1 都有反映。所有中断都可以由中断屏蔽寄存器
TIMSK1 单独控制。图中未给出TIFR1 与TIMSK1。
T/C可由内部时钟通过预分频器或通过由T1引脚输入的外部时钟驱动。引发T/C数值增加(
或减少) 的时钟源及其有效沿由时钟选择逻辑模块控制。没有选择时钟源时T/C 处于停止
状态。时钟选择逻辑模块的输出称为clkT1。
双缓冲输出比较寄存器OCR1A/B 一直与T/C 的值做比较。波形发生器用比较结果产生
PWM或在输出比较引脚OC1A/B输出可变频率的信号。参见P91 “输出比较单元” 。比较匹
配结果还可置位比较匹配标志OCF1A/B,用来产生输出比较中断请求。
当输入捕捉引脚ICP1 或模拟比较器输入引脚( 见P189 “ 模拟比较器” ) 有输入捕捉事件
产生( 边沿触发) 时,当时的T/C 值被传输到输入捕捉寄存器保存起来。输入捕捉单元包
括一个数字滤波单元( 噪声消除器) 以降低噪声干扰。
在某些操作模式下, TOP 值或T/C 的最大值可由OCR1A 寄存器、ICR1 寄存器,或一
些固定数据来定义。在PWM 模式下用OCR1A 作为TOP 值时, OCR1A 寄存器不能用
作PWM 输出。但此时OCR1A 是双向缓冲的, TOP 值可在运行过程中得到改变。当需
要一个固定的TOP 值时可以使用ICR1 寄存器,从而释放OCR1A 来用作PWM 的输出。
不介绍了,太多了,要是想详细了解,自己看datasheet吧,要是要的我给你~~)

5、16位定时/计数器1的寄存器
1)T/C1 控制寄存器A - TCCR1A
T/C1控制寄存器A用来设置通道A和B的输出模式,以及波形的发生模式,其定义:


• Bit 7:6 – COM1A1:0: 通道A 的比较输出模式
• Bit 5:4 – COM1B1:0: 通道B 的比较输出模式
COM1A1:0与COM1B1:0分别控制OC1A 与OC1B状态。如果COM1A1:0(COM1B1:0)的
一位或两位被写入"1”,OC1A(OC1B) 输出功能将取代I/O 端口功能。此时OC1A(OC1B)
相应的输出引脚数据方向控制必须置位以使能输出驱动器。
OC1A(OC1B) 与物理引脚相连时,COM1x1:0 的功能由WGM13:0 的设置决定。Table 44
给出当WGM13:0 设置为普通模式与CTC 模式( 非PWM) 时COM1x1:0 的功能定义。






• Bit 3 – FOC1A: 通道A 强制输出比较
• Bit 2 – FOC1B: 通道B 强制输出比较
FOC1A/FOC1B只有当WGM13:0指定为非PWM模式时被激活。为与未来器件兼容,工作
在PWM 模式下对TCCR1A 写入时,这两位必须清零。当FOC1A/FOC1B 位置1 ,立即
强制波形产生单元进行比较匹配。COM1x1:0 的设置改变 OC1A/OC1B 的输出。注意
FOC1A/FOC1B 位作为选通信号。COM1x1:0 位的值决定强制比较的效果。
在CTC 模式下使用OCR1A 作为TOP 值, FOC1A/FOC1B 选通即不会产生中断也不好
清除定时器。
FOC1A/FOC1B 位总是读为0。
• Bit 1:0 – WGM11:0: 波形发生模式
这两位与位于TCCR1B 寄存器的WGM13:2 相结合,用于控制计数器的计数序列——计
数器计数的上限值和确定波形发生器的工作模式( 见Table 47)。T/C 支持的工作模式有:


(这些东西还是要理解性的记忆的~~~~
2)T/C1 控制寄存器B - TCCR1B


• Bit 7 – ICNC1: 入捕捉噪声抑制器
置位ICNC1 将使能输入捕捉噪声抑制功能。此时外部引脚ICP1 的输入被滤波。其作用
是从ICP1 引脚连续进行4 次采样。如果4 个采样值都相等,那么信号送入边沿检测器。
因此使能该功能使得输入捕捉被延迟了4 个时钟周期。
• Bit 6 – ICES1: 输入捕捉触发沿选择
该位选择使用ICP1 上的哪个边沿触发捕获事件。ICES 为"0” 选择的是下降沿触发输入
捕捉; ICES1 为"1” 选择的是逻辑电平的上升沿触发输入捕捉。
按照ICES1 的设置捕获到一个事件后,计数器的数值被复制到ICR1 寄存器。捕获事件还
会置为ICF1。如果此时中断使能,输入捕捉事件即被触发。
当ICR1 用作TOP 值( 见TCCR1A 与TCCR1B 寄存器中WGM13:0 位的描述) 时,ICP1
与输入捕捉功能脱开,从而输入捕捉功能被禁用。
• Bit 5 – 保留位
该位保留。为保证与将来器件的兼容性,写TCCR1B 时,该位必须写入"0”。
• Bit 4:3 – WGM13:2: 波形发生模式
见TCCR1A 寄存器中的描述。
• Bit 2:0 – CS12:0: 时钟选择
这3 位用于选择T/C 的时钟源,见Figure 49 与 Figure 50。


3)T/C1计数寄存器 - TCNT1H 与TCNT1L




TCNT1H与TCNT1L组成了T/C1的数据寄存器TCNT1。通过它们可以直接对定时器/计数
器单元的16 位计数器进行读写访问。为保证CPU 对高字节与低字节的同时读写,必须
使用一个8 位临时高字节寄存器TEMP。TEMP 是所有的16 位寄存器共用的。
在计数器运行期间修改TCNT1的内容有可能丢失一次TCNT1与OCR1x的比较匹配操作。
写TCNT1 寄存器将在下一个定时器周期阻塞比较匹配。
4)输出比较寄存器


该寄存器中的16 位数据与TCNT1 寄存器中的计数值进行连续的比较,一旦数据匹配,将
产生一个输出比较中断,或改变OC1x 的输出逻辑电平。
输出比较寄存器长度为16 位。为保证CPU 对高字节与低字节的同时读写,必须使用一
个8 位临时高字节寄存器TEMP。TEMP 是所有的16 位寄存器共用的,详见P85 “ 访问
16 位寄存器” 。
5)输入捕捉寄存器1 - ICR1H 与ICR1L


当外部引脚ICP1(或T/C1的模拟比较器)有输入捕捉触发信号产生时,计数器TCNT1中的
值写入ICR1 中。ICR1 的设定值可作为计数器的TOP 值。
输入捕捉寄存器长度为16 位。为保证CPU 对高字节与低字节的同时读写,必须使用一
个8 位临时高字节寄存器TEMP。TEMP 是所有的16 位寄存器共用的。在PWM方式下,ICR1的
设定值将作为计数器计数上限值。

评论


技术专区

关闭