AVR产生PWM波实例程序

上传人:hs****ma 文档编号:478187994 上传时间:2022-11-21 格式:DOCX 页数:10 大小:19.97KB
返回 下载 相关 举报
AVR产生PWM波实例程序_第1页
第1页 / 共10页
AVR产生PWM波实例程序_第2页
第2页 / 共10页
AVR产生PWM波实例程序_第3页
第3页 / 共10页
AVR产生PWM波实例程序_第4页
第4页 / 共10页
AVR产生PWM波实例程序_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《AVR产生PWM波实例程序》由会员分享,可在线阅读,更多相关《AVR产生PWM波实例程序(10页珍藏版)》请在金锄头文库上搜索。

1、AVR 产生 PWM 波实例程序(1) 一个实例:那个程序是用ICC 的向导生成的,专门简单。T0是作为一般8位定时器,频率100KHZ;每次中断将PB0(pin1 )状态反转,产生的是200KHz占空比50%的方波。T1是作为工作模式9:相频可调PW快发生器,频率初始化16KHz占空比50%。请注TCNT促T0的定时器计数值,确实是每个定时器时钟加 1,和一般定时器的计数值寄存 器作用一样。OCR1寐为比较的TOPS。OCR1B乍为匹配输出值。当TCNT1的值增加到OCR1BI等时,OC1B(pin18)清零,确实是对应低电平;然后TCNT处续增加到OCR1A确实是TOP的值,然后TCNT件

2、始减少,那个中间, OC1B(Pin18)状态不变;当TCNT僦少到OCR1B目等时,OC1B(pin18)置1,确实是 对应高电平。 然后TCNT处续减少到0x00(确实是BOTTOM,然后TCNT仅开始增加, 那个中间,OC1B(pin18 )状态不变。OCR1B勺值与OCR1A勺比值确实是PWMJ占空比!因此那个值必须比OCR1AI、。当OCR1B 为0时,PW械就一直为低电平(相当于占空比为 0);当OCR1的OCR1A寸,PW快就 一直为高电平(相当于占空比为100);当OCR1的OCR1A勺一半时,PW限确实是占 空比为50。你能够修改OCR1B勺值,然后重新下载程序运行,看看占空

3、比的改变;也能 够修改OCR1A勺值,然后重新下载程序运行,看看频率的改变,只是要注意修改OCR1A时,同时注意OCR1B勺值不要比OCR1Ak。模式9确实是PWM成中最复杂的一种,只要你懂得了那个,对别的几种PWM 都好懂得。TCNT0 = 0xB0; /set countOCR0 = 0x50;即使工作在normal模式下,那个OCR05旧在和TCNT08行比较,一旦匹配后,就会产 生中断或者改变OC0却上的电平(产生PWMo改变那个值,就会改变中断发生的时刻, 或者改变OC0却上的方波的频率了。T1定时器1的模式9,相频修正模式,能够用来产生波形专门完整的PWMS。TCNT1S置初值,增

4、加到0xFFFF的时刻,然后从0开始计数,那个懂得是正确的。能够画一个波形图对应懂得一下:画一个占空比 50的方波,高电平上平分为 1、 2 两段,低电平上平分为3、4 两段。1确实是TCCNT伙初值力口, -0xFFFF时期,那个时期 OCR1的高电平;2确实是TCCNT伙0x00力口OCR1BW期,那个时期为高电平;匹配后,变为低电平3确实是TCCNT伙OCR1放口一OCR1A时期,那个时期为彳氐电平;4确实是TCCNT伙OCR1腐-OCR1B时期,那个时期为低电平;匹配后,变为高电平TCCNT的初值,确实是保证第一段高电平的时刻,如此才能形成一个完整周期的方波。而且,那个初值应该按照 O

5、CR1B勺值而设,确实是TCCNT= 0xffff-OCR1B+1;如此才能 保证时刻的匹配。如果是模式9,那么每次变化后,算出占空比,算出OCR1B勺值并赋值,会自动在下一个周期改变占空比为新值。easy。重点是:每次给OCR1BS值,会在 下一个 周期 改变占空比。/实例:利用pwmft纵led光暗及峰嗯?器音量大小/ICC-AVR application builder : 2005-4-18 12:46:03/ Target : M16/ Crystal: 4.0000Mhz#include #include #define uchar unsigned char#define uin

6、t unsigned intvoid port_init(void);void timer0_init(void);void init_devices(void);void delay_short(uint t);uchar scan_key(void);void port_init(void)PORTA = 0x00;DDRA= 0x00;PORTB = BIT(PB3);DDRB= BIT(PB3);PORTC = 0x00; /m103 output onlyDDRC= 0x00;PORTD = 0x00;DDRD= 0x00;/ WGM: PWM Phase correct/ desi

7、red value: 1KHz/ actual value:0.980KHz (-2.0%)void timer0_init(void)TCCR0 = 0x00; /stopTCNT0 = 0x01; /set countOCR0 = 0xFF; /set compareTCCR0 = 0x62; /start timer ; 相位修正,8 分/call this routine to initialize all peripheralsvoid init_devices(void)/stop errant interrupts until set upCLI(); /disable all

8、interruptsport_init();timer0_init();MCUCR = 0x00;GICR = 0x00;TIMSK = 0x00; /timer interrupt sourcesSEI(); /re-enable interrupts/all peripherals are now initializedvoid delay_short(uint t) 短延畤uint i;for (i=0;i 0)if (key=1) /减少估空比OCR0_V -= 10;OCR0 = OCR0_V;if (key=2)/ 增加估空比OCR0_V += 10;OCR0 = OCR0_V;i

9、f (key=3) 全黑/占空比悬100%OCR0_V = 0xff;OCR0 = OCR0_V;板接:PB3 JA.1及 JMPD0 K1PD1 K2PD2 K3(2) 有关详细理论讲明:符号定义 :BOTTOMS数器计至U 0x0000时即达至U BOTTOMMAX计数器计到 0xFFFF ( 十进制的 65535) 时即达到 MAXTOP计数器计到计数序列的最大值时即达到TOP。TOP值能够为固定值0x00FF、0X01FF或0X03FF ,或是储备于寄存器OCR1AE ICR1里的数值,具体有赖于工作模式 分5种工作类型1WGM1=0跟51的一般模式差不多,有TOV箍出中断标志,发生于

10、MAX(0xFFFF时1 采纳内部计数时钟 用于 ICP 捕捉输入场合- 测量脉宽 /红外解码( 捕捉输入功能能够工作在多种模式下,而不单单只是一般模 式)2 采纳外部计数脉冲输入 用于 计数,测频其他的应用,采纳其他模式更为方便,不需要像 51 般费神2 CTC模式比较匹配时清零定时器模式WGM1=4,12跟 51 的自动重载模式差不多1 用于输出50%占空比的方波信号2 用于产生准确的连续定时信号WGM1=4寸,最大值由OCR1般定,TOP时产生OCF1A匕较匹配中断标 志WGM1=12,最大值由ICF1设定,TOP时产生ICF1输入捕捉中断标志如果TOP=MAXTOP时也会产生TOV倘出

11、中断标志注:WGM=15寸,也能实现从OC1A俞出方波,而且具备双缓冲功能运算公式: fOCn=fclk_IO/(2*N*(1+TOP)变量 N 代表预分频因子(1 、 8、 64、 256、1024), T2多了(32、128)两级。3 快速 PWMg式 WGM1=5,6,7,14,15单斜波计数,用于输出高频率的 PWMH号(比双斜波的高一倍频率)都有TOV1溢出中断,发生于TOP寸不是MAX跟一般模式,CTC奠式不一样比较匹配后能够产生 OCF1X:匕较匹配中断.WGM1=5f,最大值为0X00FF, 8位辨论率WGM1=6f,最大值为0X01FF, 9位辨论率WGM1=B,最大值为0X

12、03FF, 10位辨论率WGM1=14e,最大值由ICF1设定,TOP时产生ICF1输入捕捉中断(单缓 冲)WGM1=15寸,最大值由OCR1股定,TOP寸产生OCF1耻较匹配中断(双缓 冲,但OC1A等没有PW雌力,最多只能输出方波)改变TOP时必须彳证新的TOP1不小于所有比较寄存器的数值注意,即使OCR1A/殷为0x0000,也会输出一个定时器时钟周期的窄脉冲, 而不是一直为低电平运算公式: fPWM=fclk_IO/(N*(1+TOP)4 相位修正 PWM(式 WGM1=1,2,3,10,11双斜波计数,用于输出高精度的,相位准确的,对称的PWMJ号都有TOV1溢出中断,但发生在 BO

13、OTOM比较匹配后能够产生 OCF1X:匕较匹配中断.WGM1=时,最大值为0X00FF, 8位辨论率WGM1=2t,最大值为0X01FF, 9位辨论率WGM1=M,最大值为0X03FF, 10位辨论率WGM1=1时,最大值由ICF1设定,TOP时产生ICF1输入捕捉中断(单缓 冲)WGM1=1时,最大值由OCR1股定,TOP寸产生OCF1A:匕较匹配中断(双缓 冲,但OC1A等没有PW雌力,最多只能输出方波)改变TOP时必须彳证新的TOP值不小于所有比较寄存器的数值能够输出0%100%空比的PWM&号若要在 T/C 运行时改变TOP 值, 最好用相位与频率修正模式代替相位修正模式。若TOP呆持不变,那么这两种工作模式实际没有区别运算公式: fPWM=fclk_IO/(2*N*TOP)5相位与频率修正PWM(式WGM1=8 9双斜波计数,用于输出高精度的、相位与频率都准确的PWMfc形都有TOV1溢出中断,但发生在 BOOTOM比较匹配后能够产生 OCF1X:匕较匹配中断.WGM1=8t最大值由ICF1设定,TOP时产生ICF1输入捕捉中断(单缓 冲

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号