搜索
bottom↓
回复: 23

告诉你怎么用ATmega8产生3路PWM信号

[复制链接]

出0入0汤圆

发表于 2008-5-12 18:49:57 | 显示全部楼层 |阅读模式
告诉你怎么用ATmega8产生3路PWM信号
小弟我因为做毕设用到AVR的三路PWM功能,所以开始学习ATmega8,刚开始到论坛里看了一些有关帖子,
还是没弄明白,最后我用了2天时间专心研究数据手册和其他一些ATmega8资料,终于知道怎么产生了.
用ATmega8的T/C1和T/C2可以产生三路PWM 信号.
快速PWM 的产生就是先设定一个TOP值再设定一个比较值,然后,计数器开始计数,比如保持输出1,计数到设定的比较值时,电平变为0,并维持,然后继续计数到TOP
电平再变为1,如此重复循环.
1.T/C1可以产生2路(OC1A即PB1 OC1B即PB2).T/C2产生一路(OC2即PB3).
2.需要设定T/C1的寄存器有四个 TCCR1A TCCR1B(这两个寄存器一起决定了两路PWM信号的产生方式,频率和TOP值) OCR1A(此值/TOP就是占空比) OCR1B(设定第二路PWM的占空比)
2.需要设定T/C2的寄存器有2个  TCCR2(同理,这个寄存器决定了第三路PWM信号的产生方式,频率和TOP值 ) OCR2(这个寄存器决定占空比)

上面所述只能产生几个固定频率的PWM信号(占空比可以随便调),并且前两路的频率是一样的.如果想产生自己想要频率的PWM,需要用OCR1A 设定OCR1B的TOP值,由OCR1B产生PWM,此时OCR1A只能产生占空比50%的PWM.
下面是我用ATmega8产生三路频率32K,占空比分别为1/3 1/2 2/3 PWM 的程序.
#include <avr/io.h>
void main(void)
{
PORTB=0x00;
DDRB=0x0E;

// T/C1 初始化
TCCR1A=0xA1;   
TCCR1B=0x09;    //匹配时清零,TOP:255,频率:32K
OCR1A=85;      //占空比:1/3
OCR1B=128;    //占空比:1/2
// T/C2 初始化
TCCR2=0x69;    //匹配时清零,TOP:255,频率:32K
OCR2=170;      //占空比:2/3

while (1);
      
}
希望以上对初学者有所帮助.

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2008-5-12 18:52:10 | 显示全部楼层
补充:系统时钟频率8M

出0入0汤圆

发表于 2008-5-12 20:35:01 | 显示全部楼层
问一下:你试过吗??能产生32K这么高的频率吗???
我用mega8的T/C1实现过2路输出,快速PWM模式,不过频率不能做的很高

出0入0汤圆

发表于 2008-5-12 20:37:05 | 显示全部楼层
记号啊,用视波器看了没有

出0入0汤圆

 楼主| 发表于 2008-5-13 19:15:38 | 显示全部楼层
我试过了,用示波器看了,占空比很精确,频率是30.22KHz,理论值是8M/256=32K,有些出入.可能频率高了,精确度就降低了.

出0入0汤圆

发表于 2008-11-7 09:39:29 | 显示全部楼层
記號
头像被屏蔽

出0入0汤圆

发表于 2008-11-7 08:33:35 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入8汤圆

发表于 2008-11-6 23:12:13 | 显示全部楼层
好贴

出0入0汤圆

发表于 2008-11-6 22:27:38 | 显示全部楼层
记号/////

出0入0汤圆

发表于 2008-11-6 22:12:50 | 显示全部楼层
做个记号!!

哈哈哈

出0入0汤圆

发表于 2008-11-6 21:58:56 | 显示全部楼层
谢谢,正在学习!

出0入0汤圆

发表于 2008-11-11 20:37:02 | 显示全部楼层
楼主这么简单的东西也拿出来?

出0入22汤圆

发表于 2008-11-11 19:29:14 | 显示全部楼层
谢谢,可能会用到。

出0入0汤圆

发表于 2008-11-11 19:25:28 | 显示全部楼层
好东西,呵呵

出0入0汤圆

发表于 2008-11-11 18:33:09 | 显示全部楼层
记号

出0入0汤圆

发表于 2008-11-7 13:09:08 | 显示全部楼层
mark&nbsp;记号&nbsp;不错&nbsp;好帖&nbsp;学习&nbsp;谢谢&nbsp;顶&nbsp;



哈哈~

出0入0汤圆

发表于 2008-11-7 13:03:06 | 显示全部楼层
记号

出0入0汤圆

发表于 2012-6-27 11:05:40 | 显示全部楼层
收藏以后留着用。

出0入0汤圆

发表于 2012-9-8 21:18:37 | 显示全部楼层
MMMMMMMMMMMMM

出0入0汤圆

发表于 2014-2-18 11:18:57 | 显示全部楼层
你好,http://zhidao.baidu.com/question ... ?quesup2&oldq=1能帮忙解答下吗?

出0入0汤圆

发表于 2014-3-10 21:58:49 | 显示全部楼层
楼主,明显用示波器测出来才3,6khz 是不是我的熔丝位有问题 谢谢

出0入0汤圆

发表于 2014-3-25 15:41:56 | 显示全部楼层
好人啊~~~~~~~~~~~~~~~~~感激不尽

出0入0汤圆

发表于 2014-4-12 16:44:47 | 显示全部楼层
mark                     

出0入0汤圆

发表于 2014-4-12 20:25:49 来自手机 | 显示全部楼层
有用,谢谢                    
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 19:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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