Я его использую в Normal mode (WGM2 WGM1 WGM0 = 0). Проблема вышла когда тестировал порт ucos'а для авр. Таймер 0 используется для генерации тика юкоса. Для того чтобы получить желаемое время между тиками - таймер вначале устанавлицвается в Normal mode прескалер - 1/1024, потом при каждом прерывании по overflow значение tcnt0 устанавливается так что количество тико до следующего overflow было бы равно требуемому времени между прерываниями. Так вот когда во время прерывания по overflow пытаюсь записать новое значение в tcnt0 , оно не записывается. Проявляется это в виде неизменяемой частоты прерываний равной Fproc/(1024*256) в то время как должно быть Fproc/(1024*(256 - N)) где N значение которое я пытаюсь записать в tcnt0 при каждом прерывании по overflow.
Вообше то менять частту через Normal mode криво. Я затем изменил конфигурацию на Clear timer on compare и получаю требуемую частоту посредством установки OCRA0. Потом посмотрел на новый ucos порт для атмега128 - там оказывается тоже сделано через CTC.
--------------------
Зачем лаять на караван , когда на него можно плюнуть?
|