Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Часы на МЕГЕ128, работающие на прерываниях
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
nagserg
Такая задача сделать время на прерываниях независимо от основной задачи.
Как можно сделать задержку в 1 сек на таймере0?

Устанавливаю делитель timer0/1024, получается 16525 Гц, т.е. программа должна попадать в прерывание по-моему 16525 раз в секунду, потом посчитать до 16525 и получится 1 секунда. Что-то я не так делаю, что программа попадает в прерывания частотой всего 100 Гц вместо 16525.

Подскажите, что я не так делаю?
vet
С частотой Fosc/1024 происходят не прерывания, а инкремент счётчика.
CDT
Таймер формирует прерывания с любым приятно умножающимся интервалом.
В обработке прерывания в регистре или ОЗУ подсчитываем их (прерывания) и по достижении нужного значения сбрасываем счетчик в ОЗУ и ставим флаг, что секунда (или 10мс) кончились.
В любом месте программы по этому флагу считаем время и дни.
Следует обратить внимание на точность кварца и обеспечить возможность его подстройки.

У этого способа есть одно очень приятное свойство - на этих прерываниях по состоянию счетчика в ОЗУ можно выполнять кучу задач с точным временным интервалом и в строгой последовательности друг за другом.
trofim
Timer0 8-ми битный, посему непонятно каким образом можно задать коэффициент деления 16525. Младший байт = 141, что примерно соответствует 100 Гц
MicronSys
Цитата(nagserg @ Jun 2 2005, 18:16)
Такая задача сделать время на прерываниях независимо от основной задачи.
Как можно сделать задержку в 1 сек на таймере0?

Устанавливаю делитель timer0/1024, получается 16525 Гц, т.е. программа должна попадать в прерывание по-моему 16525 раз в секунду, потом посчитать до 16525 и получится 1 секунда. Что-то я не так делаю, что программа попадает в прерывания частотой всего 100 Гц вместо 16525.

Подскажите, что я не так делаю?
*


Да извени а ты даташит воще читал !!! angry.gif
таймер 0 может считать только до 255 он 8 разрадный cranky.gif

возми таймер 1,2,3

вот тебе прога для расчета времени
nagserg
Всё вроде разобрался с помощью Application Builder-а в компиляторе ICC, там задаешь нужную частоту, а он (Application Builder) тебе пример программы.
sat
На большинство вопросов по АВР я ответы нахожу в app notes. по тем же таймерам есть AVR130: Setup ad use the AVR Timers где все расписано.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.