用atmega8产生双路pwm方波
大家好,我使用atmega8输出频率为50,占空比为50%的双路互补方波,设置如下:DDRB=0x06;
PORTB=0xf9;//设置OC1A,OC1B为输出口,初始输出为0
TCCR1A=(1<<COM1A1)|(1<<COM1A0)|(1<<COM1B1)|(1<<WGM11);
TCCR1B=(1<<WGM13)|(1<<WGM12); //设置为快速pwm方式,A和B输出互补
ICR1=624;
OCR1A=312;
OCR1B=312; //根据公式计算的频率为50,TOP值为624,占空比为为50%,OCR1A为312,OCR1B为312
TCCR1B|=(1<<CS11)|(1<<CS10);//启动定时器1
但按照这个设置后,OC1A和OC1B输出永为0,没有方波输出,也不知道为什么,请高手给以指点,以前没用过PWM。 cs12,cs11,cs10=0; 没有时钟加到PWM上。
改为: TCCR1B=(1<<WGM13)|(1<<WGM12)|(1<<CS10) 我在stduio里调试过了,时钟我已经加上了,TCCR1B|=(1<<CS11)|(1<<CS10)后,我观察输出cs12,cs11,cs10=011;(1<<WGM13)|(1<<WGM12)应该没问题,但就是没反应 你的定时器设置是错误的啊!你现在的模式是CTC啊!!你改一下WGM的设置! MARK,知道了互补PWM模式
页:
[1]