Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: проблема с ATtiny2313
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
159753258456
Понадобилось использовать таймер, для осуществления более-менее предсказуемой задержки. AVRstudio подтверждает мои догадки: при пошаговой отладке функция delay работает, но в реальном устройстве программа зависает именно в функции delay(). В документации описано, что регистры TCNT1H и TCNT1L доступны для чтения, хотя у меня сложилось впечатление, что это не так.
Подскажите, что я делаю не так?

void InitTimer(void)
{ TCCR1A = 0;
TCCR1B = (0<<CS12)|(0<<CS11)|(1<<CS10);
TCCR1C = 0;
}
void delay(int value)
{
TCNT1 = value;
while(TCNT1H);
}
SlavaG
для чтения значения TCNT1H надо сначала прочитать значение TCNT1L, т.к. доступ к TCNT1H осуществляется через временный регистр, и значение в этом регистре обновляется при доступе к TCNT1L. Для записи, сначала задаём TCNT1H, затем TCNT1L. Так со всеми 16-ти битными регистрами.
159753258456
Цитата(SlavaG @ Aug 20 2007, 16:23) *
для чтения значения TCNT1H надо сначала прочитать значение TCNT1L, т.к. доступ к TCNT1H осуществляется через временный регистр, и значение в этом регистре обновляется при доступе к TCNT1L. Для записи, сначала задаём TCNT1H, затем TCNT1L. Так со всеми 16-ти битными регистрами.


всё стало ясно, спасибо!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.