- •Таймерная подсистема
- •Основной счетчик
- •Техника измерения времени (чтение счетчика)
- •Цена «деления», диапазон измерения и управление входной частотой
- •Программный либо аппаратный захват времени.
- •Техника формирования события в заранее заданное время
- •Сравнение с уставкой
- •Загрузка значения и сравнение с нулем (использование сигнала переполнения).
- •Автоперезагрузка и формирование периодического события.
- •Широтно_импульсный модулятор
- •Все возможности, объединенные в одном таймерном канале
- •Таймерная подсистема в мк aDuC70xx
- •Структура таймерного канала в микросистеме aDuC70xx
- •Определение констант для работы с битовыми полями регистра управления таймером 1.
Автоперезагрузка и формирование периодического события.
Во многих приложениях требуется выполнять определенное действие периодически, через заданные интервалы времени. Если таймер программно доступен по записи, и для выполнения требуемого действия используется прерывание по переполнению (как было описано выше) то естественный способ достигнуть этого – поместить в обработчик команды записи в таймерный счетчик величины, определяющей требуемый период повторения. Однако такая ситуация бывает нужной настолько часто, что во многих реализациях таймерных подсистем имеется так-называемый режим с автоперезагрузкой (AutoReload).
Он заключается в том, что при выявлении переполнения в счетчик таймера автоматически копируется содержимое специального регистра (будем называть его регистром уставки). Программист может заранее записать в регистр уставки нужное значение.
Если таймер работает на вычитание, а в регистре уставки записано значение N, то время от момента копирования (вызванного данным переполнением) до очередного переполнения составит N, т.е. переполнения будут происходить с периодом N. Изменить этот период легко, для этого достаточно записать в регистр уставки новое значение N. Таким образом, таймер превращается в генератор периодических событий (переполнений) с заданным и легко перестраиваемым периодом.
Широтно_импульсный модулятор
Так называют узел, формирующий периодически изменяющийся логический сигнал, у которого длительность периода TШИМ постоянна (обычно у программиста есть возможность задать величину периода ШИМ сигнала), а длительность одной из фаз (например, единичной 1) пропорциональна коду NШИМ, управляющему широтно-импульсным модулятором: 1= TШИМ NШИМ/ NMAX.
Легко видеть, что среднее значение такого импульсного периодического сигнала пропорционально управляющему коду NШИМ. Благодаря этому ШИМ можно использовать в качестве простейшего цифро-аналогового преобразователя.
Английское название ШИМ – Pulse Width Modulator PWM.
Все возможности, объединенные в одном таймерном канале
Таймерная подсистема в мк aDuC70xx
В микроконтроллере имеется четыре независимых канала таймера:
Таймер0 – 16-битовый вычитающий таймер общего назначения с программируемым предделителем.
Таймер1 – 32-битовый универсальный таймер/счетчик с предделителем, на вход которого можно подать частоту от внутреннего источника либо внешний логический сигнал.
Таймер2 – 32-битовый универсальный таймер/счётчик времени с независимым источником тактовых импульсов.
Таймер3 – 16-битовый универсальный таймер с функцией сторожевого таймера (WatchDog, COP).
Свойства каналов охарактеризованы в таблице:
Характеристика |
Таймер0 RTOS |
Таймер1 GP |
Таймер2 WakeUp |
Таймер3 WDT |
Разрядность |
16 |
32 |
32 |
16 |
Захват момента возникновения события |
Нет |
Да |
Нет |
Нет |
Счет частоты ядра (41,78 МГц/2CD) |
Да |
Да |
Да |
Нет |
Счет частоты 32768 Гц |
Нет |
Да |
Да |
Да |
Режим счета импульсов на внешнем входе |
Нет |
Да |
Нет |
Нет |
Предделитель: 1, 16, 256, 32768 |
+ + + 0 |
+ + + + |
+ + + + |
+ + + 0 |
Направление счета |
Выч. |
Сл/выч |
Сл/выч |
Сл/выч |
Режим с автоперезагрузкой заданной уставки |
Да |
Да |
Да |
Да |
Программный пуск-останов |
Да |
Да |
Да |
Да |
Формат «часы-минуты-секунды-сотые» |
Нет |
Да |
Да |
Нет |
Запрос прерывания по переполнению |
Да |
Да |
Да |
Да |
Запуск АЦП по переполнению |
Да |
Да |
Нет |
Нет |
Режим сторожевого таймера |
Нет |
Нет |
Нет |
Да |