Настройка таймеров на 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.