Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Счетчик
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
dvs85
И снова здравствуйте! smile.gif Опять вопрос чайника smile.gif

Появилась новая задача.
Некое устройство подает сигнал на запуск счетчика МК (ATmega16). Счетчик считает, считает.. В какой то момент времени поступает сигнал от того же устройство на прекращение работы счетчика. Это время(от запуска до остановки) передается на дисплей.
Подскажите алгоритм, как это организуется. Зараннее благодарен
Палыч
Таймер 1 mega16 имеет вход ICP1, активный уровень которого сохраняет в регистре захвата значение счетчика таймера и устанавливается флаг ICF1. Переполнения таймера также необходимо отслеживать и считать их количества между внешним стартом и стопом. По двум значениям регистра захвата (в момент старта и в момент стопа) и числу переполнений между стартом и стопом вычисляется интервал времени.
dvs85
Цитата(Палыч @ Apr 14 2008, 09:54) *
Таймер 1 mega16 имеет вход ICP1, активный уровень которого сохраняет в регистре захвата значение счетчика таймера и устанавливается флаг ICF1. Переполнения таймера также необходимо отслеживать и считать их количества между внешним стартом и стопом. По двум значениям регистра захвата (в момент старта и в момент стопа) и числу переполнений между стартом и стопом вычисляется интервал времени.


Скажите, правильно ли я разобрался с работой с регистрами таймера?..
То есть: когда на вход ICP1 приходит 1, устанавливается флаг ICF1? Когда он устанавливается начинает работать таймер? Значение предыдущего состояния счетчика записывается в регистре захвата? Значение таймера можно считать со счетного регистра TCNT1?
Палыч
Цитата(dvs85 @ Apr 15 2008, 02:55) *
Скажите, правильно ли я разобрался с работой с регистрами таймера?..
Таймер работает всё время в режиме 0 (Normal mode). При изменении входа ICP1 (c 0 в 1 или с 1 в 0 - задаётся разрядом ICES1, а ICP1 должен быть настроен как вход) счетный регистр таймера TCNT переписывается в регистр захвата ICR, и выставляется флаг ICF1. Если разрешить прерывание по этому событию, то в процедуре прерывания регистр захвата можно считать и запомнить. Таймер без остановок продолжает считать, и, возможно, его счетный регистр переполнится. По этому событию (переполнение) также необходимо разрешить прерывание, и в процедуре его обработки вести подсчет числа переполнений. Когда на входе ICP1 снова возникнит фронт импульса, соответствующий активному, новое значение счетного регистра таймера запишется в регистр захвата, и выставится флаг, произойдет прерывание. Регистр захвата считывается и, по двум значениям (текущему и запомненному ранее), а также по числу переполнений вычисляется интервал времени.
dvs85
Спасибо большое за столь подробное объяснение
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.