5.13 Режим сброса при совпадении (СТС)
В режиме сброса при совпадении или, по-другому, в режиме СТС (при WGM02:0 = 2) регистр OCR0A используется для того, чтобы управлять коэффициентом пересчёта счётчика. В режиме СТС счётчик сбрасывается в ноль при совпадении содержимого счётчика регистра (TCNT0) и регистра OCR0A.
Регистр OCR0A, таким образом, определяет максимальное значение для счётчика, а, следовательно, и его коэффициент пересчёта.
Этот режим позволяет максимально контролировать частоту сигнала на выходе модуля. Упрощается также и подсчёт внешних событий. Значение счётчика регистра (TCNT0) увеличивается до момента, пока не происходит совпадение между TCNT0 и OCR0A, и затем содержимое счётчика (TCNT0) очищается.
Прерывание может вызываться каждый раз, когда счётчик достигает значения TOP. При этом используется флагOCF0A. Если прерывание разрешено, вызывается процедура обработки прерывания, которая может использоваться для того, чтобы обновить значение TOP.
Установка TOP чересчур близко к значению BOTTOM в тот момент, когда счётчик не работает или при низком коэффициенте предварительного деления, должна выполняться осторожно, так как режим СТС не имеет двойной буферизации.
Если новое значение, записанное в OCR0A, будет ниже, чем текущее значение TCNT0, то источник пропустит момент совпадения. В результате счётчик продолжит счёт до своего максимального значения (0xFF), затем перейдёт через ноль и лишь затем произойдёт момент совпадения.
Для генерации выходного сигнала в режиме СТС выход OC0Aможет быть установлен в режим переключения выходного уровня каждый раз в момент совпадения. Для этого нужно установить в соответствующее положение биты режима вывода сигнала совпадения (COM0A1:0 = 1). Значение регистра OC0A не поступит на соответствующий внешний контакт порта, если он не сконфигурирован как выход. Сгенерированный сигнал будет иметь максимальную частоту fOC0 = fclk_I/O/2, когда в регистр OCR0A записан ноль (0x00). Частота сигнала может быть рассчитана при помощи следующего уравнения:
где переменная N – это коэффициент предварительного деления (1, 8, 64, 256 или 1024).
Как и в режиме Normal, флаг TOV0 устанавливается каждый раз, когда счётчик досчитывает до MAX и переходит в ноль.
5.14 Режим FastPWM (быстрый ШИМ)
Микроконтроллер имеет несколько режимов широтно-импульсной модуляции (ШИМ). По-английски это звучит как Pulse Width Modulation (PWM).Быстрый ШИМ (fastPWM) выбирается при WGM02:0 = 3 или 7. В этом режиме формируется самый высокочастотный сигнал ШИМ. Быстрый ШИМ отличается от других режимов ШИМ тем, что для формирования сигнала счётчик формирует только возрастную последовательность. То есть изменение значение счётчика имеет вид пилообразного сигнала с односторонним наклоном.
Счёт начинается со значения BOTTOM и заканчивается значением TOP. После этого счётчик перезапускается (снова устанавливается значение BOTTOM). Значение TOP равно 0xFF при WGM2:0 = 3.
Если же WGM2:0 = 7, значение TOP определяется содержимым регистра OCR0A. В режиме неинвертирующего выхода сигнал совпадения (OC0x) сбрасывается в момент совпадения значений TCNT0 иOCR0xи перехода к BOTTOM.
В инвертирующем режиме сигнал на выходе устанавливается в момент совпадения и перехода в BOTTOM. Благодаря тому, что счётчик работает всегда только в одном направлении, частота сигнала в режиме fast PWM может быть в два раза выше, чем в режиме phasecorrect PWM, который использует пилообразный сигнал с двумя наклонами.
Благодаря высокой частоте выходного сигнала режим fast PWM хорошо подходит для создания систем регулировки мощности, для построения выпрямителей и цифро-аналоговых преобразователей. Высокая частота позволяет применять внешние компоненты (катушки, конденсаторы) небольших размеров, и тем самым, уменьшать общую стоимость системы.
В режиме fast PWM значение счётчика увеличивается до тех пор, пока не достигнет значения TOP. В следующем цикле тактового сигнала таймера счётчик очищается.
Флаг переполнения таймера/счётчика (TOV0) устанавливается каждый раз, когда счётчик достигает значения TOP. Если прерывание разрешено, то вызывается процедура обработки прерывания, которая может быть использована для обновления уровня совпадения.
В режиме fast PWM модуль совпадения используется для генерации сигнала ШИМ на выходах OC0x. Установка битов COM0x1:0 = 2 произведёт к генерации на выходе неинвертированного сигнала ШИМ. Для генерации инвертированного сигнала ШИМ необходимо установить COM0x1:0 = 3. При установке битов COM0A1:0 = 1сигнал на выходе AC0A в момент совпадения переключается в противоположное состояние при условии, что бит WGM02 = 1.
Эта опция не доступна для выхода OC0B. Фактическое значение OC0x поступит на внешний контакт микросхемы только в том случае, если он будет сконфигурирован как выход.
Сигнал ШИМ формируется путём установки (сброса) регистра OC0x в момент совпадения значений OCR0xи TCNT0, и сброса (установки) этого регистра в первом тактовом цикле, после перезагрузки счётчика (изменении его значения с TOP на BOTTOM). Частота сигнала ШИМ на выходе может быть рассчитана при помощи следующего выражения:
.
Переменная N представляет собой коэффициент предварительного деления (1, 8, 64, 256 или 1024). Отдельно нужно рассмотреть несколько случаев при генерации сигнала ШИМ, когда в регистр OCR0Aзаписывается значение, близкое к предельному.
Если в регистре OCR0Aбудет установлено значение, равное BOTTOM, то выходной сигнал будет представлять собой короткий выброс для каждого MAX + 1тактового импульса таймера.
Если в регистр OCR0Aзаписать значение MAX, то это приведёт к тому, что на выходе будет постоянно присутствовать либо высокий, либо низкий логический уровень (в зависимости от значения битов COM0A1:0).
Частота выходного сигнала в режиме fast PWM (при уровне регулирования 50%) может быть достигнута, если заставить регистр OC0x переключать свой логический уровень при каждом совпадении (COM0x1:0 = 1).
Сформированный таким образом сигнал будет иметь максимальную частоту fOC0 = fclk_I/O/2 в том случае, когда в регистре OCR0A записан ноль. Эта особенность позволяет переключать регистр OCR0A таким же образом, как в режиме СТС, но при этом использовать все преимущества двойной буферизации, которая применяется в режиме fast PWM.
... под управлением операционных систем: FreeBSD, Linux, Microsoft Windows 2000 и выше. Принимая во внимание вышесказанное, целью данной работы является разработка информационно-обучающей программы. 2. Пограммная модель и принципы работы таймеров/счетчиков микроконтроллеров семейства AVR 2.1 Структура таймера/счетчика 16-разрядный таймер/счетчик может получать тактовый сигнал (CK), CK после ...
... Какие специализированные команды необходимо применять для опроса датчика? 2.3 Запуск и выполнение Скомпилированная программа представляет собой файл типа cof, который прошиваем на микроконтроллер ATmega 128 семейства AVR. Соединяем компоненты рабочей модели прибора, получаем сигнал с температурного датчика, считываем температуру окружающей среды. 3. Список используемой литературы ...
... данных. Эту память называют еще памятью данных. Число циклов чтения и записи в ОЗУ неограниченно, но при отключение питания вся информация теряется. Раздел 2. Среды программирования. Схемы подключения микроконтроллера Программная среда "AVR Studio" - это мощный современный программный продукт, позволяющий производить все этапы разработки программ для любых микроконтроллеров серии AVR. Пакет ...
... AVR Studio запомнит расположение окон и использует эти установки при следующем запуске проекта. 3.2. Анализ методики реализации разработки программного обеспечения 3.2.1. Классификация вариантов заданий Цель заданий – практическое освоение методики программирования на ассемблере микроконтроллеров ATMEL семейства AVR, отладка программы на симуляторе AVR Studio и программирование кристалла с помощью ...
0 комментариев