Научная статья на тему 'Применение модуля захвата, сравнения, ШИМ в контроллерах Microchip'

Применение модуля захвата, сравнения, ШИМ в контроллерах Microchip Текст научной статьи по специальности «Электротехника, электронная техника, информационные технологии»

CC BY
379
68
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по электротехнике, электронной технике, информационным технологиям, автор научной работы — Афанасьев Илья

На конкретных примерах рассматривается применение модулей захвата, сравнения и ШИМ, имеющихся в контроллерах производства компании Microchip.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Применение модуля захвата, сравнения, ШИМ в контроллерах Microchip»

Компоненты и технологии, № 3'2004

Применение модуля захвата, сравнения, ШИМ

в контроллерах Microchip

На конкретных примерах рассматривается применение модулей захвата, сравнения и ШИМ, имеющихся в контроллерах производства компании Microchip.

Илья Афанасьев

ilya.afanasiev@microchip.com.ru

О-

Ф:

п

ирма Microchip продолжает разработку и производство передовых продуктов, предоставляющих пользователю большую функциональность, гибкость и надежность. Микроконтроллеры PICmicro используются во многих приборах повседневного спроса — от стиральных машин и автомобильной техники до медицинских приборов. Модуль сравнения, захвата и ШИМ (ССР), который присутствует во многих микроконтроллерах Microchip, используется в основном для измерения и формирования импульсных сигналов. Расширенный модуль ССР (enhanced CCP — ECCP), имеющийся во многих новых микроконтроллерах, предоставляет дополнительные возможности для формирования широтно-импульсной модуляции (ШИМ). Модуль ЕССР обеспечивает поддержку управления мостовыми и полумостовыми схемами управления, программируемое время задержки переключения (для предотвращения протекания сквозных токов через внешние силовые ключи, связанного с их разным временем переключения) и возможность автоматического выключения ШИМ при аварийных ситуациях. Модули ССР и ЕССР имеют широкие области применения. Эта статья описывает основные принципы использования данных модулей в каждом режиме, а также «нестандартные» варианты использования в практических решениях.

Модуль захвата (capture)

В режиме захвата 16-битное значение таймера (Timer 1) захватывается в регистр CCPRxH:CCPRxL при каждом событии на входе CCPx. Событие для захвата задается в регистре CCPxCON<3:0>:

• каждый спад входного сигнала;

• каждый фронт входного сигнала;

• каждый 4-й фронт входного сигнала;

• каждый 16-й фронт входного сигнала.

Модуль захвата используется для измерения длительности между двумя событиями, например периода, длительности импульса, скважности и т. п.

Пример 1. Измерение периода дискретного сигнала (рис. 1).

1. Конфигурируем управляющие биты ССРхМ3:ССРхМ0 (ССРхСОЫ<3:0>) на захват по каждому фронту входного сигнала.

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

3. Разрешаем прерывание от ССР (бит ССРхІЕ).

4. При возникновении прерывания:

• вычитаем сохраненное время (И) из захваченного значения времени (12) и сохраняем результат периода Т;

• сохраняем захваченное время 12.

Пример 2. Измерение периода с усреднением результата (рис. 2).

Усреднение результата измерений часто требуется при зашумленном входном сигнале. Модуль ССР в PIC-контроллерах Microchip позволяет выполнить усреднение с минимальными программными издержками.

1. Конфигурируем управляющие биты CCPxM3:CCPxM0 (CCPxCON<3:0>) на захват по каждому 16-му фронту входного сигнала.

2. Конфигурируем предделитель Timer1 так, чтобы не происходило переполнение таймера за измеряемое время.

Компоненты и технологии, № 3'2004

3. Разрешаем прерывание от ССР (бит ССРхІЕ).

4. При возникновении прерывания: •вычитаем сохраненное время (11) из захваченного значения времени (12) и сохраняем результат 16 периодов (16хТ);

• сохраняем захваченное время 12;

• сдвигаем полученный результат на 4 шага вправо (деление на 16) — получаем усредненный результат за 16 периодов.

Пример 3. Измерение длительности импульса (рис. 3).

1. Конфигурируем управляющие биты ССРхМ3:ССРхМ0 (ССРхС0Ы<3:0>) на захват по каждому фронту входного сигнала.

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

3. Разрешаем прерывание от ССР (бит ССРхІЕ).

4. При возникновении прерывания сохраняем захваченное значение таймера (11) и переконфигурируем захват по спаду импульса.

5. При следующем прерывании вычитаем из 11 новое захваченное значение. Результат будет соответствовать длительности импульса.

к

< ►

11 12

Рис. 3. Измерение длительности импульса

Пример 4. Измерение скважности импульсов (рис. 4).

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

1. Конфигурируем управляющие биты ССРхМ3:ССРхМ0 (ССРхС0Ы<3:0>) на захват по каждому фронту входного сигнала.

2. Конфигурируем предделитель таймера 1 так, чтобы не происходило переполнение таймера за время ТМАХ (максимально возможная длительность периода).

3. Разрешаем прерывание от ССР (бит ССРхІЕ).

4. При возникновении прерывания сохраняем захваченное значение таймера (11) и переконфигурируем захват по спаду импульса.

5. При следующем прерывании вычитаем из 11 новое захваченное значение 12. Этот результат будет соответствовать длительности импульса (її).

6. Переконфигурируем модуль ССР на захват по следующему фронту импульса.

7. При возникновении прерывания вычитаем из 11 новое захваченное значение 13. Этот результат будет соответствовать периоду (Т).

8. Разделить значение Т на її — получим значение скважности.

9. Повторять пп. 4-8 для получения следующих значений скважности.

Пример 5. Измерение скорости вращения энкодера.

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

Вид спереди сбоку

а)

С/ ■ (■

ИК-излучатель/ датчик

Рис. 5 Оптический энкодер

Вид

спереди сбоку

■ I

магнит Датчик Холла

Рис. 6. Энкодер с датчиками Холла

высокая скорость низкая скорость 1

Рис. 7. Выход энкодера при разных скоростях вращения

Уіп' і V 5ЄП5 V оиі> к л г

к л Г

л и

к

Рис. 9. Диаграммы в контрольных точках

объекте (рис. 6). Такой датчик выдает один или несколько импульсов на один оборот объекта. На рис. 7 показаны временные диаграммы при разных скоростях вращения. При увеличении скорости вращения период импульсов и их длительность становятся меньше. Период и длительность импульса пропорциональны скорости вращения. Для получения большей разрешающей способности лучше использовать датчики с несколькими импульсами на 1 оборот. Описание измерения периода для определения скорости вращения энкодера см. в примере 1, а метод усреднения измерений периода — в примере 2.

Пример 6. Измерение периода аналогового сигнала.

Микроконтроллер со встроенным аналоговым компаратором и модулем ССР или ЕССР может быть легко использован для измерения периода аналогового сигнала. На рис. 8 приведен пример схемы с использованием периферийных модулей контроллера Р1С16Б684. Резисторы ИЗ и И4 задают порог срабатывания компаратора. При пересечении входным сигналом уровня порога, выходной уровень напряжения компаратора переключается между 0 и 1. Резисторы И1 и И2 задают гистерезис для предотвращения «дребезга» при равенстве порогового и входного напряжений. Рис. 9 демонстрирует эффект гистерезиса.

Модуль ССР конфигурируется в режим захвата для измерения периода на выходе компаратора.

Компоненты и технологии, № 3'2004

Модуль сравнения (compare)

В режиме сравнения 16-разрядные значения регистра ССРИх сравниваются с состоянием таймера. При совпадении происходит прерывание и вывод контроллера ССРх:

• устанавливается в 1;

• устанавливается в 0;

• состояние не меняется;

• переключается конфигурация модуля.

Реакция вывода определяется битами управляющего регистра ССРхС0Ы<3:0>.

Триггер специальных событий

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

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

Пример 7. Формирование модулирующих импульсов для различных форматов передачи данных.

Модуль ССР в режиме сравнения может использоваться для формирования различных форматов модуляции. На рис. 10-12 приведены различные варианты представления 0 и 1 в различных форматах передачи данных. Передача данных похожа на асинхронную передачу данных, содержащую СТАРТ-бит, восемь информационных бит и СТОП-бит. Время ТЕ является базовым временным элементом в каждом формате модуляции и задает скорость передачи данных. Триггер специального события может использоваться для формирования времени ТЕ. При возникновении прерывания от ССР подпрограмма обработки прерывания формирует требуемый формат передачи данных.

Те Те Те

Лог «0»

Лог«1»

Рис. 10. Шир отно-импу льсная (Ш ду о 5 И ляция

Лог «0»

Лог «1»

Те Те

Рис. 11. Манчестерская модуляция

Те Те Те

Лог «0»

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Лог«1»

Рис. 12. Мод уляция по ожением импульса

Пример 8. Формирование 16-разрядной ШИМ.

Обычно стандартные модули ШИМ имеют разрядность в 10 бит. Модуль ССР в режиме сравнения может использоваться для формирования ШИМ с 16-разрядной точностью. Для этого:

1. Настраиваем модуль ССР на установку вывода ССРх в «0» в режиме сравнения.

2. Разрешаем прерывание от Timer1.

3. Записываем значение периода в Timer 1 и его предделитель.

4. Устанавливаем длительность импульса в регистр сравнения CCPRxL и CCPRxH.

5. Устанавливаем выход ССРх в «1» при возникновении прерывания от переполнения

Timer1. Следует заметить, что маленькие значения длительности импульса не могут быть сформированы из-за конечного времени обработки прерывания от Timer1. Это не сказывается на периоде формируемого сигнала, так как время выполнения прерывания от периода к периоду будет одинаковым.

Таймер Timer 1 имеет четыре значения предделителя: 1:1, 1:2, 1:4 и 1:8. Возможная формируемая частота рассчитывается по формуле:

FPWM = FOSC/(65536 х 4 х предделитель)

Для микроконтроллера, работающего на частоте FOSC = 20 МГц, значения частот FPWM будут составлять 76,3 Гц, 38,1 Гц, 19,1 Гц и 9,5 Гц.

Пример 9. Последовательное измерение с помощью АЦП.

Триггер специального события в режиме сравнения (при совпадении значения Timer1 и регистра сравнения CCPRxL и CCPRxH) может формировать периодические прерывания и дополнительно автоматически запускать измерения АЦП. Покажем на примере, как организовать последовательный опрос АЦП в четко определенные моменты времени.

Пример. Микроконтроллер PIC16F684 работает от внутреннего генератора, сконфигурированного на работу с частотой 8 МГц. Нужно последовательно опрашивать каналы АЦП и измерять входное напряжение на выводах RA0, RA1 и RA2 через каждые 30 мс.

Таймер 1 переполняется через время TOSC х 65536 х 4 х предделитель. Для предделителя 1:1 таймер переполнится через 32,8 мс.

Значение регистра CCPR1 рассчитывается по формуле:

CCPR1 = время/

(TOSC х 4 х предделитель) = 30 мс/ (125 нс х 4 х 1) = 6000 = 0хЕА60. Тогда CCPR1L =

= 0x60, CCPR1H = 0xEA.

Модуль ЕССР должен быть сконфигурирован в режим триггера специального события. Этот режим формирует прерывание при совпадении значения Timer1 и регистра сравнения CCPRxL и CCPRxH. Для этого режима CCP1CONT = 'b00001011'. При возникновении прерывания таймер автоматически очистится и установит бит GO в регистре ADC0N0 для запуска преобразования АЦП. Когда произойдет прерывание от модуля ECCP, нужно выбрать следующий вход АЦП с помощью регистра ADC0N0.

Продолжение следует

ССРх — прерывание Вывод ССРх в «О»

Прерывание от Timerl Вывод ССРх в «1»

Рис. 13. Формирование 16-разрядной ШИМ

i Надоели баннеры? Вы всегда можете отключить рекламу.