Какой микроконтроллер вы используете?
Одна проблема, которую я могу заметить, - это отсутствующая инициализация OCR1A
, которая устанавливает верхнюю часть счетчика, поэтому ваш счетчик никогда не подсчитывает значение сравнения, поскольку по умолчанию OCR1A
равно нулю.
Так что, возможно, вам следует написать в OCR1A
вместо OCR1B
.
один совет:
более новые avr-ядра поддерживают переключение выводов посредством простой записи в регистр выводов (смотритев паспортах раздел I / O-Ports).это экономит некоторые циклы для чтения и xor
.Так что PORTC ^= (1 << 0);
эквивалентно PINC = (1<<0);