通过单独的时序控制多个PWM

时间:2019-02-13 00:49:48

标签: avr atmega atmel microprocessors

因此,我正在编写我的第一个AVR C项目(ATMEGA32U4),以控制三个单独的LED的红色,绿色和蓝色。 尽管我似乎无法控制多个PWM引脚/计时器,但我可以控制一个PWM引脚/计时器。我觉得我在寄存器中缺少某些东西。这是我通过一个引脚/计时器来实现的目的:

void pwm8bit(){
    // PWM Pins: PB6 PB7 PC6
    DDRB |= (1 << PORTB6) | (1 << PORTB7);
    DDRC |= (1 << PORTC6);

    TCCR0A = (1 << COM0A1) | (1 << WGM00) | (1 << WGM01);

    TIMSK0 = (1 << TOIE0);

    OCR3A = (RotaryRedValue / 100.0) * 255.0; // PC6
    OCR0A = (RotaryGreenValue / 100.0) * 255.0; // PB7
    OCR1B = (RotaryBlueValue / 100.0) * 255.0; // PB6

    TCCR0B = (1 << CS00);
}

绿色的一个有效,而其他的则永久保留,我认为这是因为计时器为TCCR"0A",所以我确实尝试将TCCR"3A"添加为红色的相同值(这里不走运) )。 然后,我在文档中查看了相同的计时器寄存器,并注意到它具有与它们关联的不同的COM,WGM和CS寄存器,并尝试相应地进行匹配。再次没有运气。

有人可以帮助我走上正确的路吗?

谢谢你, 杰米

0 个答案:

没有答案