完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
告诉你怎么用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 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); } 希望以上对初学者有所帮助. 小弟我因为做毕设用到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 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); } 希望以上对初学者有所帮助. |
|
相关推荐
12 个讨论
|
|
|
能产生3路 200Hz频率的pwm吗?
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
865个成员聚集在这个小组
加入小组AVR Atmega16 Bootloader程序与上位机LabView程序
5197 浏览 6 评论
#include <ioavr.h>这个头文件我应该下什么编译器
7798 浏览 0 评论
3080 浏览 2 评论
3129 浏览 1 评论
10114 浏览 1 评论
/7
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 16:17 , Processed in 0.816106 second(s), Total 63, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2101