
где N - коэффициент деления предделителя (1, 8, 32, 64, 128, 256 или 1024).
Задание предельных значений регистра OCR0 связано с особыми случаями генерации ШИМ-сигнала в режиме ШИМ ФК. Если значение OCR0 установить равным нижнему пределу, то выход будет постоянно иметь низкий уровень, а если установить равным максимальному значению (0xFF), то выход будет постоянно находиться в высоком состоянии, если задан неинвертирующий режим. Инвертирующему режиму соответствуют противоположные указанным логические уровни.
В самом начале периода 2 на рисунке 40 сигнал OC0 переходит из 1 в 0 даже при том, что нет совпадения. Точка этого перехода гарантирует симметричность относительно нижней границы счета. Имеется два случая, в которых изменение логического состояния выхода не зависит от возникновения совпадения:
OCR0 изменяет свое значение с максимального (0xFF) на другое (неравное 0xFF) (см. рис. 40). Если значение OCR0 равно максимальному, то вывод OC0 останется на прежнем уровне как результат совпадения во время обратного счета. Для гарантирования симметричности относительного нижнего предела (0x00) значение OC0 при максимальном значении счетчика должно соответствовать результату совпадении при прямом счете.
Таймер начинает счет с большего значения по сравнению с OCR0 и по этой причине не возникает совпадение и, следовательно, изменение OC0, которое должно было возникнуть во время прямого счета.
Временные диаграммы таймера-счетчика 0
На рисунке 41 представлена временная диаграмма работы таймер-счетчика 0 без предделения, при этом, тактовый сигнал таймера (clkT0) показан как сигнал разрешения синхронизации. Счетная последовательность показана в области максимального значения счетчика (0xFF). На рисунках 42-44 показаны аналогичные временные диаграммы, но с разрешенным предделением тактового сигнала. На рисунках также иллюстрируются моменты установки флагов прерываний, в т. ч. флаг OCF0 для всех режимов, кроме CTC, (рисунок 43) и для режима СТС (рисунок 44). На рисунке 44 также показан момент сброса таймера-счетчика TCNT0.
Представленные диаграммы соответствуют синхронному по отношению к системной частоте режиму тактирования таймера-счетчика. Однако, они будут полностью соответствовать асинхронному режиму работы, если заменить clkI/O на сигнал генератора таймера-счетчика.

Рисунок 41. Временная диаграмма таймера-счетчика без предделения

Рисунок 42. Временная диаграмма таймера-счетчика с предделением на 8 (fclk_I/O/8)

Рисунок 43. Временная диаграмма таймера-счетчика с установкой флага OCF0 и предделением на 8 (fclk_I/O/8)

Рисунок 44. Временная диаграмма таймер-счетчика с предделением на 8 (fclk_I/O/8) в режиме сброса при совпадении
Описание регистров 8-разрядного таймера-счетчика 0
Регистр управления таймером-счетчиком 0 - TCCR0
Разряд | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
FOC0 | WGM00 | COM01 | COM00 | WGM01 | CS02 | CS01 | CS00 | |
Чтение/запись | Чт. | Чт./Зп. | Чт./Зп. | Чт./Зп. | Чт./Зп. | Чт./Зп. | Чт./Зп. | Чт./Зп. |
Исх. значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Разряд 7 - FOC0: Принудительная установка результата сравнения
Функция бита FOC0 активна только, если с помощью бит WGM задан один из режимов, где нет широтно-импульсной модуляции. Однако в целях совместимости с последующими микроконтроллерами рекомендуется во время записи в регистр TCCR0 в позиции данного бита указывать лог. 0, если таймер работает в одном из режимов с широтно-импульсной модуляцией. Если записать лог. 1 в бит FOC0, то это приводит к принудительной установке результата сравнения на входе блока формирования выходного сигнала. Выход OC0 изменяется в соответствии с установками бит COM01, COM00. Следовательно, значение записанное в COM01, COM00 определяет эффект действия принудительной установки результата сравнения. Обратите также внимание, что бит FOC0 является стробирующим.
Строб FOC0 не генерирует каких-либо прерываний, а также не вызывает сброс таймера в режиме СТС, где регистр OCR0 задает верхний предел счета.
Бит FOC0 всегда считывается как 0.
Разряд 6, 3 - WGM01:0: Режим работы таймера-счетчика 0
Данные биты определяют алгоритм счета счетчика, источник, который задает верхний предел счета и тип генерируемых прямоугольных импульсов. Данным таймером поддерживаются следующие режимы работы: нормальный режим, режим сброса при совпадении и два режима с широтно-импульсной модуляцией. В таблице 52 представлены режимы работы таймера-счетчика 0 (см. также "Режимы работы таймера-счетчика 0").
Таблица 52. Описание бит, задающих режим работы таймера-счетчика 0
Номер режима | WGM01 | WGM00 | Наименование режима работы таймера-счетчика 0 | Верхний предел счета | Условие обновления содержимого регистра OCR0 | Условие установки флага TOV0 |
0 | 0 | 0 | Нормальный | 0xFF | Сразу после записи в регистр | Достижение максимального значения (0xFF) |
1 | 0 | 1 | ШИМ с фазовой коррекцией | 0xFF | Достижение верхнего предела счета | Достижение минимального значения (0x00) |
2 | 1 | 0 | Сброс при совпадении | OCR0 | Сразу после записи в регистр | Достижение максимального значения (0xFF) |
3 | 1 | 1 | Быстрая ШИМ | 0xFF | Достижение верхнего предела счета | Достижение максимального значения (0xFF) |
Разряд 5:4 - COM01, COM00: Режим формирования выходного сигнала
Данные биты определяют алгоритм изменения сигнала на выводе OC0. Если значение данных бит ненулевое, то функция вывода OC0 как обычного порта ввода-вывода заменяется на альтернативную. Однако, следует учитывать, что направление этого вывода также управляется через регистр направления данных порта В (DDRB). Поэтому, для разрешения альтернативной функции вывода OC0 также необходимо установить бит 4 (OC0) в регистре DDRB для установки выходного направления.
После активизации альтернативной функции назначение бит COM01, COM00 зависит от выбранного режима работы таймера битами WGM01, WGM00. В таблице 53 приведено назначение бит COM01, COM00, если с помощью WGM01, WGM00 задан нормальный режим или режим сброса при совпадении (т. е. режимы без ШИМ).
Таблица 53. Режимы формирования выходного сигнала в режимах работы таймера 0 без ШИМ
COM01 | COM00 | Описание |
0 | 0 | Функция обычного порта ввода-вывода. OC0 отключен. |
0 | 1 | Переключение (инвертирование) OC0 при каждом совпадении |
1 | 0 | Сброс OC0 при каждом совпадении |
1 | 1 | Установка OC0 при каждом совпадении |
В таблице 54 приведено назначение бит COM01, COM00 для режима работы таймера-счетчика 0 с быстрой ШИМ (WGM01:0).
Таблица 54. Режимы формирования выходного сигнала в режиме таймера 0 с быстрой ШИМ(1)
COM01 | COM00 | Описание |
0 | 0 | Функция обычного порта ввода-вывода. OC0 отключен. |
0 | 1 | Зарезервировано |
1 | 0 | Сброс OC0 при совпадении, установка по достижении верхнего предела (0xFF) |
1 | 1 | Установка OC0 при совпадении, сброс по достижении верхнего предела (0xFF) |
Прим. 1: Имеется особый случай, когда OCR0 = 0xFF и COM01=1. В этом случае возникновение совпадения игнорируется, но сброс или установка по достижении верхнего предела выполняется. См. "Режим быстрой ШИМ".
В таблице 55 приведено действие бит COM01, COM00 для режима ШИМ с фазовой коррекцией, заданного с помощью бит WGM01, WGM00.
Таблица 54. Режимы формирования выходного сигнала в режиме ШИМ с фазовой коррекцией(1)
COM01 | COM00 | Описание |
0 | 0 | Функция обычного порта ввода-вывода. OC0 отключен. |
0 | 1 | Зарезервировано |
1 | 0 | Сброс OC0 при совпадении во время прямого счета. Установка OC0 при совпадении во время обратного счета. |
1 | 1 | Установка OC0 при совпадении во время прямого счета. Сброс OC0 при совпадении во время обратного счета. |
Прим. 1: Существует особый случай, когда OCR0=0xFF/0x00 и COM01=1. В этом случае OC0 всегда находится на постоянном логическом уровне 0 или 1, т. к. 0xFF и 0x00 - точки изменения направления счета и возникающее на них совпадение зачитывается только к одному из направлений счета: обратному или прямому (см. также "Режим ШИМ с фазовой коррекцией").
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |


