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

 
 
 
«Ходить по воде и разрабатывать программы, следуя спецификации, очень просто… если они заморожены.»
Edward V Berard
Русский | Українська


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

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

В состав каждого из идентичных таймеров Т0 и Т2 входят по три регистра из пространства ввода-вывода: счетный регистр TCNT0 (TCNT2), регистр управления TCCR0 (TCCR2) и регистр сравнения OCR0 (OCR2). Кроме того, таймер Т2 содержит регистр ASSR для управления его модулем (коэффициентом счета) в асинхронном режиме.

Таймер Т0 может работать в режимах 8-разрядного счетчика, счетчика внешних событий, ШИМ и формирователя сигналов. Таймер Т2 поддерживает режимы 8-разрядного счетчика, ШИМ, формирователя сигналов и часов реального времени.

Основное средство управления таймерами Т0 и Т2 – регистры TCCR0 и TCCR2. Назначение его разрядов и принципы управления представлены в табл.27.3

Таблица 27.3

Принципы управления таймерами Т0 и Т2 через регистры TCCR0(2)

Бит

Название

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

7

FOCх

Принудительное изменение состояния вывода OCх в режимах Normal и CTC (зависит от битов COMх0 и COMх1)

6,3

CTCх, PWMх

Выбор режима работы таймера-счетчика

Режим

CTCх

PWMх

Описание режима работы

0

0

0

Normal (суммирующий счетчик)

1

0

1

Phase correct PWM

2

1

0

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

3

1

1

Fast PWM

5,4

COMх1, COMх0

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

COMх1

COMх0

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

0

0

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

0

1

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

1

0

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

1

1

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

2-0

CSх2…
CSх0

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

Примечание: «х» – номер таймера: 0 или 2

Работа таймеров Т0 (Т2) в режиме Normal

В этом режиме таймер T0 (T2) функционирует как суммирующий счетчик импульсов с частотой, определяемой по табл.27.4. При переходе регистра TCNT0 (TCNT2) через значение $FF счет продолжается с состояния $00, и возникает прерывание, которое фиксируется во флаге TOV0 (TOV2). Кроме того, при равенстве счетного регистра TCNT0 (TCNT2) и регистра сравнения OCR0 (OCR2) устанавливается флаг прерывания OCF0 (OCF2), а также будет изменяться состояние вывода OC0 (OC2) в соответствии с настройками согласно табл. 27.3. Все указанные прерывания будут обрабатываться, если они разрешены через биты регистра TIMSK (табл.27.1).

Таблица 27.4

Выбор источника тактового сигнала для таймеров Т0 и Т2

CSх2

CSх1

CSх0

Источник тактового сигнала

Для таймера Т0

0

0

0

Таймер-счетчик Т0 остановлен

0

0

1

Системный тактовый сигнал CLKsys

0

1

0

CLKsys / 8

0

1

1

CLKsys / 64

1

0

0

CLKsys / 256

1

0

1

CLKsys / 1024

1

1

0

Внешний вывод Т0, счет по спаду импульса (1→0)

1

1

1

Внешний вывод Т0, счет по фронту импульса (0→1)

Для таймера Т2

0

0

0

Таймер-счетчик Т2 остановлен

0

0

1

Системный тактовый сигнал CLKsys (при AS2=0) или

Дополнительный кварцевый резонатор (при AS2=1)

0

1

0

CLKsys / 8 (при AS2=0) или CLKosc / 8 (при AS2=1)

0

1

1

CLKsys / 32 (при AS2=0) или CLKosc / 32 (при AS2=1)

1

0

0

CLKsys / 64 (при AS2=0) или CLKosc / 64 (при AS2=1)

1

0

1

CLKsys / 128 (при AS2=0) или CLKosc / 128 (при AS2=1)

1

1

0

CLKsys / 256 (при AS2=0) или CLKosc / 256 (при AS2=1)

1

1

1

CLKsys /1024 (при AS2=0) или CLKosc /1024 (при AS2=1)

Примечание: «х» – номер таймера: 0 или 2

Работа таймеров Т0 (Т2) в режиме CTC

В этом режиме, называемом «сброс при совпадении», таймер работает как суммирующий счетчик на регистре TCNT0 (TCNT2). Но граница счета определяется содержимым регистра OCR0 (OCR2). При достижении этого состояния счет продолжается с $00 и устанавливается флаг прерывания TOV0 (TOV2). Поскольку это состояние соответствует ситуации «Совпадение», то будет также устанавливаться флаг OCF0 (OCF2) и изменяться состояние вывода OC0 (OC2) в соответствии с настройками согласно табл. 27.3. Для генерации сигнала с заданной частотой делается настройка COMх1=0 и COMх0=1, а частота генерируемого сигнала FOC0(2) определяется соотношением:

FOC0(2)=FCLKsys/ (2N(1+OCRх)),

где N – коэффициент деления предделителя (табл.3.7).

Работа таймеров Т0 (Т2) в режиме FastPWM

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

Состояние счетчика TCNT0 (TCNT2) изменяется циклически от $00 до $FF, при этом по переполнению формируется флаг прерывания TOV0 (TOV2), а при равенстве счетного регистра TCNT0 (TCNT2) и регистра сравнения OCR0 (OCR2) устанавливается флаг прерывания OCF0 (OCF2). Состояние вывода OC0 (OC2) определяется содержимым разрядов COMх1 и COMх0 согласно табл.27.5.

Частота импульсов определяется соотношением

FOC0(2)=FCLKsys/ (256N), где N – коэффициент предделителя (табл.27.4).

Таблица 27.5.

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

COMх1

COM0х0

Описание состояния вывода OC0 (ОС2)

0

0

Таймер-счетчик Т0 (Т2) отключен от вывода OC0 (ОС2)

0

1

Зарезервировано и не используется

1

0

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

1

1

Вывод устанавливается в «1» при достижении равенства регистров TCNTх и OCRх. Сбрасывается в «0» при достижении TCNTх = $00 (инвертированный ШИМ)

Примечание: «х» – номер таймера: 0 или 2

Работа таймеров Т0 (Т2) в режиме PhaseCorrectPWM

Режим PhaseCorrectPWM (ШИМ с точной фазой) предназначен для генерации ШИМ-импульсов, однако счетчик функционирует попеременно как суммирующий и вычитающий, т.е. в реверсивном режиме (от $00 до $FF и обратно до $00). Частота генерации в два раза меньше, чем для режима FastPWM, но за счет симметричности импульсов этот режим предпочтительнее для управления двигателями.

FOC0(2)=FCLKsys/ (512N), где N – коэффициент предделителя (табл.27.4).

Вид выходного сигнала на выводе OC0 (OC2) определяется по табл.27.5.




Следующая статья >>
«Функционирование таймера Т1»