Скачиваний:
523
Добавлен:
16.04.2015
Размер:
3.42 Mб
Скачать

1.4.2. Модули таймеров/счетчиков и процессоров событий

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

Как следует из его названия, таймер/счетчик предназначен для реализации двух основных функций – подсчета временных интервалов (таймер) и подсчета числа импульсов на внешних выводах МК (счетчик).

На самом деле и в том и в другом режиме таймер/счетчик работает как счетчик, только в случае таймера он подсчитывает число циклов тактового генератора МК, длительность которых фиксирована, достаточно стабильна и однозначно определена. Произведение длительности одного такта на их число, подсчитанное в счетчике, позволяет определять временные интервалы в единицах времени. Именно это и дает возможность назвать такой счетчик таймером.

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

Базовый таймер/счетчик. Обобщая типовые решения и схемы таймеров/счетчиков в различных семействах МК, представим структуру модуля таймера/счетчика в виде, показанном на рис. 1.15.

Рис. 1.15. Модуль таймера/счетчика

Основным узлом в этой структуре служит счетчик CT, сдвоенный 16-разрядный счетный регистр которого состоит из двух доступных для чтения и записи 8-разрядных регистров: младшего TL и старшего TH. Именно в них и производится подсчет времени или числа внешних событий. Режим таймера или счетчика задается при этом соответствующей установкой бита Режим таймер/счетчик в регистре специальных функций таймера.

В режиме таймера на счетный вход +1 счетчика CT подаются импульсы с тактового генератора МК, предварительно прошедшие через делитель частоты с программно задаваемым коэффициентом деления. Коэффициент деления задается пользователем на этапе инициализации с помощью битов Задание коэффициента деления в регистре специальных функций.

При работе в режиме счетчика подсчитываются внешние события, появление которых идентифицируется по изменению уровня сигнала на входе PTC1. Каждое изменение сигнала инкрементирует (прибавляет единицу) содержимое счетчика через вход +1. В отличие от таймера в этом режиме события могут происходить в любой момент времени и, вследствие этого, счетчик работает асинхронно по отношению к тактовой частоте МК.

Запуск и останов таймера/счетчика в большинстве МК может осуществляться двояко – либо изменением уровня сигнала на внешнем выводе PTC2, либо программной установкой бита Программный пуск/останов в регистре специальных функций. Выбор одного из этих вариантов производится установкой бита Тип запуска таймера.

Максимальное число, которое может быть занесено в 16-разрядный регистр счетчика равно 216 = 65 536. По достижении этого значения (точнее 65 535) все разряды счетчика заполняются единицами, и при приходе следующего счетного импульса счетчик автоматически очищается, заполняя все разряды нулями. С приходом следующего импульса начинается новый цикл счета. Событие перехода от состояния «все единицы» к состоянию «все нули» называется переполнением таймера/счетчика и сопровождается появлением сигнала на выходе OV и срабатыванием триггера переполнения TF с одновременной установкой одноименного бита Флаг переполнения таймера TF в регистре специальных функций. Установка флага TF в свою очередь может вызвать запрос прерывания по переполнению таймера/счетчика, если в регистре специальных функций таймера установлен бит Разрешение прерывания. При входе в подпрограмму обслуживания прерывания этот бит, как правило, сбрасывается автоматически.

В описанной процедуре счет в таймере/счетчике ведется в диапазоне от 0 до максимального значения. Вместе с тем, во многих практических случаях возникает необходимость установки произвольно заданного диапазона счета. Ограничение диапазона может быть достаточно просто сделано программными средствами, однако в силу большой практической значимости этой задачи более рациональной является ее реализация аппаратными средствами, что и было сделано производителями МК. С этой целью в таймер/счетчик был введен дополнительный регистр перезагрузки RG, в который на этапе инициализации предварительно заносится необходимое для формирования заданного диапазона значение счетчика. Далее задача ограничения диапазона счета с помощью регистра перезагрузки решается различными путями, среди которых можно выделить два основных.

В первом подходе текущее содержимое счетного регистра таймера/счетчика непрерывно сравнивается с содержимым регистра перезагрузки и в момент равенства кодов инициируется процедура фиксации этого факта и формирования запроса прерывания, подобная описанной процедуре для события переполнения. Занося при настройке таймера произвольные значения в регистр перезагрузки, можно формировать требуемые диапазоны счета и интервалы времени.

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

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

Усовершенствованный таймер/счетчик. Эволюция модулей таймеров/счетчиков в новых моделях МК привела целому ряду усовершенствований, среди которых одним из наиболее важных было введение в состав таймера аппаратно реализованных каналов входного захвата (Input Cap­ture) и выходного сравнения (Output Compare). Структура типовых каналов захвата и сравнения показана на рис. 1.16. Каналы работают независимо друг от друга и для наглядности разделены вертикальной штриховой линией. Рассмотрим более подробно принцип действия каждого из них.

Основная идея работы канала захвата проста – после пуска таймера/счетчика на одном из выделенных для этой цели внешних выводов МК детектор ожидает сигнал захвата, появление которого связано с наступлением некоторого внешнего события. При поступлении сигнала содержимое счетчика таймера копируется (захватывается) аппаратными средствами в специально введенный регистр захвата.

В рассматриваемом модуле канал захвата реализован на регистре захвата RG1, который аппаратно связан со счетным регистром таймера/счетчика. Сигнал захвата с внешнего входа PCC поступает на детектор сигнала, который предварительно настраивается с помощью бита Задание типа сигнала захвата на активацию процедуры захвата только от одного из трех типов входного сигнала: переход из состояния логического 0 в логическую 1; переход из состояния логической 1 в логический 0 и инверсия (изменение состояния на противоположное).

Рис. 1.16. Структура каналов захвата/сравнения

Если тип входного сигнала совпадает с настройкой детектора, то последний формирует управляющий строб и подает его на вход C регистра захвата. При поступлении строба в регистры захвата CAPL и CAPH аппаратно копируется содержимое соответствующих счетных регистров таймера/счетчика. Захват содержимого таймера/счетчика никак не сказывается на его состоянии, и он продолжает работать как обычно. Одновременно с этим срабатывает триггер захвата LF с установкой бита Флаг захвата LF, формирующего запрос на прерывание, если оно разрешено. Разрешение или запрет прерывания по событию захвата можно задать установкой бита Разрешение прерывания по захвату в регистре специальных функций.

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

Структура канала сравнения выделена в правой части рис. 1.16. На этапе инициализации и настройки канала в регистр сравнения RG2 программно заносится требуемое значение уставки. Счетные регистры таймера/счетчика и регистра сравнения подключены к цифровому компаратору, вырабатывающему сигнал, уровень которого зависит от знака разности кодов регистра сравнении и счетного регистра таймера/счетчика. Если значение кода уставки больше значения кода в счетном регистре таймера/счет­чика, то выход компаратора равен логической 1, в противном случае – логическому 0. Выход компаратора подключен к формирователю выходного сигнала сравнения, задачей которого является формирование в момент равенства кодов сигнала заданного типа. Возможно задание выходного сигнала сравнения одного из следующих типов:

  • установка высокого логического уровня;

  • установка низкого логического уровня;

  • инвертирование сигнала на выходе;

  • сигнал с выхода компаратора.

Необходимый тип выходного сигнала задается при настройке канала программной установкой бита Задание типа сигнала сравнения в регистре специальных функций.

Одновременно с формированием выходного сигнала в момент равенства кодов срабатывает триггер сравнения CF и устанавливается бит Флаг сравнения CF в регистре специальных функций. Если прерывание по событию сравнения разрешено с помощью бита Разрешение прерывания по сравнению, то установка флага CF формирует запрос прерывания по событию равенства кодов.

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

Одним из полезных свойств канала сравнения является возможность аппаратной реализации широко распространенного в технике управления принципа широтно-импульсной модуляции ШИМ (PWM – Pulse Width Modulation). Иногда, чтобы подчеркнуть важность этого свойства, совокупность каналов захвата/сравнения называют каналом CCP (Capture/Compare/PWM).

В режиме ШИМ на выводе МК формируется периодический импульсный сигнал с периодом T и переменной шириной импульса tи, прямо пропорциональной величине входного кода. Отношение ширины импульса к длительности периода tи/T называют скважностью, и в режиме ШИМ она изменяется от 0 до 1. Иллюстрацией режима ШИМ служат временные диаграммы, показанные на рис. 1.17.

Рис. 1.17. Временные диаграммы ШИМ

При использовании канала сравнения период ШИМ задается с по­мощью базового таймера/счетчика, работающего в циклическом режиме и производящего периодическое заполнение счетного регистра от 0 до переполнения. Ширина импульса в каждом периоде определяется кодом в регистре сравнения RG2. Таким образом, производя в ходе работы программы изменение содержимого регистра сравнения, можно сформировать на выходе PCC требуемый широтно-импульсный сигнал.

Процессоры событий. Одной из важнейших задач, которые должен реализовать МК в системах реального времени, является задача обработки множества внешних, внутренних и программных событий относительно единой временной базы. Принципиальной трудностью реализации такой об­работки программными средствами является сложность и большие затраты времени при организации наблюдения за показаниями таймера/счетчика сразу в нескольких программных модулях. Эти трудности многократно возрастают при малых интервалах времени между событиями, время программной обработки которых соизмеримо с этими интервалами.

Данное обстоятельство привело к разработке и включению в состав современных МК более сложных и эффективных, чем таймер/счетчик, устройств, осуществляющих многоканальную обработку событий аппаратными средствами. Такие устройства в разных семействах МК называются по-разному: EPA (Event Processors Array – массив процессоров событий), TPU (Timing Processor Unit – таймерный процессор), PCA (Programmable Counters Array – массив программируемых счетчиков) и т. д. Для определенности при дальнейшем изложении будем использовать наиболее распространенное название таких устройств – процессор событий.

Несмотря на различные названия, все указанные устройства построены практически по одному принципу, основанному на одновременном использовании нескольких каналов захвата/сравнения/ШИМ. При этом для задания общей для всех каналов временной базы процессора событий используется один базовый таймер/счетчик, счетный регистр которого аппаратно связан сразу со всеми каналами захвата/сравнения/ШИМ. Структура типового процессора событий показана на рис. 1.18.

Рис. 1.18. Структура процессора событий

К типовым задачам, при решении которых проявляются преимущества применения процессора событий, можно отнести:

  • определение частоты и длительности внешнего сигнала;

  • определение фазового сдвига между несколькими периодическими последовательностями;

  • формирование на нескольких выводах синхронизированных периодических сигналов;

  • формирование одиночных импульсов с программируемой длитель­ностью.

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

Соседние файлы в папке Микроконтроллеры