Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_5 Таймеры.doc
Скачиваний:
115
Добавлен:
12.03.2015
Размер:
1.96 Mб
Скачать

Режимы работы таймеров

Таймеры микроконтроллеров семейства AVR могут работать в нескольких режимах. Разные микроконтроллеры имеют разные наборы режимов для своих таймеров. Для выбора режимов работы существуют специальные регистры - регистры управления таймерами. Для простых таймеров используется один регистр управления. Для более сложных - два регистра. Регистры управ­ления таймером называются TCCRx (где «х» - номер таймера). Например, для таймера Т0 используется один регистр с именем TCCR0. Для управления таймером Тl используется два регистра: TCCR1A и TCCR1B. При помощи регистров управления производится не только выбор соответствующего ре­жима, но и более тонкая настройка таймера. Ниже перечислены все основные режимы работы таймера и их описание.

Режим работы таймера/счетчика определяется установкой битов режима генерации сигнала (Waveform Generation mode) WGM. Они расположены в регистрах управления таймера/счетчика А и В (TCCRnA и TCCRnB). В регистре TCCRnА расположены биты WGM11, WGM10. В регистре TCCRnB расположены биты WGM13, WGM12.

Таблица таб4. Функции битов WGMn3:0.

Режим

WGMn3

WGMn2

WGMn1

WGMn0

Режим работы

Макс.

величина

Момент обновления регистра OCRnx

Момент установки флага переполнения TOVn

0

0

0

0

0

Нормальный

0xFFFF

Немедл.

0xFFFF

1

0

0

0

1

ШИМ с коррекцией фазы, 8 бит

0x00FF

Максим. величина

0x0000

2

0

0

1

0

ШИМ с коррекцией фазы, 9 бит

0x01FF

Максим. величина

0x0000

3

0

0

1

1

ШИМ с коррекцией фазы, 10 бит

0x03FF

Максим. величина

0x0000

4

0

1

0

0

СТС

OCRnA

Немедл.

0xFFFF

5

0

1

0

1

Быстродействующая ШИМ, 8 бит

0x00FF

Максим. величина

Максим. величина

6

0

1

1

0

Быстродействующая ШИМ, 9 бит

0x01FF

Максим. величина

Максим. величина

7

0

1

1

1

Быстродействующая ШИМ, 10 бит

0x03FF

Максим. величина

Максим. величина

8

1

0

0

0

ШИМ с коррекцией фазы и частоты

ICRn

0x0000

0x0000

9

1

0

0

1

ШИМ с коррекцией фазы и частоты

OCRnA

0x0000

0x0000

10

1

0

1

0

ШИМ с коррекцией фазы

ICRn

Максим. величина

0x0000

11

1

0

1

1

ШИМ с коррекцией фазы

OCRnA

Максим. величина

0x0000

12

1

1

0

0

СТС

ICRn

Немедл.

0xFFFF

13

1

1

0

1

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

14

1

1

1

0

Быстродействующая ШИМ

ICRn

Максим. величина

Максим. величина

15

1

1

1

1

Быстродействующая ШИМ

OCRnA

Максим. величина

Максим. величина

Режим Normal

Это самый простой режим. В этом режиме таймер производит подсчет приходящих на его вход импульсов (от тактового генератора или внешнего устройства и вызывает прерывание по переполнению. Этот режим является единственным режимом работы для восьмиразрядных таймеров большинства микроконтрол­леров семейства «Tiny» и для части микроконтроллеров семейства «Mega». Для всех остальных восьмиразрядных и всех шестнадцатиразрядных таймеров это всего лишь один из возможных режимов.

Режим «Захват» (Capture)

Суть этого режима заключается в сохранении содержимого счетного регистра таймера в определенный момент времени. Запоминание происходит либо по сигналу, поступающему через специальный вход микроконтроллера, либо от сигнала с выхода встроенного компаратора.

Этот режим удобен в том случае, когда нужно измерить длительность какого-­либо внешнего процесса. Например, время, за которое напряжение на конденсаторе достигнет определенного значения. В этом случае напряжение с конденсатора подается на один из входов компаратора, а на второй его вход подается опорное напряжение.

Микроконтроллер должен одновременно запустить два этих процесса: подать напряжение на конденсатор и запустить таймер в режиме Capture.

Конденсатор начнет заряжаться, напряжение на нем при этом будет плавно расти. Одновременно счетчик таймера будет отсчитывать тактовые импульсы заданной частоты. В тот момент, когда напряжение на конденсаторе сравня­ется с опорным напряжением, логический уровень на выходе компаратора изменится на противоположный. По этому сигналу текущее значение счетного регистра запоминается в специальном регистре захвата. Имя этого регистра ICRx (для таймера Т0 это будет ICR0, для Тl - ICRl и т. д.). Одновременно вырабатывается запрос на прерывание.

Используя принцип измерения времени зарядки, удобно создавать простые схемы, работающие с различными аналоговыми датчиками (температуры, давления и т. д.). Если принцип работы датчика состоит в изменении его внутреннего сопротивления, то такой датчик можно включить в цепь зарядки конденсатора. Емкостные датчики можно подключать напрямую.

Режим «Сброс при совпадении» (СТС)

Режим очистки по совпадению (Clear Timer on Compare Match (CTC) Mode)

Для работы в режиме СТС используется специальный регистр - регистр совпадения. Если микроконтроллер содержит несколько таймеров, то для каждого из них существует свой отдельный регистр совпадения. Причем для восьмиразрядных таймеров регистр совпадения - это один восьмиразрядный регистр. Для шестнадцатиразрядных таймеров регистр совпадения - это два восьмиразрядных регистра.

Регистры сравнения также имеют свои имена. Например, регистр совпадения таймера Тl состоит из двух регистров: OCR1L и OCR1H. В ряде микроконтрол­леров существуют два регистра совпадения. Так, во всех микроконтроллерах семейства «Tiny» существует два регистра совпадения для таймера Тl. Это регистры OCR1A и OCRlВ. Два регистра совпадения для таймера Тl имеет и микроконтроллер ATmega8x. Во втором случае, как таймер, так и его регистры совпадения имеют шестнадцать разрядов.

Если регистр совпадения шестнадцатиразрядный, то физически он состоит из двух регистров ввода-вывода. Например, два регистра совпадения таймера Тl микросхемы АTmega8x представляют собой четыре регистра ввода-вывода с именами OCR1AL, OCR1AH, OCRlВL, OCRlВH.

Как же используются регистры совпадения? Эти регистры включаются в работу только тогда, когда выбран режим СТС. В этом режиме, как и в предыдущем, таймер производит подсчет входных импульсов. Текущее значение таймера из его счетного регистра постоянно сравнивается с содержимым регистров совпадения.

Если таймер имеет два регистра совпадения, то для каждого из этих регист­ров производится отдельное сравнение. Когда содержимое счетного регистра совпадет с содержимым одного из регистров совпадения, произойдет вызов соответствующего прерывания. Кроме вызова прерывания, в момент совпа­дения может происходить одно из следующих событий:

  • сброс таймера (верно только для регистров совпадения OCRl и OCR1A);

  • изменение состояния одного из выводов микроконтроллера (верно для всех регистров).

Произойдет или не произойдет одно или оба собьпия из вышеперечисленных, определяется при настройке таймера.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]