使用avr实现pwm波

使用avr实现pwm波

ID:3156705

大小:41.50 KB

页数:11页

时间:2017-11-20

使用avr实现pwm波_第1页
使用avr实现pwm波_第2页
使用avr实现pwm波_第3页
使用avr实现pwm波_第4页
使用avr实现pwm波_第5页
资源描述:

《使用avr实现pwm波》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、使用AVR实现PWM波分类:C/C++使用AVR的定时器实现PWM,具有众多优点。1:AVR定时/计数器的PWM模式可以分成快速PWM和频率(相位)调整PWM两大类。快速PWM可以得到比较高频率的PWM输出,但占空比的调节精度稍微差一些。此时计数器仅工作在单程正向计数方式,计数器的上限值决定PWM的频率,而比较匹配寄存器的值决定了占空比的大小。PWM频率的计算公式为:PWM频率=系统时钟频率/(分频系数*(1+计数器上限值))频率(相位)调整PWM模式的占空比调节精度高,但输出频率比较低,因为此时计数器仅工作在双向计数方式。同样计数器的上限值

2、决定了PWM的频率,比较匹配寄存器的值决定了占空比的大小。PWM频率的计算公式为:PWM频率=系统时钟频率/(分频系数*2*计数器上限值))在PWM方式中,计数器的上限值有固定的0xFF(8位T/C);0xFF、0x1FF、0x3FF(16位T/C)。或由用户设定的0x0000-0xFFFF,设定值在16位T/C的ICP或OCRA寄存器中。而比较匹配寄存器的值与计数器上限值之比即为占空比。2:应用例子用PWM方式来产生一个1KHz左右的正弦波,幅度为0-Vcc/2。程序中使用ATmega128的8位T/C0,工作模式为相位调整PWM模式输出,

3、系统时钟为8MHz,分频系数为1,其可以产生最高PWM频率为:8000000Hz/510=15686Hz。每16次输出构成一个周期正弦波,正弦波的频率为980.4Hz。PWM由OC0(PB4)引脚输出。参考程序如下(ICCAVR)。//ICC-AVRapplicationbuilder:2009-04//Target:M128//Crystal:8.0000Mhz#include#include#pragmadata:code//随后的数据存放在Flash区域//128点正弦波样本表constunsi

4、gnedcharauc_SinParam[128]={64,67,70,73,76,79,82,85,88,91,94,96,99,102,104,106,109,111,113,115,117,118,120,121,123,124,125,126,126,127,127,127,127,127,127,127,126,126,125,124,123,121,120,118,117,115,113,111,109,106,104,102,99,96,94,91,88,85,82,79,76,73,70,67,64,60,57,54,51,4

5、8,45,42,39,36,33,31,28,25,23,21,18,16,14,12,10,9,7,6,4,3,2,1,1,0,0,0,0,0,0,0,1,1,2,3,4,6,7,9,10,12,14,16,18,21,23,25,28,31,33,36,39,42,45,48,51,54,57,60};#pragmadata:data//随后数据放在RAM区unsignedcharx_SW=8,X_LUT=0;#pragmainterrupt_handlertimer0_ovf_isr:17//中断常量表位置voidtimer0_ovf_

6、isr(void){X_LUT+=x_SW;//新样点指针//学习此种编程风格if(X_LUT>127)X_LUT-=128;//样点指针调整OCR0=auc_SinParam[X_LUT];//取样点指针到比较匹配寄存器}voidmain(void){DDRB

7、=0x10;//PB4(OC0)输出TCCR0=0x71;//相位调整PWM模式,分频系数=1,正向控制OC0/*TCCR0?Bit7–FOC0:强制输出比较FOC0仅在WGM指明非PWM模式时才有效。但是,为了保证与未来器件的兼容性,在使用PWM时,写TCCR0要对其清零。对其写1

8、后,波形发生器将立即进行比较操作。比较匹配输出引脚OC0将按照COM01:0的设置输出相应的电平。要注意FOC0仅仅是一个启动信号,真正对强制输出比较起作用的是COM01:0的设置。OCFnOCRnTCNTnOCRnValueOCRn-1OCRnOCRn+1OCRn+2clkI/OclkTn(clkI/O/8)OCFnOCRnTCNTn(CTC)TOPTOP-1TOPBOTTOMBOTTOM+1clkI/OclkTn(clkI/O/8)Bit76543210FOC0WGM00COM01COM00WGM01CS02CS01CS00TCCR0读/

9、写WR/WR/WR/WR/WR/WR/WR/W初始值0000Cs2,Cs1,Cs0=1,预分频系数为1WGM01WGM00=1相位校正PWM模式*/TIMSK=0x

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。