历史上的今天
返回首页

历史上的今天

今天是:2025年01月30日(星期四)

2020年01月30日 | 浅谈AVR中定时器几种工作模式

2020-01-30 来源:elecfans

AVR有三个定时计数器,其中定时计数器0和定时计数器2是8位的,定时计数器1是16位。

在学习AVR定时计数器时,刚开始被一大堆的寄存器搞的有点晕了,后来认真的把Datasheet中的有关寄存器先看了一遍,再重新看定时计数器的内容才理清了。这里做个总结吧,加深自己的印象。

浅谈AVR中定时器几种工作模式

定时计数器0和定时计数器2基本上是相同的。以定时计数器0来总结它的几种工作模式的不同。


普通模式:不做介绍,和51里面是一模一样的。

CTC模式:当寄存器TCNT0与OCR0相等时(即匹配),OC0按照COM0[1:0]的值相应的改变(置位,清零或取反)。同时TCNT0清零,TCNT0从0x00重新开始计数,当计数结果和下一个OCR0寄存器中值相等时又发生匹配。发生匹配时,匹配比较标志OCF0置位,即OCF0=1,可申请匹配比较中断。


快速PWM模式:当寄存器TCNT0与OCR0匹配相等时,OC0按照COM0[1:0]的值相应的置位或清零。与CTC模式不同的是TCNT0不会清零,而是继续计数,直到计数为0XFF,此时OC0会发生清零或置位。同时TCNT0从0x00重新开始计数,当计数结果和下一个OCR0寄存器中值相等时又发生匹配。与CTC模式不同发生匹配时,OCF0不会置位。TCNT0计数到0XFF时,计数溢出标志TOV0置位,即TOV0=1,此时可申请溢出中断。


相位可调PWM模式:此模式下,定时计数器是双向计数器(可加可减),,从0x00一直加到0xff,在下一个计数脉冲到来时从0xff一直减到0x00。当COM0[1:0]=2时,在加的过程中,若发生匹配,清零OC0;在减的过程中,若发生匹配,置位OC0。(当COM0[1:0]=3时,和COM0[1:0]=2的情况相反)。与快速PWM模式不同的是,当TCNT0计数到0xff时不会影响到OC0的输出,而是当从0xff减到0x00的过程中与下一个OCR0寄存器的值匹配时,OC0发生改变(加的过程是清零,那这时应该是置位)。当定时计数器计数到0x00时,计数溢出标志TOV0置位,即TOV0=1,此时可申请溢出中断。


以上几种工作模式同时适合定时计数器0,1,2。只是定时计数器1的功能有所增强。下面将会讨论。


星期二我看一个程序时候,那个程序是工作在快速PWM模式,选择计数溢出中断。当时我还想为什么不选择匹配中断而要去等到计数溢出才中断岂不是占用时间了,还去问老师了,现在看来是多么的愚蠢!快速PWM模式根本就没有匹配中断!


定时计数器0和2,在CTC模式下,频率和相位可调。PWM模式下,频率不可调。由频率计数公司就可以看出。不论是CTC还是PWM都可以通过调节OCRn的值去调节占空比。(关于产生PWM波频率的计算公式将会在后文给出的,关于定时计数器的各种寄存器可自己去查看Datasheet)


下面是定时计数器1比0和2的增强功能总结:

1)定时计数器1比0和2有许多增强功能。在PWM模式时,可产生频率和相位都可调的PWM波,这时8位定时计时器0和2所做不到的,因为定时计数器1具备输入捕获功能,即具备输入捕获寄存器ICR1,在PWM模式下,ICR1中可存放一个top值,就是这个top值可以改变PWM波的频率。这点可在频率计算公司看出。

2)定时计数器1有两个输出比较单元和两个输出比较寄存器OCR1A和OCR1B,因此可同时产生2路频率相同,占空比不同的PWM波形。占空比的调整当然由OCR1A和OCR1B来确定。波形在OC1A和OC1B引脚输出。

3)定时计数器1具有输入捕获单元。可以精确的记录外部事件发生的时间。捕获外部事件的信号由引脚ICP1输入。当输入捕获信号产生,TCNT1中的计数值将被写入输入捕获寄存器ICR1(ICR1H,ICR1L)中去。输入捕获信号也可由模拟比较器的AC0单元的输出信号来触发。关于触发的方式有两种,当定时计数器1的控制寄存器B(即TCCR1B)中的第六位ICESE=0,下降沿触发;ICESE=1,上升沿触发。当满足触发条件时,输入捕获单元开始捕获该事件的发生。利用该功能可以来对输入波形频率的测量。如果我没有记错的话在51里面定时计数器也有这个功能的,可以有GATE门控位的设置来达到这个目的。51里面,把GATE置位,那么此时定时计数器的启动由INTX(X=0或1)引脚和TRX(X=0或1)来决定。可先把TRX置位,让定时计数的启动条件还欠缺INTX为高电平(即先让INTX处于低电平),等待INTX变为高电平,那么此时定时计数器启动了,等到INTX变为低电平时定时计数器又被关闭了,那么此时定时计数器计数值即为一个PWM脉宽了。


说到这里突然想到了在AVR里面,定时计数器都有自己的分频器,这里也可以先设置定时计数器的启动条件都满足,但设置为无分频,此时相当于人没有了心脏,定时计数器此时是不工作的。可以在其他什么条件(如一个外部中断里面)满足时,给定时计数器分频,此时定时计数器才工作!


刚才说到中断,与51不同的是,AVR对中断标志位清“0”的操作时向该位写“1”。即AVR清除中断标志位是软件写“1”。值得提醒的是在设置中断寄存器的时候,最好先清除中断标志位,然后马上将相应的中断允许控制位值“1”。


这里还需要说明的是上文提及到的定时计数器波形输出引脚和输入捕获引脚,在使用之前,必须要先设置好它的方向寄存器是输出还是输入。如果是输入的话还需要考虑是否需要上拉电阻。


说了这么多,差点忘记了个人觉得比较重要的一点。定时计数器1是16位的,它的每一个16位的寄存器分别配备了一个8位的TEMP寄存器,用来临时性的保留寄存器的高8位数据。MCU从16位寄存器读数据时时,低8位被送到MCU的同时,高8位被送到TEMP,当MCU读高8位时取的是TEMP中的数据。从MCU写数据16位数据寄存器时,高8位写到TEMP,写低8位的时候,低8位与TEMP中的高8位组成16位数据写到16位寄存器中。即读的时候是先读低8位,再读高8位;写的时候是先写高8位,再写低8位。


最后给出定时计数器常用3种工作模式的设置方法(以定时计数器1为例):

普通模式:

1,根据需要设置时钟源,即设置控制寄存器TCCR1B。

2,根据定时时间和时钟源确定定时器的初值写入到数据寄存器TCNT1H和TCNT1B。

3,设置中断时能位。

4,选择中断号,编写中断服务程序。注意需要在中断服务程序中重载初值写入到TCNT1H和TCNT1B(和51一样的)!


CTC模式:

1,若输出波形,设置端口OC1A或OC1B为输出方式。

2,设置波形发生模式,选择需要的时钟源,即TCCR1B。

3,设置输出模式,即TCCR1A。

4,根据需要设置上限值top(前面提到过的)写入到输出比较寄存器OCR1A。

5,根据公式计算频率。


快速PWM模式:

1,若输出波形,设置端口OC1A或OC1B为输出方式。

2,设置PWM波形模式,选择需要的时钟源,即TCCR1A和TCCR1B。

3,设置波形的频率,即OCR1A。

4,设置波形占空比,即OCCR1B。

6,根据频率公式计算频率。

推荐阅读

史海拾趣

Fong Ya Enterprise Co Ltd公司的发展小趣事

Fong Ya Enterprise Co., Ltd在电子行业中的发展故事

故事一:初创与基础奠定

Fong Ya Enterprise Co., Ltd(以下简称“丰雅企业”)成立于某个时期(具体年份可能因资料限制而未知),自那时起便致力于电子元件领域,特别是电阻器的研发与生产。初期,公司面临着市场竞争激烈、技术壁垒高等挑战,但凭借对电子技术的深刻理解和对市场需求的敏锐洞察,丰雅企业逐步确立了自身的产品定位,即专注于高品质、高性能的电阻器产品。通过不断优化生产工艺和提升产品质量,丰雅企业在电子行业逐渐站稳了脚跟。

故事二:技术创新与产品研发

随着电子行业的快速发展,丰雅企业深刻认识到技术创新的重要性。公司加大了对研发的投入,引进了一批高素质的技术人才,并建立了完善的研发体系。通过不断的技术创新,丰雅企业成功开发出了一系列具有自主知识产权的新型电阻器产品,这些产品不仅性能优越,而且满足了市场对电子元器件日益多样化的需求。同时,公司还积极与国内外知名高校和科研机构开展合作,共同推动电子元件技术的进步。

故事三:市场拓展与国际化战略

在稳固国内市场的同时,丰雅企业积极实施国际化战略,将目光投向了更广阔的国际市场。公司参加了多个国际性的电子展会,与全球各地的客户建立了良好的合作关系。通过提供优质的产品和服务,丰雅企业在国际市场上赢得了良好的口碑和信誉。此外,公司还根据不同国家和地区的市场特点,制定了差异化的营销策略,进一步扩大了市场份额。

故事四:供应链管理优化

为了提高生产效率和降低成本,丰雅企业不断优化供应链管理。公司与多家优质供应商建立了长期稳定的合作关系,确保原材料的质量和供应的稳定性。同时,公司还引入了先进的供应链管理系统,实现了对生产、采购、库存等各个环节的精细化管理。通过优化供应链管理,丰雅企业不仅提高了生产效率,还降低了运营成本,为企业的可持续发展奠定了坚实的基础。

故事五:品牌建设与企业文化

在多年的发展过程中,丰雅企业始终注重品牌建设和企业文化建设。公司坚持“质量第一、客户至上”的经营理念,致力于为客户提供优质的产品和服务。同时,公司还注重培养员工的创新精神和团队协作精神,营造了积极向上的企业文化氛围。通过品牌建设和企业文化的推动,丰雅企业在电子行业中的知名度和影响力不断提升,为企业的长远发展注入了强大的动力。

需要注意的是,由于具体年份和详细数据的限制,以上故事在描述时可能存在一定的概括性。然而,这些故事都基于丰雅企业在电子行业中的实际发展情况而构建,旨在展现其在技术创新、市场拓展、供应链管理和品牌建设等方面的努力和成就。

Danaher Corporation公司的发展小趣事

在十九世纪80年代,丹纳赫集团面对日益严峻的市场竞争,开始推行以精益生产为核心的全新运营方式。这种管理方式不仅强化了其在行业中的领导地位,还逐渐形成了独特的丹纳赫商业系统(Danaher Business System,DBS)。DBS注重持续改进、客户导向和团队合作,成为丹纳赫集团在电子行业取得成功的关键因素。

DDP Engineered LED Solutions公司的发展小趣事

DDP Engineered LED Solutions公司自创立之初,便以技术创新作为公司发展的核心动力。在公司成立的早期,研发团队深入LED照明领域,通过不断实验和改进,成功开发出了一系列高效、稳定的LED照明产品。这些产品不仅具有出色的照明效果,而且具有较长的使用寿命和较低的能耗,迅速在市场上获得了认可。随着技术的不断迭代,DDP不断推出符合市场需求的创新产品,逐渐在电子行业LED照明领域崭露头角。

Ampire Co Ltd公司的发展小趣事

在公司的发展过程中,DDP Engineered LED Solutions公司高度重视团队建设和人才培养。公司建立了完善的组织架构和人力资源管理体系,通过内部培训和外部引进相结合的方式,不断提升员工的专业素养和综合能力。同时,公司还注重营造积极向上的企业文化氛围,激发员工的工作热情和创造力。正是这些努力,让DDP的团队成为了推动公司不断前进的重要力量。

Ethertronics公司的发展小趣事

随着技术的不断成熟和市场的不断扩大,DDP Engineered LED Solutions公司开始注重市场拓展和品牌建设。公司积极参加国内外各类展会和论坛,展示公司的产品和技术实力,与业界同行交流学习。同时,公司还加大品牌宣传力度,通过广告、宣传册等多种渠道提升品牌知名度和美誉度。这些努力不仅让DDP的产品走进了更多客户的视野,也为公司的长远发展奠定了坚实的基础。

杰力(EMC)公司的发展小趣事

杰力(EMC)公司成立于XXXX年,由一群具有丰富电子行业经验的专业人士创立。公司初期专注于功率组件和集成电路(IC)的设计与开发,以满足不断增长的电子市场需求。通过引进先进的生产设备和工艺,杰力迅速建立起一条高效的生产线,并开始为一些小型电子厂商提供定制化的产品。随着产品质量的不断提升和客户口碑的积累,杰力逐渐在市场中树立了良好的品牌形象。

问答坊 | AI 解惑

请问有没有朋友用过PHY芯片

我现在正在调试的系统中用到了RTL8212,是一块千兆双口物理层收发器。现在他能够正常接收数据,但是却不能发送数据,发出的数据在接收方说是错误的数据包。我是用一块FPGA来控制的,现在不知道问题出在哪里,不知道是我的FPGA时序不对还是RTL8212的 ...…

查看全部问答>

华为经典UNIX 教程

目  录 第1章 UNIX操作系统概述 6 1.1 UNIX操作系统简介 6 1.2 UNIX系统组成 6 1.3 与UNIX有关的几个名词 7 第2章 UNIX常用操作 9 2.1 启动终端 9 2.2 登录 9 2.3 UNIX命令 9 2.4 注销(退出UNIX系统) 13 第3章 UNIX文件系统 ...…

查看全部问答>

申请一下,用于电子负载

以前用的是C8051F的,想改成MO。申请一下!!谢谢…

查看全部问答>

关于C51外部电平中断的简单问题

#include main() {   EA=1; EX0=1; IT0=0; while(1) P1=0xff; } void exter0() interrupt 0 { P1=0; } 就这个简单的外部中断,INT0我直接用开关接地了。为什么显示LED是闪亮的,而不是常亮的呢? 我是这样觉得的,如果不对 ...…

查看全部问答>

ARM的串口输出问题

问个困扰了我很久的问题: Uart_Printf这个函数 我看了它的定义。但还是不很懂。而且用它串口输出的话,显示的是乱码。过程是这样的:我选取了某公司写的测试程序中的3个文件:RTC.C 、44BINIT.S和44blib.c。用这3个文件做了工程。(当然了,我还添 ...…

查看全部问答>

不能下载

我用的芯片是149,并口仿真,芯片刚焊上时能下载,一段时间后就不能正常下载,老提示找不到芯片,已经换了好几块芯片了,不知问题出在什么地方,请高手指教!我快崩溃了 !…

查看全部问答>

大侠们,来帮忙分析这个电路图,一个简单的恒流充电电路

今天看到一个简单的恒流充电电路,只有降压,整流,滤波部分能够看得懂,其他的功能好像 没弄得懂,请各位高手不吝赐教:   电路图附下:  …

查看全部问答>

迎接TI杯电赛的一组LaunchPad培训作业照片

2012TI杯电赛早已结束。手机里尚有一些培训时拍的照片,主要布置学生完成的LaunchPad作业。…

查看全部问答>

MSP-EXP430FR5739开发板怎么下载程序

今天收到MSP-EXP430FR5739开发板,发现没有传统的JTAG座,我有开发板一块,光盘没有,愣是不知道这程序怎么下载进去。难道从USB吗…

查看全部问答>

寻求成熟的条码秤方案,重酬!

寻找成熟的MCU条码秤方案,个人、团队、公司等有开发能力的均可参与! 功能要求: 1,支持8台电子秤之间的通信(RS485接口);支持秤与PC之间的通信(RS232接口) 2,支持标签条码或电脑小票打印功能. 3, LCD显示(两块) 4,成本符合市场需求 ...…

查看全部问答>