Микропроцессоры и микроконтроллеры

 
 
 
«Программирование на С похоже на быстрые танцы на только что отполированном полу людей с острыми бритвами в руках»
Waldi Ravens.
Русский | Українська


Микропроцессоры и микроконтроллеры :: Принципы работы микропроцессоров :: Реализация функций времени

Реализация функций времени

Включает в себя такие действия, как реализация (выдержка) интервалов времени, измерение длительности временных интервалов, подсчет количества импульсов. Существуют две принципиально отличающиеся формы реализации функций времени: программная – выполнение программных циклов заданной длительности, которую рассчитывают на основе известного времени выполнения команд, и аппаратная – на основе таймеров.

Таймер – это аппаратный блок или микросхема, выполненная на основе счетного регистра с предустановкой (вспомнить материал дисциплины «Компьютерная схемотехника»).

Реализация или измерение временных интервалов выполняются на основе аппаратного подсчета количества импульсов с постоянным известным периодом , уложившихся в реализуемый или измеряемый временной интервал , где N- количество подсчитанных импульсов.

Точность измерения интервала составляет . Подсчет асинхронных (непериодических) внешних импульсов также выполняется на таймерах, хотя может быть реализован и программным путем.

Поскольку таймер является самостоятельным аппаратным блоком, выполненным отдельно от процессора, появляется возможность распараллелить работу процессора по выполнению обработки данных, и таймера - по реализации функций времени, чем достигается разгрузка процессора.

Обобщенная структура таймера показана на рис. 7.3.

Таймер запускается программно в результате выполнения некоторой команды, по которой в МП-системе может быть сформирован сигнал Запуск. После этого в течение некоторого времени происходит параллельная работа процессора и таймера: процессор выполняет текущие команды программы, а таймер подсчитывает импульсы от заданного источника. Когда подсчет завершен, таймер формирует сигнал INT, с помощью которого информирует процессор о завершении счета. Этот сигнал обычно обрабатывается в МП-системе как сигнал прерывания. Таким образом, в программе нет необходимости все время анализировать текущее состояние таймера (хотя в принципе это возможно).

Типовая структура таймера

Рис. 7.3. Типовая структура таймера

Выдача сигнала прерывания от таймера происходит в момент достижения нулевого состояния или переполнения, что соответствует моменту завершения реализуемого временного интервала.

По механизму реализации счета таймеры бывают:

-    суммирующие с выполнением операции , где i, i-1 – моменты времени, соответствующие поступлению очередного импульса;

-    вычитающие с выполнением операции

Как правило, таймеры имеют возможность программной настройки на различные режимы работы (выбор конфигурации счетных регистров), а именно:

-    различная разрядность (8,16). определяющая максимальный интервал счета (т.е. реализации или измерения длительности) : ;
где , р – разрядность счетного регистра;

-    режим счета с предварительным делением частоты;

-    режим автоперезагрузки стартового числа – для реализации непрерывнойпоследовательности интервалов одинаковой длительности;

-    режим генерации меандра на выходе OUT.

Поскольку таймер является более сложным устройством, чем обычные ИС счетчиков, то перед запуском таймера необходимо программно выполнить его инициализацию. Она состоит из таких этапов, как программная настройка конфигурации счетных регистров (режима работы) и запись стартового числа в счетные регистры. Правила программной настройки определяются спецификой конкретного таймера и содержатся в документации на него.

Выбор и задание стартового числа необходимы для реализации интервалов времени требуемой длительности .

Для таймеров, работающих в режиме вычитания, ;

Для таймеров, работающих в режиме суммирования, , где – максимальное возможное содержимое счетного регистра.

Поскольку завершение интервала времени может быть идентифицировано только по сигналу прерывания от таймера, то все действия, связанные с обработкой завершения интервала времени, обычно располагают в процедуре обработки этого прерывания.

При переполнении (достижении нулевого состояния) таймер продолжает счет, поэтому в процедуре обработки прерывания от таймера следует, по крайней мере, остановить таймер и выполнить настройку на новый (следующий) интервал. Исключение составляет режим автоперезагрузки. В этом случае должно быть заблокировано прерывание от таймера, либо в процедуре не следует выполнять останов таймера и программную запись стартового числа.