Разделы

В сети

Пользователей: 156
Из них просматривают:
Аналоги: 79. Видео: 1. Даташиты: 14. Новости: 17. Остальное: 8. Профиль пользователя: 6. Расчёты: 2. Теги: 1. Форум: 28.
Участников: 2
Гостей: 154

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

Партнёры


Партнёры

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

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

Atmega128. 8-разрядный таймер-счетчик 0 с функциями широтно-импульсной модуляции и асинхронного тактирования

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

8-разрядный таймер-счетчик 0 с функциями широтно-импульсной модуляции и асинхронного тактирования



 

Таймер-счетчик 0 - модуль многофункционального одноканального 8-разрядного таймера-счетчика с аппаратным выходом для генерации ШИМ-сигнала и встроенным асинхронным опциональным тактовым генератором, который оптимизирован под использование часового кварца (32768Гц) для асинхронного по отношению к системной синхронизации тактирования.

 

Основные отличительные особенности:

  • Одноканальный счетчик
  • Опциональный режим сброса таймера при совпадении (автоматическая перезагрузка)
  • Широтно-импульсная модуляция без генерации ложных импульсов при записи нового порога сравнения в OCR0 (двойная буферизация) и с фазовой коррекцией
  • Генератор частоты
  • 10-разрядный предделитель тактовой частоты
  • Генерация прерываний по переполнению и выполнения условия сравнения (TOV0 и OCF0)
  • Возможность асинхронного тактирования совместно с внешним кварцевым резонатором частотой 32 кГц независимо от частоты синхронизации ввода-вывода

Введение

Укрупненная функциональная схема 8-разр. таймера-счетчика представлена на рис. 34. Для уточнения расположения выводов см. "Расположение выводов". Связи с регистрами, к которым осуществляет доступ ЦПУ, в т.ч. биты ввода-вывода и линии ввода-вывода показаны жирной линией. Специфические для данного устройства регистры, расположение и назначение его бит приведены в "Описание регистров 8-разр. таймера-счетчика 0".

Функциональная схема 8-разр. таймера-счетчика
Рисунок 34. Функциональная схема 8-разр. таймера-счетчика

 

Регистры

Регистр таймера-счетчика (TCNT0) и регистр порога сравнения (OCR0) - 8-разр. регистры. Сигналы запроса на прерывание представлены как флаги прерываний таймера в регистре TIFR. Все прерывания индивидуально маскируются с помощью регистра маски прерываний таймеров (TIMSK). Регистры TIFR и TIMSK не представлены на функциональной схеме, т.к. они совместно используются с другими таймерами микроконтроллера.

Таймер-счетчик может тактироваться через предделитель внутренне или асинхронно через внешние выводы TOSC1/2, что описано в последующих разделах. Асинхронная работа управляется регистром асинхронного состояния (ASSR). Блок синхронизации осуществляет выбор, какой тактовый источник используется для инкрементирования (декрементирования) состояния таймера-счетчика. Если источник тактирования не задан, то таймер-счетчик находится в неактивном состоянии. Выход логики выбора синхронизации обозначен как синхронизация таймера (clkT0).

Значение регистра порога сравнения с двойной буферизацией (OCR0) непрерывно сравнивается со значением таймера-счетчика. Результат сравнения может использоваться для генерации сигналов с ШИМ или прямоугольных импульсов переменной частоты на выводе OC0. См. "Блок сравнения". Совпадение порога сравнения со значением таймера-счетчика приводит к установке флага результата сравнения (OCF0), который может использоваться для генерации запроса на прерывание по результату сравнения.

 

Определения

Некоторые определения и их сокращенные наименования, которые интенсивно используются в этом разделе, представлены в таблице 51.

Таблица 51. Определения

НП (нижний предел) Счетчик достигает нулевого значения (0х00)
МАКС (максимальное значение) Счетчик достигает максимального значения 0xFF (десятич. 255)
ВП (верхний предел) Счетчик достигает верхнего предела счета (вершина счета). В качестве вершины счета может выступать фиксированное значение 0xFF или содержимое регистра OCR0.

Тактовые источники таймера-счетчика 0

Таймер-счетчик 0 может тактироваться внутренне синхронно или внешне асинхронно (по отношению к внутренней системной синхронизации). По умолчанию используется тактовый сигнал clkT0, эквивалентный тактовому сигналу микроконтроллера clkI/O. Если в бит AS0 регистра ASSR записать лог. 1, то в качестве источника синхронизации выступает генератор таймера-счетчика, связанный с выводами подключения низкочастотного кварцевого резонатора TOSC1 и TOSC2. Более подробно асинхронная работа описана в "Регистр асинхронного состояния - ASSR". Подробности по источникам синхронизации см. в разделе "Предделитель таймера-счетчика 0".

Блок счетчика

Основу 8-разр. таймера-счетчика 0 составляет программируемый двунаправленный счетчик. Рисунок 35 показывает функциональную схему счетчика и окружающих его элементов.

Функциональная схема счетчика
Рисунок 35. Функциональная схема счетчика

 

Описание сигналов (внутренние сигналы):

  • Счет - Инкрементирует или декрементирует TCNT0 на 1.
  • Направление - Задает направление счета: инкрементирование (+1, прямой счет) или декрементирование (-1, обратный счет).
  • Сброс - Сбрасывает содержимое TCNT0 (запись лог. 0 во все разряды).
  • clkT0 - Синхронизация таймера-счетчика.
  • Верхний предел - Задает максимальное значение, которое может достигнуть TCNT0.
  • Нижний предел - Задает минимальное значение, которое может достигнуть TCNT0 (ноль).

В зависимости от выбранного режима работы счетчик сбрасывается, инкрементируется или декрементируется на каждом такте синхронизации (clkT0). Тактовый сигнал clkT0 может быть внутренним или внешним, а его частота выбирается с помощью бит выбора частоты синхронизации CS02-CS00. Если источник синхронизации не задан (CS02-CS00 = 0b000), то таймер останавливается. Однако состояние TCNT0 доступно ЦПУ независимо от того работает синхронизация таймера или нет. Запись в регистр таймера через ЦПУ перекрывает любые действия самого счетчика: сброс или счет, т.е. имеет более высокий приоритет.

Последовательность счета определяется установкой бит WGM01 и WGM00, расположенных в регистре управления таймером-счетчиком (TCCR0). Имеется точная связь между поведением счетчика (алгоритмом счета) и генерируемой на выходе OC0 формы сигнала. Более подробно об алгоритмах счета и генерации импульсов написано в "Режимы работы".

Флаг переполнения таймера-счетчика (TOV0) устанавливается в соответствии с режимом работы, который выбирается битами WGM01, WGM00. Бит TOV0 может использоваться для генерации прерывания ЦПУ.

 

Блок сравнения

8-разрядный цифровой компаратор непрерывно выполняет сравнение содержимого регистра таймера-счетчика TCNT0 с регистром порога сравнения OCR0. Всякий раз, когда значение TCNT0 совпадает со значением OCR0 компаратор устанавливает флаг совпадения OCF0 следующим тактом синхронизации таймера. Если разрешено прерывание битом OCIE0 = 1, то установка флага совпадения вызывает запрос на прерывание. Флаг OCF0 автоматически сбрасывается во время выполнения процедуры обработки прерывания. Альтернативно, флаг OCF0 можно сбросить программно путем записи лог. 1 в позицию данного бита. Генератор сигнала использует сигнал результата сравнения для генерации прямоугольных импульсов по одному из алгоритмов, который выбирается битами задания режима работы таймера WGM01, WGM00 и битами задания режима формирования выходного сигнала (COM01, COM00). Верхний и нижний пределы счета используются в некоторых режимах работы для выполнения специальных действий (см. "Режимы работы таймера -счетчика 0"). На рисунке 36 приведена функциональная схема блока сравнения.

Функциональная схема блока сравнения
Рисунок 36. Функциональная схема блока сравнения

Регистр OCR0 выполнен по схеме двойной буферизации при использовании режимов с широтно-импульсной модуляцией (ШИМ). В нормальном режиме и режиме сброса таймера при совпадении (CTC) схема двойной буферизации отключается. Двойная буферизация позволяет синхронизировать обновление регистра сравнения OCR0 по достижении верхнего или нижнего предела счета. Такая синхронизация предотвращает возможность возникновения несимметричных ШИМ-импульсов нечетной длины, тем самым гарантируя отсутствие сбоев при генерации прямоугольных импульсов.

Доступ к регистру OCR0 может показаться сложным, но это выполнено не случайно. После разрешения двойной буферизации ЦПУ осуществляет доступ к буферному регистру OCR0, а после отключения - непосредственно адресуется к регистру OCR0.

 

Принудительная установка результата сравнения

В режимах генерации импульсов без ШИМ в формирователе импульсов результат сравнения может быть установлен непосредственно через бит принудительной установки результата сравнения FOC0. Принудительная установка результата сравнения компаратора не приводит к установке флага OCF0 или сбросу/перезагрузке таймера, но влияет на состояние вывода OC0, который будет устанавливаться, сбрасываться или переключаться (инвертироваться) в зависимости от выбранной установки бит COM01, COM00.

 

Результат сравнения блокируется записью в TCNT0

Если ЦПУ осуществляет запись в регистр TCNT0, то результат сравнения будет игнорироваться на следующем такте синхронизации таймера, даже если таймер остановлен. Данная функция позволяет установить в регистре OCR0 то же значение, что и в TCNT0 без генерации запроса на прерывание, если разрешено тактирование таймера-счетчика.

 

Использование блока сравнения

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

Установка OC0 должна быть выполнена перед настройкой линии ввода-вывода на вывод в регистре направления данных. Самый легкий путь установки значения OC0 - использование бита принудительной установки результата сравнения (FOC0) в нормальном режиме. Регистр OC0 сохраняет его значение, даже если происходит изменение режима работы таймера.

Учтите, что биты COM01, COM00 не содержат схемы двойной буферизации и на любые изменения реагируют мгновенно.

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

Теги:

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

Разное

Интересно

Канифоль можно изготовить самому, собрав в лесу сосновую (не еловую!) смолу и перетопив ее в консервной банке.

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