原创 AVR单片机专辑——定时器

2008-12-16 20:03 4677 9 11 分类: MCU/ 嵌入式

第二讲:AVR单片机的定时器<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


ATmega128有两个8位定时器02,两个16位定时器13。下面主要说一下定时器的不同用法。


1.       T/C0可以外接32768Hz的晶振,实现RTC(实时时钟)。


2.       T/C2 外部事件计数器(T2)。


3.       16位的T/C可以实现精确的程序定时、波形产生和信号测量。功能非常强。


本文主要以16位的T/C1为例介绍定时器的应用,其它的定时器可以依葫芦画瓢。


1.      采用T/C1的溢出中断实现电子钟的设计


定时器工作在普通模式,用数码管显示时间。这里问题是如何得到1s的定时。若晶振采用<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />12M256分频,则计数初值应设为X0xFFFF-X=12M/256 ==X=0x48E4


2.      CTC模式产生4kHz的方波(412


CTC模式可以用来输出50%占空比的方波信号,产生准确的连续定时信号。在方波信号产生时,首先需要将I/O中的OCnA/OCnB/OCnC设置为输出,电平取反,无分频,本文选择模式4。使用公式fOCnA=fclk_I/O/2N(1+OCRnA)


来计算出OCRnA的值。在硬件的管脚上可以得到精确的4kHz方波。


3.      快速PWM——占空比不定(5671415


快速PWM和其他PWM不同之处是单边谐波工作方式。可以驱动直流电机,背光等。首先还是需要将I/O中的OCnA/OCnB/OCnC设置为输出,比较匹配时OCnA电平取反,比较匹配时清零OCnB/OCnC,在TOP时置位。64分频,本文选择模式15。使用公式fOCnxPWM=fclk_I/O/N(1+TOP)来计算出TOP的值。


本文将TOP值赋给 OCR1AOCR1B实现占空比为20%100HzPWM信号。将OCR1A乘以20%得到OCR1B。在硬件管脚OCR1A上得到占空比为50%50HzPWM信号,OCR1B上得到占空比为20%100HzPWM信号。


4.      相位修正PWM1231011


首先还是需要将I/O中的OCnA/OCnB/OCnC设置为输出,比较匹配时OCnA电平取反,比较匹配时清零OCnB/OCnC,在TOP时置位。64分频,本文选择模式11。使用公式fOCnxPCPWM=fclk_I/O/2NTOP来计算出TOP的值。


本文将TOP值赋给 OCR1AOCR1B实现占空比为20%100HzPWM信号。将OCR1A乘以20%得到OCR1B。在硬件管脚OCR1A上得到占空比为50%50HzPWM信号,OCR1B上得到占空比为20%100HzPWM信号。


相关寄存器设置请看ATmega128的数据手册。附件是定时器程序以及Proteus仿真图。rar<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户1513083 2008-12-20 18:47

定时器中断服务函数的运行时间应尽可能短,至少不能大于定时器中断的间隔时间,否则将造成定时无效。

用户1400544 2008-12-16 22:30

支持,谢谢博主分享受
相关推荐阅读
用户1513083 2009-07-14 14:52
ucos2.86在44b0上移植问题
程序使用从ucos主页上下载的最新ucos2.86和开发板的启动代码,但是怎么也得不到想要的结果,main.c应用程序中利用ucos2系统提供函数创建的3个任务本来应该循环得到调度的,但却均只被调度一...
用户1513083 2009-06-11 19:47
气晕了
今天四点从实验室出来直奔邮局,到了大厅,说挂号,告诉我到那边买信封。我写好后,给她,他在电子秤上称了一下,给我5.4元的邮票。我就到对面去贴邮票,贴好后我就投进去了,现在才发现,原来没有挂号成。突然想...
用户1513083 2009-05-31 21:29
心已决
拿一年的时间来分手已经很长了,应该考虑清楚了,这一年里,我完全变了,最明显的就是自己静不下来学习,自己都讨厌自己,累了,身心疲惫,为何要如此折磨,已经没有信任了,又何必再让别人伤心流泪。我现在这样是对...
用户1513083 2009-05-12 12:14
MCU和CPLD实现VGA图像显示可行否
请问各位一个问题。我手上有块CPLD板EPM3256,板上没有SRAM,所以只是实现了VGA接口横条、竖条和棋盘格显示,汉字也就只能显示设定好的。我手上还有一块自己做的ATmega128,上面外扩了3...
用户1513083 2009-05-10 20:11
累呀
觉得自己很累,很累。摸不清自己的方向,应该多和人交流交流。从去年七月份出了点问题后,总感觉自己不在状态,不能很好的静下心来,个人问题没处理好,搞得自己很狼狈,最近一阶段自己学习,感觉好像懂了,其实真正...
用户1513083 2009-04-28 22:05
有点开小差
感觉最近一个星期学习的效果不理想,有点不在状态,有点没有方向不知该学些什么,学的很累,要好好调整一下,我觉得只要问题还是自己闭门造车,没有人可以交流。总的来说,就是在做UCOS移植,其实UCOS我去年...
EE直播间
更多
我要评论
2
9
关闭 站长推荐上一条 /3 下一条