Цитата
В результате прерывание возникает слишком часто. В чём моя ошибка?
Перед тем как разрешать прерывания (OCIE1A(TIMSK) и SEI) обязательно нужно задать значение OCR1A.
Если в OCR1A будет значение меньше 625, прерывание будет происходить чаще чем раз 10ms.
По-умолчанию при сбросе в OCR1A находится 0, т.о. с установленным флажком CTC прерывание будет генерироваться практически в каждом такте.
Переместите закоментированные строки вперед и раскоментируйте их:
Код
TCCR1B = 0; // Выключить таймер
OCR1A = 625; // Подготовить регистр сравнения
TIMSK = (1 << OCIE1A); // разрешить прерывание
TCCR1B = (1 << CTC1) | 4; // Запустить таймер с предделителем 256 и сбросом по достижению OCR1A