Что такое предделитель таймера

Предделители таймеров/счетчиков

Что такое предделитель таймера. Смотреть фото Что такое предделитель таймера. Смотреть картинку Что такое предделитель таймера. Картинка про Что такое предделитель таймера. Фото Что такое предделитель таймера Что такое предделитель таймера. Смотреть фото Что такое предделитель таймера. Смотреть картинку Что такое предделитель таймера. Картинка про Что такое предделитель таймера. Фото Что такое предделитель таймера Что такое предделитель таймера. Смотреть фото Что такое предделитель таймера. Смотреть картинку Что такое предделитель таймера. Картинка про Что такое предделитель таймера. Фото Что такое предделитель таймера Что такое предделитель таймера. Смотреть фото Что такое предделитель таймера. Смотреть картинку Что такое предделитель таймера. Картинка про Что такое предделитель таймера. Фото Что такое предделитель таймера

Что такое предделитель таймера. Смотреть фото Что такое предделитель таймера. Смотреть картинку Что такое предделитель таймера. Картинка про Что такое предделитель таймера. Фото Что такое предделитель таймера

Что такое предделитель таймера. Смотреть фото Что такое предделитель таймера. Смотреть картинку Что такое предделитель таймера. Картинка про Что такое предделитель таймера. Фото Что такое предделитель таймера

Как уже говорилось ранее, каждый таймер микроконтроллера может работать от двух разных источников тактовых импульсов. Либо это внешние импульсы, либо импульсы, вырабатываемые внутренней схемой микроконтроллера. Какой бы источник сигналов ни был выбран, перед тем, как попасть на вход таймера, этот сигнал проходит схему предварительного делителя. Предварительный делитель предназначен для того, чтобы расширить диапазон формируемых частот и длительностей таймера. Каждая микросхема АVR имеет свою струк­туру предварительного делителя для таймеров/счетчиков. Упрощенная схема одного из вариантов предварительного делителя приведена на рис. 5.1.

Как видно из приведенных схем, в микроконтроллеры интегрированы 10- ступенчатый делитель и мультиплексоры, осуществляющие подключение соответствующего выхода делителя ко входу счетчиков.

С выходов делителя снимаются сигналы СLК/8, CLK/64, CLK/256 и CLK/1024. В схеме имеют место цепи, через которые на вход таймера могут поступать внешние импульсы Т0 и Т1.

Что такое предделитель таймера. Смотреть фото Что такое предделитель таймера. Смотреть картинку Что такое предделитель таймера. Картинка про Что такое предделитель таймера. Фото Что такое предделитель таймера

В режиме работы «Счетчик», в качестве активного фронта с помощью мультиплексора может быть выбран нисподающий или нарастающий фронт внешнего импульса на входах Т0 и Т1. При таком режиме внешний сигнал Т0 (как и Т1) синхронизируется с тактом системной синхронизации СLК внутреннего кварцевого осциллятора. Для этого внешний сигнал проверяется в течение каждого нарастающего фронта СLК (рис.5.2).

Что такое предделитель таймера. Смотреть фото Что такое предделитель таймера. Смотреть картинку Что такое предделитель таймера. Картинка про Что такое предделитель таймера. Фото Что такое предделитель таймера

На рис. 5.2 показаны различные сигналы, синхронизируемые сигналом CLK, при этом необходимо отметить, что только сигнал А синхронизируется без потери информации. Это необходимо учитывать при выборе частоты работы МК.

Все счетные сигналы поступают на входы данных мультиплексора. На адресные входы мультиплексора поступают сигналы от трех разрядов регистра управления таймером (TCCRn).

Таким образом, записывая в разряды CSn0, CSnl, CSn2 различные значения, можно выбирать один из восьми режимов работы предделителя. В зависимости от выбранного режима, на выход схемы могут поступать сигнал с одного из выходов десятиразрядного делителя, прямой сигнал с тактового генератора либо нулевой логический уровень (входа D0). В последнем случае сигнал на входе таймера будет отсутствовать, и его работа приостанавливается.

CSn2CSn1CSn0Описание
Источник тактирования не выбран. (Счетчик остановлен).
clkI/O/1 (Не предварительного деления).
clkI/O/8 (Тактовый сигнал с пред. делителя).
clkI/O/64 (Тактовый сигнал с пред. делителя).
clkI/O/256 (Тактовый сигнал с пред. делителя).
clkI/O/1024 (Тактовый сигнал с пред. делителя).
Внешнее тактирование с вывода Tn. Такт по спадающему фронту сигнала.
Внешнее тактирование с вывода Tn. Такт по нарастающему фронту сигнала.

Здесь величиной clkI/O обозначена частота тактирования процессора.

Таким образом, схемы предделителей обеспечивают следующие восемь различных вариантов формирования счетных импульсов:

· 0— отсутствие импульсов;

· 1— «таймер», прямой сигнал от внутреннего генератора;

· 2. 5— «таймер», один из сигналов с делителя;

· 6— «счетчик», инверсный сигнал с внешнего входа (активный

· 7— «счетчик», прямой внешний сигнал (активный нарастающий

Схема, приведенная на рис. 5.1, не является стандартом для всех микрокон­троллеров серии АVR. Она отражает лишь общий принцип построения пред­делителей. В разных моделях это сделано немного по-разному.

Как уже отмечалось, способ тактирования определяется битами CSn2:0 (Clock Select), расположенными в регистре управления TCCRnB.

Источник

ОБОРУДОВАНИЕ
ТЕХНОЛОГИИ
РАЗРАБОТКИ

Блог технической поддержки моих разработок

Урок 16. Таймеры STM32 в режиме счетчиков. Генерация циклических прерываний от таймеров.

Что такое предделитель таймера. Смотреть фото Что такое предделитель таймера. Смотреть картинку Что такое предделитель таймера. Картинка про Что такое предделитель таймера. Фото Что такое предделитель таймера

В уроке познакомимся с таймерами микроконтроллера, научимся конфигурировать их в режиме счетчика и организовывать циклические прерывания.

В предыдущем уроке я рассказывал о выполнении задач параллельными процессами. Для реализации такого способа необходимо формировать циклические прерывания с заданным периодом. Опять же в предыдущем уроке было сказано, что логичнее и проще это делать с помощью аппаратных таймеров.

В этом уроке мы будем рассматривать таймеры в качестве именно такого функционального применения. Т.е. будем использовать их для генерации циклических прерываний.

Таймеры STM32.

У нашего микроконтроллера STM32F103C8T6 есть 4 таймера:

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

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

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

Функциональная схема таймера достаточно сложная. Я выделил только необходимую нам часть.

Что такое предделитель таймера. Смотреть фото Что такое предделитель таймера. Смотреть картинку Что такое предделитель таймера. Картинка про Что такое предделитель таймера. Фото Что такое предделитель таймера

Собственно отсчет импульсов или времени происходит на 16-ти разрядном счетчике CNT. Когда код счетчика достигает значения регистра перезагрузки, счетчик сбрасывается в 0. Таким образом, счетчик считает по циклу от 0 до значения регистра перезагрузки.

Частота сигнала тактирования таймера может быть уменьшена с помощью 16-ти разрядного предделителя PSC.

Перезагрузка счетчика формирует событие (прерывание). Частота его появления также может быть уменьшена счетчиком повторов (8 разрядов). Коэффициент деления задается в регистре повторов.

Код счетчика используется другими узлами таймера, например, для формирования ШИМ. Но об этом в других уроках.

В качестве источника тактирования могут быть выбраны:

Сейчас мы будем использовать только внутренний источник тактирования.

Режимы счета таймера.

При использовании таймера в качестве счетчика импульсов можно выбрать один из режимов:

При прямом счете содержимое счетчика с каждым импульсом тактирования увеличивается на 1. Когда оно достигает значения регистра перезагрузки, то счетчик сбрасывается. Таким образом,таймер считает по циклу от 0 до значения перезагрузки. В момент перезагрузки формируется прерывание.

В режиме обратного (реверсивного) счета с каждым входным импульсом содержимое счетчика уменьшается на 1. При достижении 0 в счетчик загружается значение регистра перезагрузки и реверсивный счет продолжается. Таймер считает по циклу от значения перезагрузки до 0. В момент перезагрузки формируется прерывание.

Двунаправленный режим означает, что счетчик считает в прямом направлении от 0 до значения перезагрузки, а затем переходит в реверсивный режим и счет ведется до 0. При изменении направления счета и сбросе генерируется прерывание.

Установка конфигурации таймера с помощью STM32CubeMX.

Давайте научимся конфигурировать таймеры через STM32CubeMX. Заодно в строгой форме перечислим регистры, задающие режимы таймера и выясним, что конкретно в них загружать.

Создадим проект Lesson16_1. Настроим конфигурацию системы тактирования. Обратим внимание на то, что частота тактирования таймеров на шинах APB1 и APB2 задана 72 мГц.

Что такое предделитель таймера. Смотреть фото Что такое предделитель таймера. Смотреть картинку Что такое предделитель таймера. Картинка про Что такое предделитель таймера. Фото Что такое предделитель таймера

Что такое предделитель таймера. Смотреть фото Что такое предделитель таймера. Смотреть картинку Что такое предделитель таймера. Картинка про Что такое предделитель таймера. Фото Что такое предделитель таймера

Теперь будем конфигурировать таймер 1. В нашем микроконтроллере он самый многофункциональный.

Что такое предделитель таймера. Смотреть фото Что такое предделитель таймера. Смотреть картинку Что такое предделитель таймера. Картинка про Что такое предделитель таймера. Фото Что такое предделитель таймера

Ниже появилось поле Parameter Settings.

Что такое предделитель таймера. Смотреть фото Что такое предделитель таймера. Смотреть картинку Что такое предделитель таймера. Картинка про Что такое предделитель таймера. Фото Что такое предделитель таймера

Давайте подробно разберем, что в нем.

Prescaler (PSC).

Это регистр предделителя. Предделитель делит частоту тактирования таймера, поступающую на основной счетчик. По сути, он, вместе с входной частотой, определяет разрешающую способность таймера.

Счетчик предделителя считает входные импульсы от 0 до значения этого регистра. При равенстве кода счетчика и регистра счетчик сбрасывается и начинает считать заново. В момент сброса формируется импульс тактирования основного счетчика таймера. Таким образом, значение регистра предделителя определяет коэффициент деления частоты входного сигнала.

Счетчик и регистр предделителя 16-ти разрядные. Т.е. максимальный коэффициент деления 65536.

Надо помнить, что реальный коэффициент деления на 1 больше, чем значение регистра предделителя. Например:

Значение регистра предделителяКоэффициент деления
01
9991000
65535 (максимальное значение)65536

Регистр предделителя имеет буферный регистр. Поэтому его значение можно устанавливать в любой момент. Реальное изменение коэффициента деления произойдет при перезагрузке буферного регистра в момент перезагрузки основного счетчика таймера.

Counter mode.

Режим счетчика, определяет в какую сторону считать.

Что такое предделитель таймера. Смотреть фото Что такое предделитель таймера. Смотреть картинку Что такое предделитель таймера. Картинка про Что такое предделитель таймера. Фото Что такое предделитель таймера

Counter Period (Auto Reload Register).

Регистр перезагрузки. Его значение задает период работы таймера. Конечно, на время периода влияет еще режим счета.

Счетчик 16-ти разрядный. Значит, для однонаправленного счета период может длиться от 1 до 65536 длительностей импульсов предделителя. Реальная длительность периода на 1 больше значения регистра перезагрузки. Все как для регистра предделителя.

Internal Clock Division (CKD).

Делитель входной частоты для внутренних нужд таймера.

Что такое предделитель таймера. Смотреть фото Что такое предделитель таймера. Смотреть картинку Что такое предделитель таймера. Картинка про Что такое предделитель таймера. Фото Что такое предделитель таймера

Частота используется при фильтрации внешних сигналов, формировании “мертвого времени” ШИМ и т.п. Сейчас это нам не интересно.

Repetition Counter (RCR).

Регистр счетчика повторов. Присутствует не во всех таймерах. Счетчик повторов считает импульсы событий на выходе таймера и при достижении значения регистра повторов сбрасывается и формирует реальное событие. Т.е. он делит частоту генерации событий (прерываний) таймера.

Auto-reload preload.

Управляет режимом перезагрузки специальный бит, а в STM32CubeMX выбор делается в выпадающем меню.

Что такое предделитель таймера. Смотреть фото Что такое предделитель таймера. Смотреть картинку Что такое предделитель таймера. Картинка про Что такое предделитель таймера. Фото Что такое предделитель таймера

Вкладка NVIC Settings позволяет выбрать нужный тип прерывания, связанного с таймером.

Что такое предделитель таймера. Смотреть фото Что такое предделитель таймера. Смотреть картинку Что такое предделитель таймера. Картинка про Что такое предделитель таймера. Фото Что такое предделитель таймера

Пример конфигурации таймера и реализации программы.

Сделаем практическую задачу. Установим конфигурацию таймера 1, обеспечивающую циклические прерывания с периодом 0,5 секунд. В обработчике прерывания будем инвертировать состояние светодиода. В результате получим мигающий светодиод, но с использованием таймера и прерывания.

Частота тактирования у нас 72 мГц. Превратим ее с помощью предделителя в круглое значение.

Например, если задать 720 – 1 = 719, то частота после предделителя будет 72 000 000 / 720 = 100 000 Гц, или период 10 мкс.

Если в регистр перезагрузки задать значение 50 000, то получим требуемый период 0,5 секунд.

Что такое предделитель таймера. Смотреть фото Что такое предделитель таймера. Смотреть картинку Что такое предделитель таймера. Картинка про Что такое предделитель таймера. Фото Что такое предделитель таймера

Во вкладке NVIC Settings выберем прерывание по перезагрузке счетчика.

Что такое предделитель таймера. Смотреть фото Что такое предделитель таймера. Смотреть картинку Что такое предделитель таймера. Картинка про Что такое предделитель таймера. Фото Что такое предделитель таймера

Создаем проект и открываем его в Atollic TrueStudio.

В папке Src проекта создан файл stm32f1xx_it.c. Он существовал и во всех предыдущих проектах. Просто мы на него до времени не обращали внимания.

Это файл обработчиков прерываний. Хороший стиль размещать функции обработки прерываний в нем.

В самом конце файла появилась функция:

void TIM1_UP_IRQHandler(void) <

/* USER CODE BEGIN TIM1_UP_IRQn 0 */
/* USER CODE END TIM1_UP_IRQn 0 */

/* USER CODE BEGIN TIM1_UP_IRQn 1 */
/* USER CODE END TIM1_UP_IRQn 1 */
>

Это и есть обработчик прерывания таймера 1. Код, который мы поместим в функцию, будет вызываться с периодом 0,5 секунд.

Вызовем в обработчике прерывания функции инверсии состояния для обоих светодиодов.

void TIM1_UP_IRQHandler(void) <

/* USER CODE BEGIN TIM1_UP_IRQn 0 */

HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_13);

Мы установили конфигурацию таймера, но не запустили его. Сделаем это HAL-функцией в файле main.c.

/* Initialize all configured peripherals */

HAL_TIM_Base_Start_IT(&htim1); // запуск таймера

Функция запускает таймер в режиме генерации прерываний.

Все. Компилируем, загружаем, проверяем. Оба светодиода мигают раз в секунду.

Полностью проект можно загрузить по ссылке:

Зарегистрируйтесь и оплатите. Всего 60 руб. в месяц за доступ ко всем ресурсам сайта!

Основной цикл у нас пустой. Программа просто крутится в нем.

while (1) <

/* USER CODE END WHILE */

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

В следующем уроке будем разрабатывать программу, обрабатывающую сигнал кнопки параллельным процессом. Научимся связывать переменные разных файлов одной программы. Разберемся в специфике использования функций обработки прерываний.

Источник

Предделители таймеров/счетчиков

Общие сведения

Любой микроконтроллер серии AVR содержит несколько встроен­ных таймеров. Причем по своему назначению их можно разделить на две категории. К первой категории относятся таймеры общего назначения. Вторую категорию составляет сторожевой таймер. Сторожевой таймер предназначен для автоматического перезапуска микроконтроллера в слу­чае «зависания» его программы.

Это полезно запомнить.Зависанием называют зацикливание программы в результате ошибки, допущенной программистом, либо в результате действия внешней помехи.

Для каждой микросхемы нужен всего один сторожевой таймер. В любом микроконтроллере AVR такой таймер имеется.

Таймеры общего назначения используются для формирования различ­ных интервалов времени и прямоугольных импульсов заданной частоты. Кроме того, они могут работать в режиме счетчика и подсчитывать так­товые импульсы заданной частоты, измеряя таким образом длительность внешних сигналов, а также при необходимости подсчитывать количество любых внешних импульсов.

По этой причине данные таймеры называют «таймеры/счетчики».В микросхемах AVR применяются как восьмиразрядные, так и шестнадцати­разрядные таймеры/счетчики. Их количество для разных микроконтрол­леров изменяется от одного до четырех. Точное количество таймеров/счет­чиков для каждой микросхемы серии AVR можно определить из табл. 3.1(графа «Таймеры 8/16 бит»). Все таймеры обозначаютсячислами от 0 до 3.

Пример. Timer/Counter0, Timer/Counter1 и т.д. В русскоязычной литературе их чаще именуют сокращенно Т0, Т1,Т2, ТЗ. Таймеры Т0 иТ2 в большин­стве микроконтроллероввосьмиразрядные. Таймеры Т1 и ТЗшестнадцатиразрядные. Таймер Т0 имеется в любой микросхеме AVR. Остальные добавляются по мере усложнения модели.

Каждый восьмиразрядный таймер представляет собой один восьми­разрядный регистр, который для микроконтроллера является регистром ввода-вывода. Этот регистр хранит текущее значение таймера и называется счетным регистром. Шестнадцатиразрядные таймеры имеют шестнадцати­разрядный счетный регистр.Каждый счетный регистр имеет свое имя.

Счетный регистр восьмиразрядного таймера именуется TCNTx, где «х» — это номер таймера Для таймера Т0 регистр называется TCNT0. Для таймера Т2 — TCNT2. Шестнадцатиразрядные регистры именуются похожим обра­зом. Отличие в том, что каждый шестнадцатиразрядный счетный регистр для микроконтроллера представляет собой два регистра ввода-вывода.

Один предназначен для хранения старших битов числа, а второй — для хранения младших битов. К имени регистра старших разрядов добав­ляется буква Н, а для регистра младших разрядов добавляется буква L. Таким образом, счетный регистр таймера Т1 — это два регистра ввода-вывода: TCNT1H и TCNT1L. Счетный регистр таймера ТЗ — это два регистра TCNT3H и TCNT3L.

Микроконтроллер может записать в любой счетный регистр любое число в любой момент времени, а также в любой момент прочитать содержимое любого счетного регистра. Когда таймер включается в режим счета, то на его вход начинают поступать счетные импульсы. После при­хода каждого такого импульса содержимое счетного регистра увеличива­ется на единицу. Счетными импульсами могут служить как специальные тактовые импульсы, вырабатываемые внутри самого микроконтроллера, так и внешние импульсы, поступающие на специальные входы микро­схемы. При переполнении счетного регистра его содержимое обнуляется, и счет начинается сначала.

Любой таймер жестко завязан с системой прерываний. Вызвать пре­рывание может целый ряд событий, связанных с таймером. Например, существует прерывание по переполнению таймера, по срабатыванию специальной схемы совпадения. Отдельные прерывания может вызывать сторожевой таймер.

Режимы работы таймеров

Таймеры микроконтроллеров семейства AVR могут работать в несколь­ких режимах. Разные микроконтроллеры имеют разные наборы режимов для своих таймеров. Для выбора режимов работы существуют специаль­ные регистры — регистры управления таймерами. Для простых таймеров используется один регистр управления. Для более сложных — два реги­стра. Регистры управления таймером называются TCCRx (где «х» — номер таймера). Например, для таймера Т0 используется один регистр с именем TCCR0. Для управления таймером Т1 используется два регистра: TCCR1А и TCCR1B. При помощи регистров управления производится не только выбор соответствующего режима, но и более тонкая настройка таймера. Ниже перечислены все основные режимы работы таймера и их описание.

Режим Normal

Это самый простой режим. В этом режиме таймер производит под­счет приходящих на его вход импульсов (от тактового генератора или внешнего устройства) и вызывает прерывание по переполнению. Этот режим является единственным режимом работы для восьмиразрядных таймеров большинства микроконтроллеров семейства «Tiny» и для части микроконтроллеров семейства «Mega». Для всех остальных восьмираз­рядных и всех шестнадцатиразрядных таймеров это всего лишь один из возможных режимов.

Режим «Захват» (Capture)

Суть этого режима заключается в сохранении содержимого счетного регистра таймера в определенный момент времени. Запоминание проис­ходит либо по сигналу, поступающему через специальный вход микро­контроллера, либо от сигнала с выхода встроенного компаратора.

Этот режим удобен в том случае, когда нужно измерить длительность какого-либо внешнего процесса. Напримервремя, за которое напряже­ние на конденсаторе достигнет определенного значения. В этом случае напряжение с конденсатора подается на один из входов компаратора, а на второй его вход подается опорное напряжение.

Микроконтроллер должен одновременно запустить два этих процесса: подать напряжение на конденсатор; запустить таймер в режиме Capture.

Конденсатор начнет заряжаться, напряжение на нем при этом будет плавно расти. Одновременно счетчик таймера будет отсчитывать так­товые импульсы заданной частоты. В тот момент, когда напряжение на конденсаторе сравняется с опорным напряжением, логический уровень на выходе компаратора изменится на противоположный. По этому сиг­налу текущее значение счетного регистра запоминается в специальном регистре захвата.Имя этого регистра ICRx (для таймера Т0 это будет ICR0, для Tl — ICR1 и т. д.). Одновременно вырабатывается запрос на прерывание.

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

Режим «Сброс при совпадении» (СТС)

Для работы в режиме СТС используется специальный регистр — регистрсовпадения. Если микроконтроллер содержит несколько тайме­ров, то для каждого из них существует свой отдельный регистр совпаде­ния. Причем для восьмиразрядных таймеров регистр совпадения — это один восьмиразрядный регистр. Для шестнадцатиразрядных таймеров регистр совпадения — это два восьмиразрядных регистра.

Регистры сравнения также имеют свои имена. Например, регистр совпадения таймера Т1 состоит из двух регистров: OCR1L и OCR1H. В ряде микроконтроллеров существуют два регистра совпадения. Так, во всех микроконтроллерах семейства «Tiny» существует два регистра совпадения для таймера Т1. Это регистры OCR1A и OCR1B. Два реги­стра совпадения для таймера Т1 имеет и микроконтроллер ATmega8x. Во втором случае как таймер, так и его регистры совпадения имеют шест­надцать разрядов.

Если регистр совпадения шестнадцатиразрядный, то физически он состоят из двух регистров ввода-вывода. Например,два регистра совпадения таймера Т1 микросхемы ATmega8x представляют собой четыре регистра ввода-вывода с именами OCR1AL, OCR1AH, OCR1BL, OCR1BH.

Как же используются регистры совпадения? Эти регистры включаются в работу только тогда, когда выбран режим СТС. В этом режиме, как и в предыдущем, таймер производит подсчет входных импульсов. Текущее значение таймера из его счетного регистра постоянно сравнивается с содержимым регистров совпадения.

Если таймер имеет два регистра совпадения, то для каждого из этих регистров производится отдельное сравнение. Когда содержимое счетного регистра совпадет с содержимым одного из регистров совпадения, прои­зойдет вызов соответствующего прерывания. Кроме вызова прерывания, в момент совпадения может происходить одно из следующих событий:

♦ сброс таймера (верно только для регистров совпадения OCR1 и OCR1A);

♦ изменение состояния одного из выводов микроконтроллера (верно для всех регистров).

Произойдет или не произойдет одно или оба события из вышепере­численных, определяется при настройке таймера.

Режим «Быстродействующий ШИМ» (Fast PWM)

Это полезно запомнить. ШИМ — расшифровывается как Широтно-Импульсная Модуляция. На английском это звучит как «Pulse Width Modulation» (PWM). Сигнал с ШИМ часто используется в устройствах управления.

Сигнал с ШИМ можно, например,использовать для регулировки ско­рости вращения электродвигателя постоянного тока. Для этого вместо постоянного напряжения на двигатель подается прямоугольное импульс­ное напряжение. Благодаря инерции двигателя импульсы сглаживаются, и двигатель вращается равномерно. Меняя скважность импульсов (то есть отношение периода импульсов к их длительности), можно изменять среднее напряжение, приложенное к двигателю и, тем самым, менять ско­рость его вращения.

Точно таким же образом можно управлять и другими устройствами. Например, нагревательными элементами, осветительными приборами и т. п. Преимущество импульсного управления — в высоком КПД.

Импульсные управляющие элементы рассеивают гораздо меньше пара­зитной мощности, чем управляющие элементы, работающие в аналого­вом режиме.

Для формирования сигнала ШИМ используются те же самые регистры совпадения, которые работают и в режиме СТС. Формирование сигнала ШИМ может осуществляться несколькими разными способами. Работа таймера в режиме Fast PWM проиллюстрирована на рис. 3.5.

Сигнал с ШИМ формируется на специальном выходе микроконтрол­лера. На вход таймера подаются импульсы от системного генератора. Таймер находится в состоянии непрерывного счета. При переполнении таймера его содержимое сбрасывается в ноль, и счет начинается сна­чала. В режиме ШИМ переполнение таймера не вызывает прерываний. На рис. 3.5 это показано в виде пилообразной кривой, обозначенной как TCNTn. Кривая представляет собой зависимость содержимого счетного регистра от времени.

Содержимое счетного регистра непрерывно сравнивается с содер­жимым регистра совпадения. Пока число в регистре OCRn больше, чем число в счетном регистре таймера (TCNTn), напряжение на выходе ШИМ равно логической единице. Когда же в процессе счета содержимое счетного регистра TCNTn станет больше содержимого OCRn, на выходе ШИМ установится нулевой потенциал.

В результате на выходе мы получим прямоугольные импульсы. Скважность этих импульсов будет зависеть от содержимого регистра OCRn. Чем меньше число в OCRn, тем выше скважность выходных импульсов. На рис. 3.5 показана скважность импульсов для двух разных значений регистра OCRn.

Если содержимое OCRn достигнет своего максимального значения, то импульсы на выходе ШИМ исчезнут, и там постоянно будет присут­ствовать логическая единица. При уменьшении числа в OCRn появятся импульсы малой скважности (длительность почти равна периоду). Если плавно уменьшать число в OCRn, то скважность будет плавно умень­шаться. Когда содержимое OCRn достигнет нуля, импульсы на выходе ШИМ также исчезнут, и там установится логический ноль.

Что такое предделитель таймера. Смотреть фото Что такое предделитель таймера. Смотреть картинку Что такое предделитель таймера. Картинка про Что такое предделитель таймера. Фото Что такое предделитель таймера

Режим «ШИМ с точной фазой» (Phase Correct PWM)

Описанный в предыдущем разделе режим ШИМ имеет один недоста­ток. При изменении длительности импульсов меняется и их фаза. Центр каждого импульса как бы сдвигается во времени. При управлении элек­тродвигателем такое поведение фазы нежелательно. Поэтому в микро­контроллерах AVR предусмотрен еще один режим ШИМ. Это ШИМ с точной фазой. Принцип работы таймера в этом режиме изображен на рис. 3.6.

Отличие режима «Phase Correct PWM» от режима «Fast PWM» заклю­чается в режиме работы счетчика. Сначала счетчик считает так же, как и в предыдущем режиме (от каждого входного импульса его значение увеличивается на единицу). Достигнув своего максимального значения, счетчик не сбрасывается в ноль, а переключается в режим реверсивного счета.

Теперь уже от каждого входного импульса его содержимое умень­шается на единицу. В результате пилообразная кривая, отображающая содержимое счетного регистра TCNTn, становится симметричной, как показано на рис. 3.6. Система совпадения работает так же, как и в пред­ыдущем случае.

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

Недостатком режима «Phase Correct PWM» можно считать в два раза меньшую частоту выходного сигнала. Это существенно уменьшает динамичность регулирования. Кроме того, при использовании внешних фильтров для преобразования импульсного сигнала ШИМ в аналоговый, схема с более низкой частотой потребует применения комплектующих с большими габаритами и массой.

Что такое предделитель таймера. Смотреть фото Что такое предделитель таймера. Смотреть картинку Что такое предделитель таймера. Картинка про Что такое предделитель таймера. Фото Что такое предделитель таймера

Асинхронный режим

В некоторых моделях микроконтроллеров таймер может работать в асинхронном режиме. В этом режиме на вход таймера подается либо частота от внутреннего кварцевого генератора, либо от внешнего генера­тора. Счетчик не вырабатывает никаких прерываний и дополнительных сигналов. В этом режиме он работает в качестве часов реального вре­мени. Микроконтроллер может предустанавливать содержимое счетного регистра. А затем в любой момент он может считать это содержимое, получив, таким образом, текущее значение реального времени.

Предделители таймеров/счетчиков

Как уже говорилось ранее, каждый таймер микроконтроллера может работать от двух разных источников тактовых импульсов. Либо это внешние импульсы, либо импульсы, вырабатываемые внутренней схемой микроконтроллера. Какой бы источник сигналов ни был выбран, перед тем, как попасть на вход таймера, этот сигнал проходит схему предвари­тельного делителя. Предварительныйделитель предназначен для того, чтобы расширить диапазон формируемых частот и длительностей тай­мера. Каждая микросхема AVR имеет свою структуру предварительного делителя для таймеров/счетчиков. Упрощенная схема одного из вариан­тов предварительного делителя приведена на рис.3.7.

Что такое предделитель таймера. Смотреть фото Что такое предделитель таймера. Смотреть картинку Что такое предделитель таймера. Картинка про Что такое предделитель таймера. Фото Что такое предделитель таймераКак видно из схемы, частота внутреннего тактового генератора CLK поступает на специальный десятиразрядныйделитель. С выходов дели­теля снимаются сигналы CLK/8, CLK/32, CLK/64, CLK/128, CLK/256 и CLK/1024. Все эти сигналы поступают на входы данных мультиплексора. На адресные входы мультиплексора поступают сигналы от трех разрядов регистра управления таймером (TCCRn).

Таким образом, записывая в разряды CSn0, CSnl, CSn2 различные значения, можно выбирать один из восьми режимов работы предделителя. В зависимости от выбран­ного режима, на выход схемы могут поступать сигнал с одного из выхо­дов десятиразрядного делителя, прямой сигнал с тактового гене­ратора либо нулевой логический уровень (входа D0). В последнем случае сигнал на входе таймера будет отсутствовать, и его работа приостанавливается.

Схема приведенная на рис.3.7, не является стандартом для всех микроконтроллеров серии AVR. Она отражает лишь общий прин­цип построения предделителей. В разных моделях это сделано немного по-разному.

На рис. 3.8 приведена еще одна схема предделителя. Эта схема, в отличие от предыдущей, предусма­тривает подачу на входы таймеров тактового сигнала от внешнего источника. Для этого количество сигналов, снимаемых с десятираз­рядного делителя, уменьшено до четырех. CLK/32 и CLK/128 исключены. Зато в схеме появились цепи, через которые на вход таймера может поступать внешние импульсы.

Эти импульсы должны подаваться на вход Тn. С этого входа импульсы поступают на формирователь, который осуществляет их предваритель­ную обработку (приближает их форму к прямоугольной). Затем импульсы поступают на вход D7 дешифратора. На вход D6 поступают те же импульсы, но только в инвертированном виде. В результате для схемы, показанной на рис. 3.8, мы получаем следующие восемь режимов работы:

· режим 0 — отсутствие импульсов;

· режим 1 — прямой сигнал от внутреннего генератора;

· режимы 2. 5 — один из сигналов с делителя;

· режим 6 — инверсный сигнал с внешнего входа;

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *