Разработка новой функции таймера/счетчика на основе MCU

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

Автор: Уоррен Миллер

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

Режимы таймера и счетчика: от простого к продвинутому

Таймеры и счетчики начинаются с некоторых очень простых режимов работы, чтобы заменить общие программные циклы, используемые для подсчета внешних событий, времени внутренних и внешних операций и сбора различной статистики по ключевым операциям MCU. Особенности в Сентенция MAXQ612 иллюстрирует некоторые из наиболее известных микроконтроллеров со счетным режимом, а некоторые примеры показаны на рисунке 1 ниже. В таблице внизу рисунка показаны три распространенных автономных режима работы таймера B, таймера/счетчика MAXQ612. модуль: автоматическая перезагрузка, захват и pp/обратный отсчет. На правом верхнем изображении показана блок-схема режима автоперезагрузки. Тактовый вход на таймер B может поступать от прескалера тактовой частоты, который делит системную тактовую частоту на восемь различных настроек, или от внешнего контакта. Бит управления TRB включает или отключает работу таймера B. Регистр значения таймера (TVB) ведет отсчет, когда таймер достигает значения, хранящегося в регистре перезагрузки таймера B (TBR), генерирует прерывание и сбрасывает TVB в ноль. Это обеспечивает простой способ создания задержки без использования драгоценных циклов ЦП для создания задержки.


Рис. 1. Пример режима счетчика/таймера MCU Maxim MAXQ612. (любезно предоставлено Максимом)

Блок-схема в правом верхнем углу рисунка 1 иллюстрирует работу режима захвата. В этом режиме предварительный делитель часов и функции включения/выключения такие же, как и в режиме автоматической перезагрузки. Регистр TBV ведет счет вверх и сбрасывается в ноль при переполнении и необязательном прерывании. По заднему фронту внешнего вывода TBB значение регистра TBV загружается в регистр захвата TBR, и может быть сгенерировано прерывание EXFB. Этот режим можно использовать для подсчета количества тактовых импульсов между нарастающими фронтами внешнего сигнала для определения частоты сигнала или задержки сигнала. Таким образом, таймер освобождает ЦП от выполнения операций подсчета с интенсивным циклом, поэтому он может делать то, что ему действительно нужно, более эффективно.

MAXQ612 поддерживает несколько других распространенных операций таймера/счетчика, таких как автоматическая перезагрузка вверх/вниз, а также внешний вывод для управления направлением счетчика. Этот режим полезен для декодирования различных сигналов с широтно-импульсной модуляцией, например, используемых в электромеханических датчиках. Режим вывода часов можно использовать для создания простых выходных часов, используя системные часы, предварительный делитель и счет терминала таймера B. Наконец, режим вывода широтно-импульсной модуляции (ШИМ) может генерировать сигналы с выравниванием по фронту для обычных приложений ШИМ, таких как те, которые используются в управлении двигателем.

Функция счетчика/таймера PWM для управления двигателем

Некоторые современные функции таймера/счетчика используются для ШИМ-приложений управления двигателем. Эти счетчики реализуют как можно больше функций ШИМ, связанных с двигателем, используя специальное оборудование, чтобы освободить процессор для функций более высокого уровня. Основные операции ШИМ-счетчика/таймера управления двигателем являются общими для большинства реализаций производителей, и хорошим примером служат таймеры ШИМ NXP LPC 17xx для Трехфазный Двигатели переменного и постоянного тока Приложение управления было оптимизировано. Как показано на рис. 2, функциональность ШИМ-модуля управления двигателем может показаться довольно сложной, пока вы не поймете, что существует три копии основного канала ШИМ-таймера; один слева, один посередине и один справа. Наличие трех каналов позволяет использовать один таймер/счетчик для управления трехфазным двигателем, что обеспечивает очень эффективную реализацию. Каждый канал управляет парой выходов, которые, в свою очередь, управляют чем-то вне микросхемы, например набором катушек в двигателе. Каждый канал содержит регистр таймера/счетчика (ТС), значение которого увеличивается на такт процессора (режим таймера) или входной контакт (режим счетчика).


Рис. 2. ШИМ-таймер/счетчик NXP LPC 17xx. (Предоставлено NXP)

Каждый канал имеет регистр ограничения, который сравнивается со значением ТС, и при совпадении ТС «сбрасывается» одним из двух способов. В режиме с выравниванием по краям TC сбрасывается на 0, а в центральном режиме совпадение переключает TC на уменьшение на каждом тактовом сигнале процессора или переходе на входной контакт, пока он не достигнет 0, после чего он снова начинает отсчет.

Каждый канал также включает в себя регистр соответствия, который содержит меньшее значение, чем регистр ограничения. В режиме с выравниванием по краю выходы каналов переключаются всякий раз, когда TC соответствует регистру совпадения или предела, тогда как в режиме с выравниванием по центру они переключаются только при совпадении с регистром совпадения. Таким образом, регистр лимита управляет периодом вывода, а регистр совпадения контролирует, сколько каждого периода выход проводит в каждом состоянии. Если выход интегрирован в напряжение, небольшое значение в регистре ограничения минимизирует пульсации и позволяет ШИМ-таймеру управления двигателем управлять высокоскоростными устройствами.

Все эти аппаратные элементы канала вместе управляют двумя выходами, A и B, которые могут управлять парой транзисторов для переключения точки управления между двумя шинами питания. В большинстве случаев два выхода имеют противоположную полярность, но можно включить функцию мертвого времени (для каждого канала) для задержки перехода двух сигналов из пассивного в активное состояние, чтобы транзисторы никогда не включались при в то же время . Состояние каждой выходной пары можно рассматривать как высокое, низкое и плавающее или вверх, вниз и от центра. Преобразование активного и пассивного в высокий и низкий уровни программируется для каждого канала, и каждый канал может выполнять ШИМ с выравниванием по краю и по центру. На рис. 3 показаны два примера выходных конфигураций. Тот, что слева, выровнен по центру без мертвого времени.


Рис. 3. Пример конфигурации выхода ШИМ-таймера/счетчика управления двигателем NXP LPC17xx. (Предоставлено NXP)

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

Другие специализированные функции хронометража

Во многих современных микроконтроллерах функции синхронизации и подсчета становятся все более специализированными, поскольку производители ориентируются на конкретные области применения. Например, семейство KineTIs K10 от Freescale, такое как MK10DN512ZVLQ10, имеет множество периферийных устройств для измерения времени и счета со специализированными функциями. Эти периферийные устройства включают в себя: программируемые блоки задержки, которые управляют операциями АЦП и ЦАП, освобождая процессор от управления этими низкоуровневыми процессами; гибкие блоки синхронизации, которые обеспечивают несколько каналов синхронизации, подсчета, захвата ввода и сравнения вывода для поддержки управления и контроля освещения и мощности двигателя; таймер периодических прерываний, который может автономно управлять периферийными прерываниями и DMA-передачами; таймер с очень низким энергопотреблением, который работает, даже когда микроконтроллер находится в состоянии минимального энергопотребления, для обеспечения простых периодических событий «пробуждения»; часы реального времени, сохраняют точное время и могут питаться от батареи, даже когда микроконтроллер полностью отключен, что обеспечивает легкий доступ к данным о работе системы и сроку службы.

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

Комплекты для разработки ускоряют выход на рынок

По мере того, как микроконтроллеры становятся все более ориентированными на приложения, производители создают более ориентированные на приложения наборы средств разработки и эталонные проекты. Приложения для управления двигателем, вероятно, являются одним из наиболее распространенных примеров набора конкретных приложений. В качестве примера компания Renesas предлагает полный комплект для разработки управления двигателем YMCRPRX62T, показанный на рис. 4, который даже включает образец двигателя. Этот комплект поставляется со всем программным обеспечением и примерами проектов, необходимыми для оценки микроконтроллера Renesas RX62T в различных схемах управления двигателями. Размещенный на ПК демонстрационный графический пользовательский интерфейс отображает скорость двигателя, напряжение и ток, позволяя пользователю настраивать параметры и алгоритмы для непосредственного просмотра различных результатов, чтобы помочь настроить работу двигателя для достижения наилучших результатов в конкретной конструкции. Оценочные комплекты управления двигателем с функциональностью, аналогичной Renesas RX62T, также доступны от многих других производителей. Найдите комплект, который наилучшим образом соответствует вашему целевому приложению и среде разработки, чтобы помочь ускорить разработку следующего проекта управления двигателем, воспользовавшись огромным объемом работы, «связанной» производителем.

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

Автор: Уоррен Миллер

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

Режимы таймера и счетчика: от простого к продвинутому

Таймеры и счетчики начинаются с некоторых очень простых режимов работы, чтобы заменить общие программные циклы, используемые для подсчета внешних событий, времени внутренних и внешних операций и сбора различной статистики по ключевым операциям MCU. Функции Maxim MAXQ612 иллюстрируют некоторые из наиболее известных микроконтроллеров с режимом счета, а некоторые примеры показаны на рис. 1 ниже. В таблице в нижней части рисунка показаны три общих автономных режима работы таймера B, модуля таймера/счетчика MAXQ612: автоматическая перезагрузка, захват и pp/обратный отсчет. Верхнее правое изображение показывает блок-схему режима автоматической перезагрузки. Тактовый вход TImer B может поступать от предварительного делителя тактового сигнала, который делит системный тактовый сигнал с восемью различными настройками, или от внешнего вывода. Управляющий бит TRB включает или выключает работу Таймера B. Регистр значений таймера (TVB) начинает отсчет, когда таймер достигает значения, хранящегося в регистре перезагрузки таймера B (TBR), генерирует прерывание и сбрасывает TVB в ноль. Это обеспечивает простой способ создания задержки без использования драгоценных циклов ЦП для создания задержки.


Рис. 1. Пример режима счетчика/таймера MCU Maxim MAXQ612. (любезно предоставлено Максимом)

Блок-схема в правом верхнем углу рисунка 1 иллюстрирует работу режима захвата. В этом режиме предварительный делитель часов и функции включения/выключения такие же, как и в режиме автоматической перезагрузки. Регистр TBV ведет счет вверх и сбрасывается в ноль при переполнении и необязательном прерывании. По заднему фронту внешнего вывода TBB значение регистра TBV загружается в регистр захвата TBR, и может быть сгенерировано прерывание EXFB. Этот режим можно использовать для подсчета количества тактовых импульсов между нарастающими фронтами внешнего сигнала для определения частоты сигнала или задержки сигнала. Таким образом, таймер освобождает ЦП от выполнения операций подсчета с интенсивным циклом, поэтому он может делать то, что ему действительно нужно, более эффективно.

MAXQ612 поддерживает несколько других распространенных операций таймера/счетчика, таких как автоматическая перезагрузка вверх/вниз, а также внешний вывод для управления направлением счетчика. Этот режим полезен для декодирования различных сигналов с широтно-импульсной модуляцией, например, используемых в электромеханических датчиках. Режим вывода часов можно использовать для создания простых выходных часов, используя системные часы, предварительный делитель и счет терминала таймера B. Наконец, режим вывода широтно-импульсной модуляции (ШИМ) может генерировать сигналы с выравниванием по фронту для обычных приложений ШИМ, таких как те, которые используются в управлении двигателем.

Функция счетчика/таймера PWM для управления двигателем

Некоторые современные функции таймера/счетчика используются для ШИМ-приложений управления двигателем. Эти счетчики реализуют как можно больше функций ШИМ, связанных с двигателем, используя специальное оборудование, чтобы освободить процессор для функций более высокого уровня. Основные операции ШИМ-счетчика/таймера управления двигателем являются общими для реализации большинства производителей, и хорошим примером служат таймеры ШИМ NXP LPC 17xx для трехфазных двигателей переменного и постоянного тока. Приложение управления было оптимизировано. Как показано на рис. 2, функциональность ШИМ-модуля управления двигателем может показаться довольно сложной, пока вы не поймете, что существует три копии основного канала ШИМ-таймера; один слева, один посередине и один справа. Наличие трех каналов позволяет использовать один таймер/счетчик для управления трехфазным двигателем, что обеспечивает очень эффективную реализацию. Каждый канал управляет парой выходов, которые, в свою очередь, управляют чем-то вне микросхемы, например набором катушек в двигателе. Каждый канал содержит регистр таймера/счетчика (ТС), значение которого увеличивается на такт процессора (режим таймера) или входной контакт (режим счетчика).


Рис. 2. ШИМ-таймер/счетчик NXP LPC 17xx. (Предоставлено NXP)

Каждый канал имеет регистр ограничения, который сравнивается со значением ТС, и при совпадении ТС «сбрасывается» одним из двух способов. В режиме с выравниванием по краям TC сбрасывается на 0, а в центральном режиме совпадение переключает TC на уменьшение на каждом тактовом сигнале процессора или переходе на входной контакт, пока он не достигнет 0, после чего он снова начинает отсчет.

Каждый канал также включает в себя регистр соответствия, который содержит меньшее значение, чем регистр ограничения. В режиме с выравниванием по краю выходы каналов переключаются всякий раз, когда TC соответствует регистру совпадения или предела, тогда как в режиме с выравниванием по центру они переключаются только при совпадении с регистром совпадения. Таким образом, регистр лимита управляет периодом вывода, а регистр совпадения контролирует, сколько каждого периода выход проводит в каждом состоянии. Если выход интегрирован в напряжение, небольшое значение в регистре ограничения минимизирует пульсации и позволяет ШИМ-таймеру управления двигателем управлять высокоскоростными устройствами.

Все эти аппаратные элементы канала вместе управляют двумя выходами, A и B, которые могут управлять парой транзисторов для переключения точки управления между двумя шинами питания. В большинстве случаев два выхода имеют противоположную полярность, но можно включить функцию мертвого времени (для каждого канала) для задержки перехода двух сигналов из пассивного в активное состояние, чтобы транзисторы никогда не включались при в то же время . Состояние каждой выходной пары можно рассматривать как высокое, низкое и плавающее или вверх, вниз и от центра. Преобразование активного и пассивного в высокий и низкий уровни программируется для каждого канала, и каждый канал может выполнять ШИМ с выравниванием по краю и по центру. На рис. 3 показаны два примера выходных конфигураций. Тот, что слева, выровнен по центру без мертвого времени.


Рис. 3. Пример конфигурации выхода ШИМ-таймера/счетчика управления двигателем NXP LPC17xx. (Предоставлено NXP)

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

Другие специализированные функции хронометража

Во многих современных микроконтроллерах функции синхронизации и подсчета становятся все более специализированными, поскольку производители ориентируются на конкретные области применения. Например, семейство KineTIs K10 от Freescale, такое как MK10DN512ZVLQ10, имеет множество периферийных устройств для измерения времени и счета со специализированными функциями. Эти периферийные устройства включают в себя: программируемые блоки задержки, которые управляют операциями АЦП и ЦАП, освобождая процессор от управления этими низкоуровневыми процессами; гибкие блоки синхронизации, которые обеспечивают несколько каналов синхронизации, подсчета, захвата ввода и сравнения вывода для поддержки управления и контроля освещения и мощности двигателя; таймер периодических прерываний, который может автономно управлять периферийными прерываниями и DMA-передачами; таймер с очень низким энергопотреблением, который работает, даже когда микроконтроллер находится в состоянии минимального энергопотребления, для обеспечения простых периодических событий «пробуждения»; часы реального времени, сохраняют точное время и могут питаться от батареи, даже когда микроконтроллер полностью отключен, что обеспечивает легкий доступ к данным о работе системы и сроку службы.

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

Комплекты для разработки ускоряют выход на рынок

По мере того, как микроконтроллеры становятся все более ориентированными на приложения, производители создают более ориентированные на приложения наборы средств разработки и эталонные проекты. Приложения для управления двигателем, вероятно, являются одним из наиболее распространенных примеров набора конкретных приложений. В качестве примера компания Renesas предлагает полный комплект для разработки управления двигателем YMCRPRX62T, показанный на рис. 4, который даже включает образец двигателя. Этот комплект поставляется со всем программным обеспечением и примерами проектов, необходимыми для оценки микроконтроллера Renesas RX62T в различных схемах управления двигателями. Размещенный на ПК демонстрационный графический пользовательский интерфейс отображает скорость двигателя, напряжение и ток, позволяя пользователю настраивать параметры и алгоритмы для непосредственного просмотра различных результатов, чтобы помочь настроить работу двигателя для достижения наилучших результатов в конкретной конструкции. Оценочные комплекты управления двигателем с функциональностью, аналогичной Renesas RX62T, также доступны от многих других производителей. Найдите комплект, который наилучшим образом соответствует вашему целевому приложению и среде разработки, чтобы помочь ускорить разработку следующего проекта управления двигателем, воспользовавшись огромным объемом работы, «связанной» производителем.

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

Посмотреть больше: Модули IGBT | ЖК-дисплеи | Электронные компоненты