告诉你怎么用ATmega8产生三路PWM信号(修正了上个帖子内容) 中国电子开发网(www.ourdev)  你尚未登录 |登录 |快速注册
|退出 首页 酷贴 搜索 在线  个人功能 -------------------- 末登录不能使用本功能  本网站由阿莫电子邮购独家赞助
论坛首页 -> AVR (原ourAVR) 技术论坛 -> 告诉你怎么用ATmega8产生三路PWM信号(修正了上个帖子内容)
(属于论坛:AVR) 跳转至:  ╟—虚拟总论坛╟┬AVR (原ourAVR) 技术论坛║├AVR32技术论坛║├STM32/STM8
技术讨论区║├CPLD/FPGA║├PSoC(Cypress)可编程片上系统技术讨论区║├ARM技术论坛║├其它Cortex-M3技术讨论区(ST除外)║├51单片机║├PIC单片机║├DSP║├MSP430║├瑞萨单片机(原NEC单片机)║├其它单片机║├都江堰操作系统(djyos)║├RT-Thread实时线程操作系统║└嵌入式操作系统╟┬开源雕刻机DIY活动(及机械、机器人分论坛)║├“春风”数控电源║├GPS应用开源活动║├白沙开源专栏(段式液晶,怀表等)║├四轴飞行DIY论坛║├网站逻辑分析仪开源活动║├开源PLC(暂时关闭,2010春节假期后重开)║├磁悬浮开源设计活动║└“魏坤手持数字示波仪”开源DIY活动╟┬STM8手持示波仪(已完成)║├开源充电器设计活动(已完成)║├Mini
DVD 应用与DIY(已完成)║├ATmel蜗牛触摸演示板Snail
Touch(已完成)║├RF通信应用(筹备)║└PLC开源设计活动(已经暂停)╟┬电子产品║├USB║├电源║├通信技术║├视频捕捉与处理║├电子零件与线路║├行业标准与规范║├PCB(Protel等)║├电路仿真(Proteus等)║├音响、高清视频║└手机╟┬Fluke(福禄克)仪器专栏║├示波器║├万用表║├信号发生器║├基准源║└其它仪器╟┬西门子PLC║├三菱PLC║├台系PLC║├大陆PLC║└其它PLC╟┬电脑综合论坛║├Google(浏览器Chrome)║├上位机软件开发(Delphi,C++等)║└网页编程(网站开发)讨论区╟┬智能小车║├航空模型讨论区║└开源自充电清扫小车╟┬马潮AVR专栏║├小俊(qwernet)专栏║├傻孩子(Gorgon
Meducer)专栏║└shaoziyang专栏╟┬
水坛,招聘,淘宝超值,二手交易,寻器件等║└垃圾收集区(定期删除)╙┬阿莫淘金正在进行中 ├阿莫淘金网友置换、讨论区 ├阿莫淘金技术讨论区 └阿莫淘金(已经完成)
未登录
↓↓ 告诉你怎么用ATmega8产生三路PWM信号(修正了上个帖子内容) 回复数:75,点击数:6916
【楼主位】 haohaosdu
积分:5
派别:
等级:------
来自:
上次的帖子频率计算有点问题,现在修正一下.
小弟我因为做毕设用到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产生三路频率31.25K,占空比分别为1/3 1/2 2/3 PWM 的程序.      8M
#include <avr/io.h> 
void main(void) 
PORTB=0x00; 
DDRB=0x0E; 
// T/C1 初始化 
include怎么用TCCR1A=0xA1;     
TCCR1B=0x09;    //匹配时清零,TOP:255,频率:8M/256=31.25K
OCR1A=85;      //占空比:1/3 
OCR1B=128;    //占空比:1/2 
// T/C2 初始化 
TCCR2=0x69;    //匹配时清零,TOP:255,频率:31.25K 
OCR2=170;      //占空比:2/3 
while (1); 
用示波器观察过,占空你很精确,频率实测是30.22K,与理论值有点误差,可能频率高了,精确度就达不到了.
希望以上对初学者有所帮助. 
2008-05-14,09:28:07  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【1楼】 jimtien
积分:79
派别:
等级:------
来自:
我是初学者,楼主的资料有用!我学会了,谢谢!
我把注释再做详细一些,发上来。
同时做了一个占空比调节循环,可以观察到占空比从0~100%的变化过程(在Proteus中仿真)
#include<avr/io.h>
void delay(void)
{
unsigned int i,j;
for(i=0; i<100; i++)
for(j=0; j<10; j++);
}
int main(void)
{
unsigned char i;
PORTB=0x00; 
DDRB=0x0E; 
// T/C1 初始化 
TCCR1A=0xA1;    //COM1A1~0 = 10  ->
升序计数时比较匹配将清零OC1A/OC1B,降序
计数时的比较匹配将置位OC1A/OC1B
//COM1B1~0 = 10   
//WGM11~10 = 01  -> 8位快速PWM
TCCR1B=0x09;  //WGM13~12 = 01
/
/CS12~10 = 001  ->时钟选择:无预分频
//匹配时清零,TOP:255,频率:8M/256=31.25K 
OCR1A=85;      //85/255 = 1/3 ,占空比:1/3 
OCR1B=128;      //128/255 = 1/2 占空比:1/2 
// T/C2 初始化 
TCCR2=0x69;    //WG21 = 1, WG20 = 1 -> 快速PWM, TOP=255
//C0M21 = 1, COM20 = 1  -> 比较匹配发生时OC2置位,计数到TOP时OC2清零
//匹配时清零,TOP:255,频率:31.25K 
OCR2=170;      //170/255 = 2/3 , 占空比:2/3 
//占空比循环变化
while (1)
{
for(i=0; i< 255; i ++)
{
OCR1A = i;
OCR1B = i;
OCR2 = i;
delay();
}
(原文件名:1.gif)
引用图片
本贴被 jimtien 编辑过,最后修改时间:2008-05-15,11:15:43.
2008-05-15,11:14:49  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【2楼】 gwh1128
积分:190
派别:
等级:------
来自:
记下
2008-05-21,16:02:56  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【3楼】 jiongeyes 书册糕
积分:169
派别:
等级:------
来自:潮州,现在广州 单身
学习,留个位,
2008-12-23,18:03:29  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【4楼】 ylei12
积分:801
派别:
等级:------
来自:
mark
2008-12-28,19:52:52  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【5楼】 guojielong777
积分:69
派别:
等级:------
来自:
mark
2008-12-28,21:15:02  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【6楼】 kevinzcp
积分:553
派别:
等级:------
来自:
mark 
2008-12-28,22:19:56  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【7楼】 ycmzq
积分:22
派别:
等级:------
来自:
学习了,谢谢楼主。
2008-12-29,09:31:36  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【8楼】 zxlcmc
积分:50
派别:
等级:------
来自:
留个记号
2009-01-08,21:02:34  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【9楼】 naohbbq
积分:45
派别:
等级:------
来自:广东广州
记号
2009-05-04,21:57:28  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【10楼】 longquan shuang
积分:1811
派别:
等级:------
来自:中原工学院
mark
__________________________
我**了上学
2009-05-04,22:18:00  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【11楼】 wonderfulsf
积分:76
派别:
等级:------
来自:
mark!
2009-05-04,22:30:01  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【12楼】 huangjiyue
积分:166
派别:
等级:------
来自:
HAO!!!
2009-05-05,12:42:06  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【13楼】 gzwireless
积分:130
派别:
等级:------
来自:
mark
2009-05-05,13:05:39  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【14楼】 zenboys
积分:187
派别:
等级:------
来自:
马上就能用到了
2009-05-06,08:46:27  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【15楼】 0620221
积分:259
派别:
等级:------
来自:
mark
2009-06-05,09:08:14  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【16楼】 lizhihuanok 欢少
积分:47
派别:
等级:------
来自:
mark
__________________________
我原以为我只是颓废,现在才知道是报废~~~
2009-06-09,11:29:37  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【17楼】 yaonui
积分:175
派别:
等级:------
来自:PY
搬个凳子学习
2009-06-09,11:33:05  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【18楼】 yaonui
积分:175
派别:
等级:------
来自:PY
搬个凳子学习
2009-06-09,11:33:29  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【19楼】 anxiangbo
积分:805
派别:
等级:------
来自:山东
记号
__________________________
qq 15287336
2009-06-09,12:44:43  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【20楼】 benladn911 AVR猎手
积分:2506
派别:
等级:------
来自:孤独地带
呵呵,谢谢分享~
__________________________
my blog:    /    A wound makes a
2009-06-09,12:48:38  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【21楼】 coslight_dt 年少轻狂
积分:406
派别:
等级:------
来自:哈尔滨
不错
2009-06-09,12:54:05  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【22楼】 bbi3014
积分:422
派别:
等级:------
来自:
mark
2009-06-11,13:13:38  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【23楼】 wcm_e
积分:628
派别:
等级:------
来自:
没试过, 记号
2009-06-11,22:34:22  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【24楼】 lv998127
积分:668
派别:
等级:------
来自:
占位学习!
2009-06-12,08:22:06  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【25楼】 hongxp
积分:32
派别:
等级:------
来自:鹭岛
GOOD!
2009-09-17,10:31:39  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【26楼】 qxs5264
积分:555
派别:
等级:------
来自:鹭岛
不错!正在用!
2009-09-18,17:30:53  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【27楼】 ls81250
积分:85
派别:
等级:------
来自:
学习! 
2009-09-19,18:46:47  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【28楼】 51hubao
积分:118
派别:
等级:------
来自:
mark1
2009-09-20,13:28:47  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【29楼】 sunmy 混沌
积分:425
派别:
等级:------
来自:
xuexi
__________________________
shop62440936.taobao/
2009-09-26,15:27:37  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【30楼】 ljh2688 刘工
积分:24
派别:
等级:------
来自:
学习
2009-09-27,17:47:56  资料  邮件  回复  引用回复  ↑↑  ↓↓        编辑  删除   
【31楼】 rlzqg
积分:4

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。