Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Глюк у атмега1280 таймер 0
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
_artem_
Встретился такой глюк - таймер 0 регистр TCNT0 не восприминает запись в него (из своей программы обработчика прерываний по overflow ) когда таймер работает в режиме Normal mode.
Может я глючу ?)
SasaVitebsk
Цитата(_artem_ @ Jul 21 2007, 19:59) *
Встретился такой глюк - таймер 0 регистр TCNT0 не восприминает запись в него (из своей программы обработчика прерываний по overflow ) когда таймер работает в режиме Normal mode.
Может я глючу ?)


А как это выглядит. Может я проверю. У меня правда только 2560 и 640. Но это в принципе один и тот же кристалл. Я использую таймер 0 в режиме сравнения. И все таймеры до пятого. smile.gif У меня всё работает. Но может не в том режиме. Давай попробую.
_artem_
Я его использую в 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.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.