- 1、本文档共55页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[信息与通信]定时计数器
定时/计时器 张晓冬 生活中计数的例程处处可见。例:工业上的测量系统、家里面用的电度表、汽车上的里程表等。 计数器除了能作为计数之用外,还能用作时钟,时钟的用途当然很大,如钟表的定时报时,电视机定时关机,空调定时开关等。 一个闹钟,将它定时在1个小时后闹响,也能说是秒针走了3600次,所以时间就转化为秒针走的次数,也就是计数的次数。可见,计数的次数和时间的定时十分相关。那么它们的关系是什么呢?那就是秒针每一次走动的时间正好是1秒。 只要计数脉冲的间隔相等,则计数值就代表了时间的流逝。由此,单片机中的定时器和计数器是一个东西,只不过计数器是记录的外界发生的事情,而定时器则是由单片机供给一个非常稳定的计数源。 具有PWM 功能的8 位定时器/ 计时器0 T/C0 是一个通用的单通道8 位定时器/ 计数器模块。其主要特点如下: 单通道计数器 比较匹配发生时清除定时器( 自动加载) 无干扰脉冲,相位正确的PWM 频率发生器 外部事件计数器 10 位的时钟预分频器 溢出和比较匹配中断源 (TOV0 和 OCF0) T/C0结构 时钟源 输出比较单元 T/C0 控制寄存器- TCCR0 T/C0 寄存器- TCNT0 通过T/C 寄存器可以直接对计数器的8 位数据进行读写访问。对TCNT0 寄存器的写访问将在下一个时钟阻止比较匹配。在计数器运行的过程中修改TCNT0 的数值有可能丢失一次TCNT0 和OCR0 的比较匹配。 输出比较寄存器- OCR0 输出比较寄存器包含一个8 位的数据,不间断地与计数器数值TCNT0 进行比较。匹配事件可以用来产生输出比较中断,或者用来在OC0 引脚上产生波形。 T/C 中断屏蔽寄存器- TIMSK Bit 1 – OCIE0: T/C0 输出比较匹配中断使能 当OCIE0 和状态寄存器的全局中断使能位I 都为”1” 时,T/C0 的输出比较匹配中断使能。 Bit 0 – TOIE0: T/C0 溢出中断使能 当TOIE0 和状态寄存器的全局中断使能位I 都为”1” 时,T/C0 的溢出中断使能。 T/C 中断标志寄存器- 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 都置位时,中断服务程序得到执行。 普通模式 普通模式(WGM01:0 = 0) 为最简单的工作模式。在此模式下计数器不停地累加。计到8比特的最大值后(TOP = 0xFF),由于数值溢出计数器简单地返回到最小值0x00 重新开始。在TCNT0 为零的同一个定时器时钟里T/C 溢出标志TOV0 置位。 CTC( 比较匹配时清零定时器)模式 快速PWM 模式 相位修正PWM 模式 T/C0寄存器 课后练习 利用T/C0产生快速PWM的功能,产生占空比可变的脉冲方波,并通过在示波器上显示波形来计算其频率。 16 位定时器/ 计数器1 16位的T/C 可以实现精确的程序定时( 事件管理)、波形产生和信号测量。其主要特点如下 真正的16 位设计( 即允许16 位的PWM) 2 个独立的输出比较单元 双缓冲的输出比较寄存器 一个输入捕捉单元 输入捕捉噪声抑制器 比较匹配发生时清除寄存器( 自动重载) 无干扰脉冲,相位正确的PWM 可变的PWM 周期 频率发生器 外部事件计数器 4 个独立的中断源(TOV1、 OCF1A、OCF1B 与ICF1) T/C1结构 时钟源 输入捕捉单元 输出比较单元 T/C1 控制寄存器A - TCCR1A T/C1 控制寄存器B - TCCR1B 16位寄存器 TCNT1、OCR1A/B与ICR1是AVR CPU 通过8位数据总线可以访问的16位寄存器。读写16位寄存器需要两次操作。每个16位计时器都有一个8位临时寄存器用来存放其高8位数据。每个16 位定时器所属的16 位寄存器共用相同的临时寄存器。访问低字节会触发16位读或写操作。当CPU 写入数据到16 位寄存器的低字节时,写入的8 位数据与存放在临时寄存器中的高8 位数据组成一个16 位数据,同步写入到16 位寄存器中。当CPU 读取16 位寄存器的低字节时,高字节内容在读低字节操作的同时被放置于临
文档评论(0)