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

8-разрядный таймер/счетчик 0 осуществляет счет в регистре TCNT0.

Таймер/счетчик 0 - TCNT0

Бит

7

6

5

4

3

2

1

0

$32 ($52)

MSB

LSB

TCNT0

Чтение/Запись

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Исходное значение

0

0

0

0

0

0

0

0

Аналогичный формат имеет регистр сравнения таймера/счетчика 0 OCR0, его адрес – $3C ($5C).

Таймер/счетчик 0 управляется регистром управления TCCR0.

Регистр управления таймером/счетчиком 0 TCCR0

Бит

7

6

5

4

3

2

1

0

S33 ($53)

FOC0

WGM00

COM0l

COM00

WGM01

CS02

CS01

CS00

TCCR0

Чтение/Запись

W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Исходное значение

0

0

0

0

0

0

0

0

·  Бит 7 – FOC0: Force Output Compare Принудительное изменение состояния вывода ОС0 (режимы Normal и СТС). При записи лог. 1 в этот разряд состояние вывода ОС0 изменяется в соответствии установкам разрядов СОМ01:СОМ00. Прерывание при этом не генерируется и сброс таймера (в режиме СТС) не производится. В режимах Fast PWM и Phase Correct PWM этот разряд должен быть сброшен в «0». При чтении разряда всегда возвращается «0».

НЕ нашли? Не то? Что вы ищете?

·  Биты 6, 3 – WGM00:01: Waveform Generation Mode Режим работы таймера/счетчика. Эти разряды определяют режим работы таймера/счетчика 0 в соответствии с табл. 14:

Таблица 14. Режимы работы таймера/счетчика 0

Номер режима

WGM01

WGM00

Название режима

0

0

0

Normal

1

0

1

Phase correct PWM

2

1

0

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

3

1

1

Fast PWM

·  Биты 5, 4 – COM01:00: Compare Output Mode Режим работы блока сравнения. Эти разряды определяют поведение вывода ОС0 при наступлении события «Совпадение». Влияние содержимого этих разрядов на состояние вывода зависит от режима работы таймера/счетчика.

·  Биты 2, 1, 0 – CS02, CS01, CS00: Clock Select Выбор тактовой частоты. Эти биты позволяют выбрать источник тактового сигнала для таймера/счетчика 0: системный тактовый сигнал ТС с частотой fТС, масштабированный тактовый сигнал с выхода определенной ступени предварительного делителя частоты или внешний сигнал, поступающий на вход T0, а также запускать и останавливать таймер/счетчик 0 (см. табл. 15). Если таймер/счетчик 0 используется как счетчик, то вывод Т0 конфигурируется как вход.

Таблица 15. Выбор источника тактового сигнала

CS02

CS01

CS00

Описание

0

0

0

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

0

0

1

fТС

0

1

0

fТС / 8

0

1

1

fТС / 64

1

0

0

fТС / 256

1

0

1

fТС / 1024

1

1

0

Внешний вывод Т0, падающий фронт

]

1

1

Внешний вывод Т0, нарастающий фронт

Наиболее простой режим работы таймера/счетчика 0 – режим Normal. В этом режиме счетный регистр TCNT0 функционирует как обычный суммирующий счетчик, по каждому импульсу тактового сигнала осуществляется его инкрементирование. При переходе через значение $FF возникает переполнение, и счет продолжается со значения $00. Флаг прерывания по переполнению TOV0 при этом устанавливается в 1. При равенстве счетного регистра и регистра сравнения OCR0 устанавливается соответствующий флаг прерывания OCF0 и, если бит OCIE0 регистра маски установлен в 1, генерируется прерывание. Наряду с установкой флага при равенстве счетного регистра и регистра сравнения может изменяться состояние вывода ОС0 микроконтроллера. Каким образом оно будет изменяться, определяется битами СОМ01:СОМ00 регистра управления TCCR0 в соответствии с табл. 16.

Таблица 16. Управление выводом OC0 в режимах Normal и CTC

COM01

COM00

Описание

0

0

Таймер/счетчик 0 отключен от вывода ОС0

0

1

Состояние вывода меняется на противоположное

1

0

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

1

1

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

В режиме CTC счетный регистр тоже функционирует как обычный суммирующий счетчик, инкрементирование которого осуществляется по каждому импульсу тактового сигнала. Однако максимально возможное значение счетного регистра и, следовательно, разрешающая способность счетчика определяются регистром сравнения OCR0. После достижения значения, записанного в регистре сравнения, счет продолжается со значения $00. При достижении счетчиком максимального значения устанавливается флаг OCF0 и, если бит ОСIE0 регистра маски установлен в 1, генерируется прерывание. Одновременно с установкой флага может изменяться состояние вывода ОС0 микроконтроллера в зависимости от значений бит СОМ01:СОМ00 в соответствии с табл. 16. Путем использования переключения вывода OC0 в этом режиме в противоположное состояние можно формировать сигнал заданной частоты (в зависимости от содержимого регистра сравнения).

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19