Настройка таймеров на PWM в Atmega2560

KindMan
Offline
Зарегистрирован: 19.12.2018

Всем доброго!

Достал из загашника свою Мегу и решил применить, но вот уже несколько часов не догоню где что пропустил

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. По дашику, вроде как, настройки одинаковые у них. Где накосячил?

KindMan
Offline
Зарегистрирован: 19.12.2018

Вопрос снят ... добрался до дома, проверил осциллографом - всё работает. Грёбанный Proteus.