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

 
 
 
«Большинство программ на сегодняшний день подобны египетским пирамидам из миллиона кирпичиков друг на друге и без конструктивной целостности — они просто построены грубой силой и тысячами рабов.»
Alan Kay
Русский | Українська


Микропроцессоры и микроконтроллеры :: RISC-микроконтроллеры семейства AVR :: Функционирование таймера Т1

Функционирование таймера Т1

Таймер Т1 является 16-разрядным. Для него допустимы все режимы работы, характерные для таймеров Т0 и Т2. Кроме того, он может по внешнему сигналу сохранять свое состояние в отдельном регистре (режим захвата).

В состав таймера Т1 входят счетный регистр TCNT1, регистр захвата ICR1, два регистра сравнения OCR1A и OCR1B (все регистры 16-разрядные), два
8-разрядных регистра управления TCCR1A и TCCR1B. Все 16-разрядные регистры реализованы как пара 8-разрядных с соответствующими именами: TCNT1H и TCNT1L.

Прерывания, генерируемые таймером, представлены в табл.27.2. Разрешение прерываний задается через регистр TIMSK (табл. 27.1).

Режим захвата – запись текущего состояния TCNT1 в регистре ICR1 – производится по фронту сигнала на входе ICP1 или по сигналу от аналогового компаратора.

Основное средство управления таймером Т1 – регистры TCCR1A и TCCR1B. Назначение их разрядов и принципы управления представлены в табл.27.6 и 27.7 соответственно.

Таблица 27.6.

Принципы управления таймером Т1 через регистр TCCR1А

Бит

Название

Описание назначения

7,6

COM1A1,
COM1A0

Режим работы блока сравнения А. Разряды определяют поведение вывода OC1A при наступлении события «Совпадение» в зависимости от режима работы таймера. Для режимов Normal и CTC доступны такие состояния

COM1A1

COM1A0

Описание состояния вывода OC1A

0

0

Таймер отключен от вывода OC1A

0

1

Изменение на противоположное

1

0

Вывод сбрасывается в «0»

1

1

Вывод устанавливается в «1»

5,4

COM1B1, COM1B0

Режим работы блока сравнения B. Определяет состояние вывода OC1B при наступлении события «Совпадение». Для режимов Normal и CTC доступны такие состояния

COM1B1

COM1B0

Описание состояния вывода OC1B

0

0

Таймер отключен от вывода OC1B

0

1

Изменение на противоположное

1

0

Вывод сбрасывается в «0»

1

1

Вывод устанавливается в «1»

3,2

FOC1A, FOC1B

Принудительное изменение состояния выводов OC1A и OC1B в режимах Normal и CTC (зависит от битов COMnxi)

1,0

WGM1,

WGM0

Режим работы таймера счетчика Т1. Используются совместно с битами WGM3, WGM2 регистра TCCR1B – см. табл. 27.8

Таблица 27.7.

Принципы управления таймером Т1 через регистр TCCR1B

Бит

Название

Описание назначения

7

ICNC1

Управление схемой подавления помех блока захвата

6

ICES1

Выбор активного фронта сигнала захвата

5

Не используется

4,3

WGM3,

WGM2

Режим работы таймера счетчика Т1. Используются совместно с битами WGM1, WGM0 регистра TCCR1А – см. табл. 3.11

2…0

SC12…
SC10

Управление тактовым сигналом. Разряды определяют источник тактового сигнала для таймера Т1. Настройка соответствует табл.27.4 (как для таймера Т0).

Работа таймера Т1 в режимах Normal и CTC

В этих режимах функционирование таймера Т1 аналогично работе таймера Т0, с той разницей, что счет производится в 16-разрядной конфигурации (от $0000 до максимум $FFFF). При достижении максимума $FFFF формируется флаг прерывания TOV1, а при совпадении значений TCNT1 и OCR1A или OCR1B – флаги OCF1A или OCF1B соответственно.

Таблица 27.8.

Выбор режима работы таймера Т1

WGM13

WGM12

WGM11

WGM10

Режим работы

Модуль
счета

0

0

0

0

Normal, 16-разрядный счет

$FFFF

0

0

0

1

Phase correct PWM, 8-разрядный

$00FF

0

0

1

0

Phase correct PWM, 9-разрядный

$01FF

0

0

1

1

Phase correct PWM, 10-разрядный

$03FF

0

1

0

0

CTC (сброс при совпадении)

OCR1A

0

1

0

1

Fast PWM, 8-разрядный

$00FF

0

1

1

0

Fast PWM, 9-разрядный

$01FF

0

1

1

1

Fast PWM, 10-разрядный

$03FF

1

0

0

0

Phase and Frequency Correct PWM

ICR1

1

0

0

1

Phase and Frequency Correct PWM

OCR1A

1

0

1

0

Phase correct PWM

ICR1

1

0

1

1

Phase correct PWM

OCR1A

1

1

0

0

CTC (сброс при совпадении)

ICR1

1

1

0

1

Зарезервировано

1

1

1

0

Fast PWM

ICR1

1

1

1

1

Fast PWM

OCR1A

Работа таймера Т1 в режиме FastPWM и PhaseCorrectPWM

Режим FastPWM (быстродействующий ШИМ), позволяет генерировать высокочастотный широтно-модулированный сигнал. Суммирующий счет производится на регистре TCNT1. Ширина очередного импульса будет определяться текущим содержимым регистра сравнения OCR1А). Важно, что изменять содержимое этого регистра можно без остановки таймера, при этом помехи от переключения не возникают.

Состояние счетчика TCNT1 изменяется циклически от $0000 до $FFFF, при этом по переполнению формируется флаг прерывания TOV1, а при равенстве счетного регистра TCNT1 и одного из регистров сравнения OCR1А или OCR1В устанавливается флаг прерывания OCF1А или OCF1В соответственно. Состояние выводов OC1А и OC1В в момент достижения состояния «Совпадение» определяется содержимым пар разрядов (COM1А1, COM1А0) и (COM1В1, COM1В0) соответственно согласно табл.27.9.

Частота генерируемых ШИМ-импульсов определяется соотношением

FOC1=FCLKsys/ (2N*TOP),

где N – коэффициент деления предделителя, TOP – модуль счета, определяемый битами WGM13…WGM10 согласно табл.27.8.

Наличие двух регистров сравнения OCR1А или OCR1В и двух выводов сигналов OC1А и OC1В позволяет с помощью одного таймера Т1 генерировать две последовательности ШИМ-импульсов с раздельным управлением (правда, с одинаковой частотой). Такое использование таймера Т1 предпочтительно для реализации двухкоординатного управления технологическим оборудованием. Именно таймер Т1 использован в качестве генератора ШИМ-импульсов в составе системы УУМС-2.

Таблица 27.9.

Настройка поведения выводов OC1А (OC1В) в режиме FastPWM

COM1А(B)1

COM1A(B)0

Описание состояния вывода OC1A (ОС1B)

0

0

Таймер-счетчик Т1 отключен от вывода OC1A (ОС1B)

0

1

При WGM13=0 таймер Т1 отключен от OC1A (ОС1B).

При WGM13=1 состояние вывода OC1A (ОС1B) меняется на противоположное

1

0

Вывод сбрасывается в «0» при достижении равенства регистров TCNT1 и OCR1A(B). Устанавливается в «1» при достижении TCNT1 = $0000 (неинвертированный ШИМ)

1

1

Вывод устанавливается в «1» при достижении равенства регистров TCNT1 и OCR1A(B). Сбрасывается в «0» при достижении TCNT0(2) = $0000 (инвертированный ШИМ)

Реализация режима PhaseCorrectPWMдля таймера Т1 похожа на функционирование таймера Т0 в это режиме с той разницей, что счет производится от $0000 до $FFFF и обратно до $0000. Управление производится соответствующими разрядами для таймера Т1. Режим PhaseandFrequencyCorrectPWM в данной статье не рассматривается.

Также в данных материалах не рассматривается функционирование сторожевого таймера WDT.




<< Предыдущая статья
«Функционирование таймеров Т0 и Т2»