Начал осваивать CTC(Clear Timer on Compare Match) режим таймера для генерации несущей, чтобы в дальнейшем воспользоваться ей для создания IR-канала.
Как работает таймер в данном режиме вроде бы разобрался, НО без граблей не обошлось и в этот раз
Собственно проблема заключается в том, что при установке вывода OC1A в качестве выхода (DDR_OC1A = 1) состояние вывода меняется не в выходном регистре (в моем случае это должен быть PORTB), а в регистре входа (PINB) данного порта. В датащите написано:
The OC1A value will not be visible on the port pin unless
the data direction for the pin is set to output (DDR_OC1A = 1).
Но если ставить DDR_OC1A = 0, состояние вывода не меняется ни в входном, ни в выходном регистрах!
Помогите пожалуйста разобраться в чем проблема? Допустил ли я ошибку в коде, или вывод в данном режиме может функционировать только как вход?
Исходник прилагается.