Настройка таймеров на PWM в Atmega2560
- Войдите на сайт для отправки комментариев
Втр, 13/10/2020 - 20:11
Всем доброго!
Достал из загашника свою Мегу и решил применить, но вот уже несколько часов не догоню где что пропустил
int main(void)
{
TCCR3A = (1 << COM3A1) | (1 << COM3B1) | (1 << COM3C1) | (1 << WGM30);
TCCR3B = (1 << CS31);
TCCR4A = (1 << COM4A1) | (1 << COM4B1) | (1 << COM4C1) | (1 << WGM40);
TCCR4B = (1 << CS41);
DDRE |= (1 << PE3);
DDRE |= (1 << PE4);
DDRE |= (1 << PE5);
DDRH |= (1 << PH3);
DDRH |= (1 << PH4);
DDRH |= (1 << PH5);
OCR3A = 50;
OCR3B = 150;
OCR3C = 250;
OCR4A = 50;
OCR4B = 150;
OCR4C = 250;
/* Replace with your application code */
while (1)
{
}
}
Третий таймер работает как я и задумал, по всем трём выводам. Но вот четвертый (и пятый, пробовал, тоже) никак не могу заставить трудиться. OCR4A работает как надо - от 0 до 255 полный цикл, но вот OCR4B и OCR4C считают до 128 и соответственно до 50% заполнения - и в 0. По дашику, вроде как, настройки одинаковые у них. Где накосячил?
Вопрос снят ... добрался до дома, проверил осциллографом - всё работает. Грёбанный Proteus.