Таймер/счетчик 1 в режимеШИМ

При выборе режима широтно-импульсной модуляции (ШИМ), таймер/счетчик 1 и регистры совпадения OCR1A и OCR1В формируют 8, 9 или 10-разрядный непрерывный свободный от "дрожания" и правильный по фазе сигнал, выводимый на выводы PD5 (OC1A) и PD4 (OC1В). Таймер/счетчик 1 работает как реверсивный счетчик, считающий от $0000 до конечного значения (табл.5.5). При достижении конечного значения счетчик начинает считать в обратную сторону до нуля, после чего рабочий цикл повторяется. Когда значение счетчика совпадает с 8, 9 или 10-ю младшими битами регистра OCR1A или OCR1В, выводы PD5 (OC1A) / PD4 (OC1В) устанавливаются или сбрасываются в соответствии с установками бит COM1A1 / COM1A0 или COM1B1 / COM1B0 в регистре TCCR1A (табл.5.6).

Таблица 5.5

Конечное значение таймера и частота ШИМ

Разрешение ШИМ Конечное значение таймера (TOP) Частота ШИМ
8 бит $00FF (255) fTCK1/510
9 бит $01FF (511) fTCK1/1022
10 бит $03FF (1023) fTCK1/2046

В режиме ШИМ, при записи в регистр OCR1A, 10 младших бит передаются во временный регистр и переписываются только при достижении таймером/счетчиком конечного значения (рис.5.13). При этом устраняется появление несимметричных импульсов (дрожания), которые неизбежны при асинхронной записи OCR1A.

Рисунок 5.13 – Эффект асинхронной записи содержимого OCR1х

При работе таймера/счетчика 1 в режиме ШИМ состояние счетного регистра изменяется от $0000 до конечного значения таймера (TOP) (см. табл.5.5), а затем снова до $0000, после чего цикл повторяется. Когда число, содержащееся в регистре счетчика TCNT1, совпадает с содержимым регистра совпадения OCR1A (или OCR1В), происходит изменение состояния соответствующего вывода микроконтроллера (OC1A или OC1B), в соответствии с табл.5.6. Таким образом, длительность импульса равна удвоенному значению содержимого регистра сравнения.

Таблица 5.6

Установка режима совпадения при работе ШИМ

COM1х1 COM1х0 Влияние на вывод OC1
    Не подключен
    Не подключен
    При совпадении, сбрасывается в «0» при прямом счете и устанавливается в «1» при обратном счете (неинвертированный ШИМ-сигнал)
    При совпадении, устанавливается в «1» при прямом счете и сбрасывается в «0» при обратном счете (инвертированный ШИМ-сигнал)

Если в регистр совпадения OCR1A (или OCR1В) записать значение $0000 или конечное значение (TOP), то при следующем совпадении вывод сравнения (OC1A или OC1B) переключится в устойчивое состояние, определяемое битами COM1х1 и COM1х0. Это показано в табл.5.7.

Таблица 5.7

Выход ШИМ для OCR=$0000 или TOP

COM1х1 COM1х0 OCR1х вывод OC1х
    $0000 «0»
    TOP «1»
    $0000 «1»
    TOP «0»

Особенностью работы таймера/счетчика Т1 в режиме ШИМ является то, что при записи в регистр сравнения младшие 10 разрядов записываемого числа на самом деле сохраняются в специальном временном регистре (не путать с регистром TEMP). А изменение содержимого регистра срав­нения происходит только в момент достижения счетчиком максимального значения (ТОР). Благодаря такому решению исключается появление не­симметричных выбросов сигнала на выходе модулятора (помех), которые были бы неизбежны при непосредственной записи в регистр сравнения (см.рис.5.13).

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

И несколько слов о прерываниях. При работе таймера/счетчика Т1 в режиме ШИМ может генерироваться прерывание по переполнению счетного регистра таймера/счетчика, а также прерывания от схемы сравнения.

В режиме ШИМ флаг переполнения таймера 1 (TOV1) устанавливается, когда счетчик изменяет направление счета в точке $0000. Прерывание по переполнению таймера 1 работает как при нормальном режиме работы таймера/счетчика, т.е. оно выполняется, если установлен флаг TOV1 и разрешены соответствующие прерывания. То же самое касается флага совпадения и прерывания по совпадению.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: