因此,我正在编写我的第一个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寄存器,并尝试相应地进行匹配。再次没有运气。
有人可以帮助我走上正确的路吗?
谢谢你, 杰米