При установленном ШИМ режиме таймер/счетчик1 и регистры сравнения выхода A и B (OCR1A и OCR1B), образуют сдвоенный 8, 9 или 10-разрядный автономный генератор ШИМ с правильным чередованием фаз, отсутствием ложных выбросов и выходами на выводы PD5(OC1A) и PD4(OC1B). Таймер/счетчик1 работает как реверсивный счетчик, считающий от $0000 до TOP (см. табл. 2.10), при котором направление счета меняется и отсчет ведется до нуля, после чего цикл повторяется. Когда состояние счетчика совпадет с содержимым 10 младших битов OCR1A или OCR1B, выводы PD5(OC1A)/PD4(OC1B) устанавливаются или очищаются, в соответствии с установками битов COM1A1/COM1A0 или COM1B1/COM1B0 в регистре управления таймером/счетчиком1 TCCR1A. Подробности см. в табл. 2.11.
Таблица 2.10. ТОР значения таймера и частота ШИМ
Разрешение ШИМ | TOP значение таймера | Частота ШИМ |
8-разрядное | $00FF (255) | f TC1 / 510 |
9-разрядное | $01FF (511) | f TC1 / 1022 |
10-разрядное | $03FF (1023) | f TC1 / 2046 |
Таблица 2.11. Выбор режима сравнения1 в ШИМ режиме
COM1X1 | COM1X0 | Выходной сигнал на OCX1 |
Не подключен | ||
Не подключен | ||
Очищается по совпадению при счете вверх. Устанавливается по совпадению при счете вниз (не инвертированный ШИМ) | ||
Очищается по совпадению при счете вниз. Устанавливается по совпадению при счете вверх (инвертированный ШИМ) |
Примечание: X = A или В
|
|
Отметим, что в ШИМ режиме младшие 10 разрядов OCR1A/OCR1B, при записи, пересылаются в ячейки временного хранения. Они фиксируются по достижении таймером/счетчиком1 значения верхней границы. Таким способом обеспечивается защита от появления уширенных ШИМ импульсов (ложных выбросов - glitches) при несинхронной записи OCR1A/OCR1B. См. пример на рис. 2.1
Рис. 2.1. Эффект несинхронной фиксации OCR1X
При чтении OCR1A или OCR1B, в промежутке времени между записью и фиксацией, будет считано содержимое ячейки временного хранения. Это означает, что более раннее записанное значение всегда будет считываться из OCR1A/B. Когда OCR1 содержит $0000 или значение верхней границы, вывод OC1A/OC1B остается на низком или высоком уровне, соответственно установкам COM1A1/COM1A0 или COM1B1/COM1B0. Это отображено в табл. 2.12.
Таблица 2.12.Состояния выходов в ШИМ режиме при OCR1X = $0000 или TOP
COM1X1 | COM1X0 | OCR1X | Состояние выводов OC1X |
$0000 | L | ||
TOP | H | ||
$0000 | H | ||
TOP | L |
Примечание: X = A
В ШИМ режиме флаг переполнения таймера1 (TOV1) устанавливается при смене направления счета при достижении значения $0000. Прерывание по переполнению таймера1 работает так же как и в обычном режиме таймера/счетчика, т.е. оно выполняется когда TOV1 установлен и разрешены прерывания по переполнению таймера1 и глобальное прерывание. Это относится и к флагам сравнения выхода таймера1 и прерываниям.
8-разрядный таймер/счетчик2 управляется регистром TCCR2.