Разделы

В сети

Пользователей: 146
Из них просматривают:
Аналоги: 91. Даташиты: 15. Инструкции: 4. Новости: 17. Остальное: 2. Партнёры: 1. Производители: 1. Профиль пользователя: 2. Теги: 2. Форум: 11.
Участников: 3
Гостей: 143

MACTEP , Google , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Новые объявления

В настоящее время нет объявлений.

Atmega128. Блок формирования выходного сигнала

Написал MACTEP 31.03.2010 7:00:00 (Просмотров: 6937)

Блок формирования выходного сигнала



 

Биты задания режима формирования выходного сигнала (COM01:0) имеют двойное назначение. С одной стороны биты COM01, COM00 используются формирователем сигнала и определяют какое логическое состояние должно быть на выходе OC0 при возникновении следующего совпадения. С другой стороны, биты COM01, COM00 используются для разрешения/запрета альтернативной функции вывода порта OC0. На рисунке 37 представлена упрощенная логическая схема, на которую воздействуют биты COM01, COM00. На рисунке показаны только те регистры управления портом ввода-вывода (DDR и PORT), на которые оказывает действие биты COM01, COM00.

Схема блока формирования выходного сигнала
Рисунок 37. Схема блока формирования выходного сигнала

Функция линии универсального порта ввода-вывода заменяется на функцию выхода формирователя сигнала OC0, если хотя бы один из бит COM01, COM00 установлен (логика ИЛИ). Однако, управлением направлением вывода OC0 (вход или выход) в этом случае остается за соответствующим битом регистра направления данных порта В (DDRB.4). Чтобы значение регистра OC0 присутствовало на выводе OC0 необходимо настроить данную линию на вывод (установить бит DDRB.4). Управление вводом альтернативной функции не зависит от режима генерации сигнала.

Схемотехника выходной логики позволяет инициализировать состояние регистра OC0 перед разрешением настройки вывода OC0 в качестве выхода. Обратите внимание, что в некоторых режимах работах имеются зарезервированные состояния бит COM01, COM00. См. "Описание регистров 8-разр. таймера-счетчика 0".

Режимы генерации сигнала

Значение бит COM01:0 задает различные режимы формирования выходного сигнала, которые в свою очередь зависят от выбранного режима работы таймера. Таймер-счетчик 0 может быть переведен в нормальный режим, в режим сброса таймера при совпадении или в один из режимов с генерацией ШИМ-сигналов. Общим для всех режимов является невыполнение каких-либо действий с выводом OC0 при выполнении условия сравнения, если оба бита COM01, COM00 равны нулю. В таблице 53 описано действие различных установок этих бит для режимов без ШИМ. Аналогичная информация для режима с быстрой ШИМ приведена в таблице 54, а для ШИМ с фазовой коррекцией в таблице 55.

После установки бит COM01, COM00 они вступают в силу только после первого возникшего совпадения вслед за этой установкой. Для режимов без ШИМ установки могут быть незамедлительно активизированы с помощью стробирующего бита FOC0.

Режимы работы таймера-счетчика 0

Режим работы таймера, в т.ч. поведение таймера-счетчика и связанного с ним выхода формирователя сигнала, задается комбинацией бит, задающих режим работы таймера (WGM01, WGM00) и режим формирования выходного сигнала (COM01, COM00). При этом биты задания режима формирования выходного сигнала не влияют на алгоритм счета, т.к. алгоритм счета зависит только от состояния бит задания режима работа таймера. В режимах с ШИМ биты COM01, COM00 позволяют включить/отключить инверсию на генерируемом ШИМ-выходе (т.е. выбрать ШИМ с инверсией или ШИМ без инверсии). Для режимов без ШИМ биты COM01:0 определяют какое действие необходимо выполнить при выполнении условия сравнения: сбросить, установить или инвертировать выход (см. также "Блок формирования выходного сигнала").

Более подробная информация по временным диаграммам работы таймера-счетчика 0 приведена в разделе "Временные диаграммы таймера-счетчика 0".

Нормальный режим работы

Самым простым режимом работы является нормальный режим (WGM01, WGM00 = 0b00). В данном режиме счетчик работает как суммирующий (инкрементирующий), при этом сброс счетчика не выполняется. Переполнение счетчика происходит при переходе через максимальное 8-разр. значение (верхний предел = 0xFF) к нижнему пределу счета (0x00). В нормальном режиме работы флаг переполнения таймера-счетчика TOV0 будет установлен на том же такте синхронизации, когда TCNT0 примет нулевое значение. Фактически, флаг переполнения TOV0 является 9-ым битом таймера-счетчика за тем исключением, что он только устанавливается и не сбрасывается. Однако программно это свойство может быть использовано для повышения разрешающей способности таймера, если использовать прерывание по переполнению таймера, при возникновении которого флаг TOV0 сбрасывается автоматически. Для нормального режима работы не существует каких-либо особых ситуаций связанных с записью нового состояния счетчика, когда требовалось бы учесть меры предосторожности.

Блок сравнения может использоваться для генерации прерываний. Не рекомендуется использовать выход OC0 для генерации сигналов в нормальном режиме работы, т.к. в этом случае будет затрачена значительная часть процессорного времени.

Режим сброса таймера при совпадении (CTC)

В режиме СТС (WGM01, WGM00 =0b10) регистр OCR0 используется для задания разрешающей способности счетчика. Если задан режим CTC и значение счетчика (TCNT0) совпадает со значением регистра OCR0, то счетчик обнуляется (TCNT0=0). Таким образом, OCR0 задает вершину счета счетчика, а, следовательно, и его разрешающую способность. В данном режиме обеспечивается более широкий диапазон регулировки частоты генерируемых прямоугольных импульсов. Он также упрощает работу счетчика внешних событий.

Временная диаграмма для режима СТС показана на рисунке 38. Значение счетчика (TCNT0) инкрементируется до тех пор, пока оно не станет равным значению в OCR0, после чего счетчик (TCNT0) обнулится.

Временная диаграмма для режима СТС
Рисунок 38. Временная диаграмма для режима СТС

С помощью флага OCF0 прерывание может генерироваться всякий раз, когда счетчик достигает своего верхнего предела счета. Если работа прерывания разрешена, то процедура обработки прерывания может использоваться для обновления значения вершины счета. Однако, задание значения вершины счета близкого к значению нижнего предела счета, когда счетчик работает без предделения или с малым значением предделения, необходимо выполнять с особой осторожностью, т.к. в режиме СТС нет двойной буферизации. Если значение, записанное в OCR0, меньше текущего значения TCNT0, то сброс счетчика по условию совпадения наступит, когда он достигнет максимального значения (0xFF), затем перейдет в исходное состояние 0x00 и достигнет нового значения OCR0.

Для генерации сигнала в режиме CTC выход компаратора OC0 может использоваться для изменения логического уровня при каждом совпадении, для чего необходимо задать режим переключения (COM01, COM00 = 0b01). Значение OC0 будет присутствовать на выводе порта, только если для данного вывода задано выходное направление. Максимальная частота генерируемого сигнала равна fOC0 = fclk_I/O/2, если OCR0 = 0x00. Для других значений OCR0 частоту генерируемого сигнала можно определить по формуле:

где переменная N задает коэффициент деления предделителя (1, 8, 32, 64, 128, 256 или 1024).

Также как и для нормального режима работы, флаг TOV0 устанавливается на том же такте таймера, когда его значение изменяется с 0xFF на 0x00.

 

Режим быстрой ШИМ

Режим быстрой широтно-импульсной модуляции (WGM01, WGM00 = 0b11) позволяет генерировать высокочастотные ШИМ-сигналы. От других режимов ШИМ данный отличается однонаправленностью счета. Счетчик изменяет свое значение в направлении от нижнего предела до максимального значения (0xFF), а затем перезагружается значением нижнего предела и счет продолжается снова до максимального значения. Если задан неинвертирующий режим выхода, то при совпадении TCNT0 и OCR0 сигнал OC0 сбрасывается, а при достижении нижнего предела счета устанавливается. Если задан инвертирующий режим, то выход OC0 устанавливается при совпадении и сбрасывается на нижнем пределе счета. За счет однонаправленности счета, рабочая частота для данного режима в два раза выше по сравнению с режимом ШИМ с фазовой коррекцией, где используется двунаправленный счет. Возможность генерации высокочастотных ШИМ сигналов делает использование данного режима полезным в задачах стабилизации питания, выпрямления и цифро-аналогового преобразования. Высокая частота, при этом, позволяет использовать внешние элементы физически малых размеров (индуктивности, конденсаторы), тем самым снижая общую стоимость системы.

В режиме быстрой ШИМ содержимое счетчика инкрементируется пока не достигнет максимального значения (0xFF). Следующим тактовым импульсом счетчик сброситься. Временная диаграмма для режима быстрой ШИМ показана на рис. 39. Значение TCNT0 на временной диаграмме показано в виде графика функции для иллюстрации однонаправленности счета. На диаграмме показаны как инвертированный, так и неинвертированный ШИМ-выходы. Короткой горизонтальной линией показаны точки на графике TCNT0, где совпадают значения OCR0 и TCNT0.

Временная диаграмма режима быстрой ШИМ
Рисунок 39. Временная диаграмма режима быстрой ШИМ

 

Флаг переполнения таймер-счетчика TOV0 устанавливается каждый раз, когда счетчик достигает своего максимального значения (0xFF). Если прерывание разрешено, то процедура обработки прерывания может использоваться для обновления сравниваемого значения.

В режиме быстрой ШИМ блок сравнения позволяет генерировать ШИМ-сигналы на выводе OC0. Если COM01:0=0b10, то выходной ШИМ-сигнал не инвертируется, а если COM01:0=0b11, то инвертируется (см. таблицу 54). Фактическое значение OC0 будет присутствовать на выводе порта, если для данного вывода задано выходное направление. ШИМ-сигнал генерируется путем установки (или сброса) сигнала OC0 при совпадении значений OCR0 и TCNT0 и сброса (или установки) сигнала OC0, если счетчик сбрасывается (состояние счетчика изменяется с максимального значения на нижний предел счета).

Частота выходного ШИМ-сигнала может быть вычислена по следующему выражению:

где N - переменная, которая задает значение коэффициента предделения (1, 8, 32, 64, 128, 256 или 1024).

Задание предельных значений регистра OCR0 связано с особыми случаями в генерации ШИМ-сигнала в режиме быстрой ШИМ. Если в регистр OCR0 записать значение равное нижнему пределу счета, то через каждые 256 тактов синхронизации таймера на выходе будет генерироваться импульс короткой длительности. Если установить значение OCR0 равным максимальному значению, то выход будет иметь постоянный логический уровень 1 или 0 (зависит от заданного режима выхода битами COM01:0).

Генерация меандра (50%-ое заполнение импульсов) в данном режиме возможна, если задать режим переключения (инвертирование состояния) выхода OC0 при каждом совпадении (COM01, COM00 = 0b01). Если в регистр OCR0 записать ноль, то будет генерироваться максимальная частота foc0 = fclk_I/O/2. Данная функция похожа на переключение OC0 в режиме CTC за исключением того, что в режиме быстрой ШИМ работает двойная буферизация в блоке сравнения.

 

Режим широтно-импульсной модуляции с фазовой коррекцией (ШИМ ФК)

Режим ШИМ ФК (WGM01, WGM00 = 0b01) позволяет выполнять фазовую коррекцию ШИМ-сигнала с высокой разрешающей способностью. Режим ШИМ ФК основан на двунаправленной работе таймера-счетчика. Счетчик циклически выполняет счет в направлении от нижнего предела до максимального значения, а затем обратно от максимального значения к нижнему пределу. Если задан неинвертирующий режим выхода компаратора, то выход OC0 сбрасывается/устанавливается при совпадении значений TCNT0 и OCR0 во время прямого/обратного счета. Если задан инвертирующий режим выхода, то, наоборот, во время прямого счета происходит установка, а во время обратного - сброс выхода OC0. При двунаправленной работе максимальная частота ШИМ-сигнала меньше, чем при однонаправленной работе, однако, за счет такой особенности, как симметричность в режимах ШИМ с двунаправленной работой, данные режимы предпочитают использовать при решении задач управления приводами.

Разрешающая способность ШИМ для данного режима фиксирована и равна 8 бит. В режиме ШИМ ФК счетчик инкрементирует свое состояние пока не достигнет максимального значения (0xFF). По достижении максимального значения счетчик реверсируется. Значение TCNT0 остается равным максимальному значению в течение одного такта синхронизации таймера. На рисунке 40 показана временная диаграмма работы таймера-счетчика для режима ШИМ ФК. Значение TCNT0 представлено в виде графика для иллюстрации двунаправленности работы счетчика. На рисунке представлены как неинвертированный, так и инвертированный ШИМ-выходы. Короткие горизонтальные линии указывают точки на графике изменения TCNT0, где совпадают значения OCR0 и TCNT0.

Временная диаграмма режима ШИМ  ФК
Рисунок 40. Временная диаграмма режима ШИМ ФК

 

Флаг переполнения таймера-счетчика (TOV0) устанавливается при достижении счетчиком нижнего предела и может использоваться для генерации прерывания.

В режиме ШИМ ФК блок сравнения позволяет генерировать ШИМ-сигналы на выводе OC0. Установка бит COM01,COM00 = 0b10 соответствует неинвертированному режиму генерации ШИМ-сигнала, а COM01, COM00 = 0b11 - инвертированному (см. табл. 55). Фактическое значение OC0 будет присутствовать на соответствующем выводе порта, если для него задано выходное направление. ШИМ-сигнал генерируется путем сброса (установки) сигнала OC0 при совпадении OCR0 и TCNT0 во время прямого счета и путем установки (сброса) сигнала OC0 при совпадении OCR0 и TCNT0 во время обратного счета. Результирующая частота ШИМ-сигнала в режиме ШИМ ФК может быть вычислена по следующему выражению:

где 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, которое должно было возникнуть во время прямого счета.


 

<< Предыдущая страница Оглавление Следующая страница >>

Теги:

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.

Разное

Интересно

Семь раз отмерь, один раз отрежь. И не перепутай!

Похожие статьи