请马老师指点T/C1同时输出2路pwm【恢复】
马老师您好: 用定时器1可以输出两路不同的PWM波形。但是我今天做了让OC1A和OC1B同时输出不同的pwm时却不能控制,就是改变OCR1A和OCR1B的值,其pwm没有改变,我不知道是不是我的配置除了问题,希望马老师能知道一下,给个正确的初始化函数
我的初始化函数为:
void timer1_init(void)
{
TCCR1A= 0XF1; //11110001 8位快速pwm,
TCCR1B= 0X0A; //00001010
TCNT1H= 00;
TCNT1L= 80;
OCR1AH = 00;
OCR1BL = 200;
OCR1BH = 00;
OCR1AL = 200;
PORTD|=(1<<PD4)|(1<<PD5); //设置PD4,5为oc1B,A
DDRD|=(1<<DDD4)|(1<<DDD5);
}
我不知道是什么原因,望老师指点!谢谢 谢谢你的热心回答 // Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 31.25 kHz
// Mode: Fast PWM top=00FFh
// OC1A output:Non- Inv.
// OC1B output: Non-Inv.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xA1;
TCCR1B=0x0C;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
上面是tiny2313v,内部8M,不预分频(我也不知道预不预分频,是否会影响上面的参数,没时间去研究),用cvavr产生的初始化代码。
oc1a和oc1b引脚共阴接2个led,你在主程序不停的++OCR1AL和OCR1BL,led就会由暗到亮,重复,再重复。我的dmx512解码程序就是用这个代码初始化的。
强烈建议,用cvavr吧,事半功倍,听马老师的没错。再说马老师也偶尔要用这个IDE的啊。
页:
[1]