Режимы работы таймеров
Таймеры микроконтроллеров семейства 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 |
Нормальный | 0xFFFF | Немедл. | 0xFFFF | |||||
ШИМ с коррекцией фазы, 8 бит | 0x00FF | Максим. величина | 0x0000 | |||||
ШИМ с коррекцией фазы, 9 бит | 0x01FF | Максим. величина | 0x0000 | |||||
ШИМ с коррекцией фазы, 10 бит | 0x03FF | Максим. величина | 0x0000 | |||||
СТС | OCRnA | Немедл. | 0xFFFF | |||||
Быстродействующая ШИМ, 8 бит | 0x00FF | Максим. величина | Максим. величина | |||||
Быстродействующая ШИМ, 9 бит | 0x01FF | Максим. величина | Максим. величина | |||||
Быстродействующая ШИМ, 10 бит | 0x03FF | Максим. величина | Максим. величина | |||||
ШИМ с коррекцией фазы и частоты | ICRn | 0x0000 | 0x0000 | |||||
ШИМ с коррекцией фазы и частоты | OCRnA | 0x0000 | 0x0000 | |||||
ШИМ с коррекцией фазы | ICRn | Максим. величина | 0x0000 | |||||
ШИМ с коррекцией фазы | OCRnA | Максим. величина | 0x0000 | |||||
СТС | ICRn | Немедл. | 0xFFFF | |||||
(Зарезервировано) | – | – | – | |||||
Быстродействующая ШИМ | ICRn | Максим. величина | Максим. величина | |||||
Быстродействующая ШИМ | OCRnA | Максим. величина | Максим. величина |
Это самый простой режим. В этом режиме таймер производит подсчет приходящих на его вход импульсов (от тактового генератора или внешнего устройства и вызывает прерывание по переполнению. Этот режим является единственным режимом работы для восьмиразрядных таймеров большинства микроконтроллеров семейства «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);
· изменение состояния одного из выводов микроконтроллера (верно для всех регистров).
Произойдет или не произойдет одно или оба собьпия из вышеперечисленных, определяется при настройке таймера.
Режим «Быстродействующий ШИМ» (Fast PWM)
Определение. ШИМ - расишфpoфровываеmcя как Шupoтно-Импульсная Модуляцuя. На английском это звyчит как «Pulse Width Modulatioп» (PWМ). Сигнал с ШИМ часто uспользуется в устройствах управления.
Сигнал с ШИМможно, например, использовать для регулировки скорости вращения электродвигателя постоянного тока. Для этого вместо постоянного напряжения на двигатель подается прямоугольное импульсное напряжение. Благодаря инерции двигателя импульсы сглаживаются, и двигатель вращается равномерно. Меняя скважность импульсов (то есть отношение периода импульсов к их длительности), можно изменять среднее напряжение, приложенное к двигателю и, тем самым, менять скорость его вращения.
Точно таким же образом можно управлять и другими устройствами. Например, нагревательными элементами, осветительными приборами и т. п. Преимущества импульсного управления - в высоком КПД. Импульсные управляющие элементы рассеивают гораздо меньше паразитной мощности, чем управляющие элементы, работающие в линейном режиме.
Для формирования сигнала ШИМ используются те же самые регистры совпадения, которые работают и в режиме СТС. Формирование сигнала ШИМ может осуществляться несколькими разными способами. Работа таймера в режиме Fast PWМ проиллюстрирована на рис. 3.5.
Рис.___
Сигнал с ШИМ формируется на специальном выходе микроконтроллера. На вход таймера подаются импульсы от системного генератора. Таймер находится в состоянии непрерывного счета. При переполнении таймера его содержимое сбрасывается в ноль, и счет начинается сначала. В режиме ШИМ переполнение таймера не вызывает прерываний. На рис. 3.5 это показано в виде пилообразной кривой, обозначенной как ТСNТn. Кривая представляет собой зависимость содержимого счетного регистра от времени.
|
|
Содержимое счетного регистра непрерывно сравнивается с содержимым регистра совпадения. Пока число в регистре ОСRn больше, чем число в счетном регистре таймера (ТСNТn), напряжение на выходе ШИМ равно логической единице. Когда же в процессе счета содержимое счетного регистра ТСNТn станет. больше содержимого ОСRn, на выходе ШИМ установится нулевой потенциал.
В результате на выходе мы получим прямоугольные импульсы. Скважность этих импульсов будет зависеть от содержимого регистра ОСRn. Чем меньше число в ОСRn, тем выше скважность выходных импульсов. На рис. 3.5 показана скважность импульсов для двух разных значений регистра ОСRn.
Если содержимое ОСRn достигнет своего максимального значения, то импульсы на выходе ШИМ исчезнут, и там постоянно будет присутствовать логическая единица. При уменьшении числа в ОСRn появятся импульсы малой скважности (длительность почти равна периоду). Если плавно уменьшать число в ОСRn, то скважность будет плавно уменьшаться. Когда содержимое ОСRn достигнет нуля, импульсы на выходе ШИМ также исчезнут, и там установится логический ноль.
Режим «ШИМ с точной фазой» (Phase Correct PWM)
Описанный в предыдущем разделе режим ШИМ имеет один недостаток. При изменении длительности импульсов меняется и их фаза. Центр каждого импульса как бы сдвигается во времени. При управлении электродвигателем такое поведение фазы нежелательно. Поэтому в микроконтроллерах АVR предусмотрен еще один режим ШИМ. Это ШИМ с точной фазой. Принцип работы таймера в этом режиме изображен на рис. 3.6.
Рис._____
Отличие режима «Phase Соrreсt PWМ» от режима «Fast PWМ» заключается в режиме работы счетчика. Сначала счетчик считает так же, как и в предыдущем режиме (от каждого входного импульса его значение увеличивается на единицу). Достигнув своего максимального значения, счетчик не сбрасывается в ноль, а переключается в режим реверсивного счета.
Теперь уже от каждого входного импульса его содержимое уменьшается на единицу. В результате пилообразная кривая, отображающая содержимое счетного регистра TCNТn, становится симметричной, как показано на рис.3.6. Система совпадения работает так же, как и в предыдущем случае.
Благодаря симметричности сигнала на таймере, фаза выходных импульсов в процессе регулировки скважности не изменяется. Середина каждого импульса строго привязана к точке смены направления счета таймера.
Недостатком режима «Phase Соrreсt PWМ» можно считать в два раза меньшую частоту выходного сигнала. Это существенно уменьшает динамичность регулирования. Кроме того, при использовании внешних фильтров для преобразования импульсного сигнала ШИМ в аналоговый, схема с более низкой частотой потребует применения комплектующих с большими габаритами и массой.