Написал программу для плавного зажигания светодиодов.
вот основной кусок
Код
void pause (unsigned int a)
{
unsigned int i;
for (i=a;i>0;i--);
}
void init_pwm (void)
{
DDRB=0b1110;
DDRD=0b1100000;
TCCR1A=(1<<COM1A1)|(1<<COM1B1)|(1<<WGM10);
TCCR1B=(1<<CS10)|(0<<CS11)|(0<<CS12);
TCCR0A=(1<<COM0A1)|(1<<COM0B1)|(1<<WGM00);
TCCR0B=(1<<CS00)|(0<<CS01)|(0<<CS02);
OCR1A=0x00; //PB1
OCR1B=0x00; //PB2
OCR0A=0x00; //PD6
OCR0B=0x00; //PD5
}
{
unsigned int i;
for (i=a;i>0;i--);
}
void init_pwm (void)
{
DDRB=0b1110;
DDRD=0b1100000;
TCCR1A=(1<<COM1A1)|(1<<COM1B1)|(1<<WGM10);
TCCR1B=(1<<CS10)|(0<<CS11)|(0<<CS12);
TCCR0A=(1<<COM0A1)|(1<<COM0B1)|(1<<WGM00);
TCCR0B=(1<<CS00)|(0<<CS01)|(0<<CS02);
OCR1A=0x00; //PB1
OCR1B=0x00; //PB2
OCR0A=0x00; //PD6
OCR0B=0x00; //PD5
}
Соответственно получаем 4 ШИМ на выходах PB1, PB2, PD6 и PD5.
Просьба знающих людей ответить на следующие вопросы:
1. Как получить еще 2 ШИМ? Пробовал через TCCR2A и TCCR2B как написано в даташите не получатся, и на каких вообще выходах должны быть эти 2 ШИМа?
2. Почему на выходах PB1 и PB2 напряжение плавно нарастает с 0 до 5 В и остается на 5 В, а на выходах PD6 и PD5 плавно нарастает с 0 до 5 В затем скачком сбрасывается до 0 и снова плавно нарастает. Разве они не должны одинаково работать?
Спасибо огромное за помощь.