| 
 
| 请问各位: 最近调试AVR mega88的两路PWM,使用快速模式,不是很明白,请了解的朋友不吝赐教,这个OC1A,OC1B在使用的时候需要注意什么?
 我想先使用OC1A,然后更改寄存器使用OC1B,分别控制不同颜色的LED,为什么不能实现? 在使用呢PWM的时候不可以两个通道进行切换么?
 以下是我的测试程序,希望大家指正
 void timer_init(void)
 {
 TCCR1A=0x82;定时器/计数器1 两路PWM,匹配清零
 //0x82中A是指COM1A1:COM1A0置为10,COM1B1:COM1B0置10,即比较匹配时OCn置0;
 //0x82中2是指WGM11 WGM10置为10与下方控制寄存器A一同控制选择快速PWM模式6
 
 TCCR1B|=0x09;//定时器/计数器1的控制寄存器B;
 //0x02中0是指将WGM13 WGM12置为01,CS12 CS11 CS10置为010
 //WGM13 WGM12 WGM11 WGM10为0110时,选择快速PWM格式;
 //CS12 CS11 CS10置为001表示选择1分频模式;
 MCUCR=0x00;
 
 }
 
 void main()
 {
 port_init();
 timer_init();
 
 while(1)
 {
 
 for(count=0;count<512;count++) //OCR=0时,LED最亮,然后逐渐变暗
 {
 OCR1A=count; //比较匹配寄存器赋值
 
 _delay_ms(5); //延时一段时间,以观察效果
 }
 _delay_ms(1500); // LED最暗时,延时一段时间
 
 TCCR1A=0x22;
 for(count=0;count<512;count++) //OCR=512时,LED最暗,然后逐渐变亮
 {
 OCR1B=512-count;
 _delay_ms(5);
 }
 _delay_ms(1500); //LED最亮时,延时一段时间
 
 
 }
 
 }
 调试的时候,在初始化的时候对TCCR1A进行设定的值,可以改变OC1A或者OC1B输出,但是在主循环中更改输出通道无法实现,不明白,当实现PWM之后,为什么改变这个寄存器的值,没有反应?就是我标注的部分。
 | 
 |