14.3. Функциональная схема
Подробная функциональная схема таймера-счетчика без расширений показана на рисунке 14.2.
Рисунок 14.2. Функциональная схема таймера-счетчика
Регистр счетчика (CNT), регистр периода и его буфер (PER и PERBUF), а также регистры сравнения и захвата с их буферами (CCx и CCxBUF) - 16-битные регистры.
В процессе нормальной работы, значение счетчика непрерывно сравнивается с нулем и со значением периода (PER). Это необходимо для выявления достижения счетчиком верхней (TOP) или нижней (BOTTOM) границ счета.
Значение счетчика также сравнивается с регистрами CCx. Блоки сравнения могут использоваться для генерации запросов на прерывания или запросов на DMA-транзакции. Кроме того, они могут генерировать события для системы событий. Блок сравнения используются в режимах генерации импульсов, для задания периода и скважности импульсов.
Для управления счетчиком могут использоваться поделенный по частоте сигнал синхронизации УВВ и события системы событий. Система событий также может выступать в качестве источника для входа захвата. Если же учесть возможности квадратурной дешифрации, которыми обладает система событий, то таймер-счетчик может использоваться для высокобыстродействующей квадратурной дешифрации.
14.4. Источники синхронизации и событий
Таймер-счетчик может синхронизироваться, либо с выхода предделителя синхронизации УВВ (CLKPER), либо системой событий. Логика выбора синхронизации и событий показана на рисунке 14.3.
Рисунок 14.3. Выбор синхронизации и событий
Сигнал синхронизации УВВ поступает в общий предделитель (общий для всех таймеров-счетчиков в МК). Выбор выходов предделителей можно выполнить через регистры таймера-счетчика. Кроме того, широкий диапазон коэффициентов деления частоты (от 1 до 215) можно выбрать через систему событий.
У каждого таймера-счетчика предусмотрена возможность раздельного выбора синхронизации (CLKSEL): один из выходов предделителей или канал событий, выступающий в роли входа счетчика (CNT). Такая работа таймера-счетчика называется нормальной (см. 14.6.1 "Нормальная работа таймера-счетчика"). Когда таймер используется системой событий, в качестве входа синхронизации таймера могут использоваться такие источники событий, как внешний сигнал синхронизации, поданный на любую из линий в/в.
Таймер-счетчик может также управляться через систему событий. Настроенные выбор события (EVSEL) и действие события (EVACT) могут использоваться для запуска действия события при возникновении одного или нескольких событий. Такой механизм работы счетчика управляемым событиями и подробно описан в 14.6.2 "Управляемый событиями режим работы". В этом режиме работы в качестве входа синхронизации счетчика необходимо выбрать требуемый канал события.
По умолчанию вход синхронизации таймера-счетчика не связан ни с одним из источников и, поэтому, он не работает (находится в отключенном состоянии).
14.5. Двойная буферизация
Регистр периода и регистры захвата-сравнения оснащены механизмом двойной буферизации. Каждый из буферных регистров имеет отдельный флаг действительности буфера (BV), который сигнализирует о наличии в буфере действительных данных, например, новое значение, подлежащее копированию в регистр периода или сравнения. Применительно к регистру периода и регистрам каналов захвата-сравнения, которые используются в режиме сравнения, флаг действительности буфера устанавливается после записи данных в буферный регистр и сбрасывается при возникновении условия UPDATE (см. пример с регистром сравнения на рисунке 14.4).
Рисунок 14.4. Двойная буферизация регистров периода и сравнения
Если же каналы захвата-сравнения используются в режиме захвата, то применяется подобный механизм двойной буферизации затем тем исключением, что флаг действительности буфера устанавливается по событию захвата, как показано на рисунке 14.5. В режиме захвата, буфер и соответствующий регистр CCx действуют подобно буферу FIFO. После опустошения или считывания регистра CC, содержимое буфера переносится в регистр CC. Флаг действительности буфера передается во флаг прерывания CCx, после установки которого при необходимости может быть сгенерировано прерывание (опционально).
Рисунок 14.5. Двойная буферизация регистра захвата
Регистры CCx и CCxBUF доступны по адресам регистров ввода-вывода. Благодаря этому, можно выполнить инициализацию буферных регистров, а также обойти буферный регистр и все функцию двойной буферизации.
|