找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9666|回复: 3
收起左侧

AVR单片机ATmega16之初识PWM模式(超详细)

[复制链接]
ID:555743 发表于 2019-6-16 17:22 | 显示全部楼层 |阅读模式
本帖最后由 放轻菘 于 2019-6-16 22:25 编辑

        书本上开篇关于这部分的描述是这样讲的:相对于一般的8位单片机而言,AVR不仅配备了更多的定时/计数器接口,而且还是增强型的例如通过定时/计数器比较匹配寄存器相互配合,生成占空比可调的方波信号,脉冲宽度调制输出的PWM信号,用于D/A转换,电机无极调速控制、变频控制等(这样一段书上的导语其实已经很好地概括了PWM的产生原理,和用途),下面说说具体的实现方式吧(都是以T/C0定时器为例来实现的)。按照我自己的粗略总结大致分为三大类(下面会逐条详细解释):1.CTC模式产生(50%占空比的方波信号) 2.快速PWM模式   3.相位可调PWM模式 (因为是初学如有不对,还望朋友们指正!!!)

先来看看这东西对应的输出引脚吧: PWM1.jpg

(根据图上的信息可以知道T/C0定时器对应的输出口为OC0对应的是PB3管脚,同理:T/C2对应的为OC2对应PD7)
   
一.CTC模式产生(50%占空比的方波信号)   
一言以蔽之:用计时器定出时间,在设定时间到时,改变相关引脚的输出电平值,每次取反(就跟异或原理相同)。恰好每次时间间隔都相同,这样就能理解为什么是50%占空比了(当然这种用法比较特殊,也有着它的局限性:比如占空比就不可调)
    下面讲讲具体的配置吧:
   1.TCNT0:计数寄存器(每次到与OCR0匹配时就会清零TCNT0的值,所以也不用配置了)
   2.OCR0:输出比较寄存器
   3.TIMSK:定时/计数器屏蔽寄存器(这里用不上)
   4.TIFR:定时/计数器中断标志寄存器(这里也用不上)
   5.TCCR0:主要的配置就是这个寄存器了(它的COM01(5)和COM00(4)配置成01,即为比较匹配时,触发OC0(OC0为原OC0的取反)
PWM2.jpg
这里有一个公式来计算其他频率(占空比仍为50%):输出的频率=选定的时钟/(2*N(1+OCR0))         N:为分频数

二.快速PWM模式:
PWM3.jpg

在该模式下又分正向比较匹配输出和反向比较匹配输出:
PWM5.jpg

(是正向的话,计数到设定匹配值管脚输出0,计数到255(0xff)时管脚输出1,反向的话计数到设定匹配值管脚输出1,计数到255(0xff)时管脚输出0


TCNT0计数到255(oxff)时溢出标志位TOV0置1,可以用来申请中断。可以在中断服务程序中修改OCR0的值
②OC0的输出的PWM波形频率计算公式:PWM的频率=所选时钟源频率/256N      (N为分频数)

③通过设置OCR0的值便可获得不同占空比的脉冲波形
④该模式是单程向上加1计数的






三.相位可调PWM模式
PWM4.jpg

与快速PWM模式类似的,也有正反向,只不过多了个减数的过程与上个模式的相比,这个是先加数过程和OCR0比一次,后又从255减下来跟OCR0再比一次,这样一加一减算作一个完整的过程。
PWM6.jpg


(随意吐槽一句,写书就是喜欢写的高大上一点,就是不喜欢说人话,emmmmm)
(正向比较匹配输出时,TCNT0加1计数与OCR0比较,OC0输出0,从255减到OCR0,OC0输出1,正向比较匹配输出时,TCNT0加1计数与OCR0比较,OC0输出1,从255减到OCR0,OC0输出0


TCNT0计数0x00时溢出标志位TOV0置1,可以用来申请中断。可以在中断服务程序中修改OCR0的值
②OC0的输出的PWM波形频率计算公式:PWM的频率=所选时钟源频率/510N      (N为分频数)
③通过设置OCR0的值便可获得不同占空比的脉冲波形
④该模式双程计数


  
总结:通过以上两种模式PWM对比,十分直观,除了③相同,其他还是有些差别和相似点的
    相信机制的你也发现了,快速PWM模式采用单程计数方式,所以它可以产生比相位可调PWM模式高1倍频率的PWM波。因此快速PWM模式适用于电源调整,DAC等应用。相位可调PWM模式特性(即OC0逻辑电平的改变不是固定在TCNT0=0x00处),适用于电机控制一类的应用


无论是快速还是相位可调模式下,占空比计算均可用这个公式:
OCR0的的(数)/计数器上限的值(0xff 255)




      想了想还是把内些常见寄存器的配置放上来吧,不然总觉的配不上超详细这几个字,大家看看就行,我就不多逼逼,哈哈
PWM7.jpg PWM8.jpg PWM9.jpg PWM10.jpg PWM11.jpg



大家觉得有用多多支持鼓励,做这版真的是花了不少时间

谢谢啦,欢迎批评指正










评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:552794 发表于 2019-6-19 08:46 | 显示全部楼层
好童鞋,太优秀了!学以致用。
回复

使用道具 举报

ID:555743 发表于 2019-6-19 10:05 | 显示全部楼层
chinabj2019 发表于 2019-6-19 08:46
好童鞋,太优秀了!学以致用。

还得跟论坛上的大神多学习
回复

使用道具 举报

ID:220026 发表于 2020-5-23 17:23 | 显示全部楼层
辛苦了 这个得常看常新时间久点又忘记了,做个MARK
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表