Программирование c нуля в AVRStudio 5 (ч.10)

Автор: Радик Просмотров: 5697

 

 

alt

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

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

alt

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

alt

а уменьшить мощность можно удлинением отрицательного участка периода.

Именно по этому принципу работает ШИМ.

alt

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

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

S=T/т=1/D; где

S-скважность, T-период, т-длительность импульса, D-коэфициент заполнения.

Скважность определяет соотношение между пиковой и средней мощностью импульсов напряжения или тока.

Сигнал со скважностью, равной двум — называется меандр.

В меандре есть положительный и нулевой полупериоды, которые равны по времени.

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

Существуют два режима ШИМ:

Fast PWM (быстрый ШИМ)

Phase Correct PWM (ШИМ с точной фазой)

В микроконтроллерах AVR, частота ШИМ определяется тактовой частотой процессора и разрядностью таймера/счетчика. Регистр сравнения OCR определяет скважность выходного сигнала.

В режиме Fast PWM период начинается с положительного значения сигнала, до тех пор пока значение TCNT не совпадет со значением регистра OCR, когда значение счетчика/таймера TCNT станет равным значению регистра сравнения OCR, происходит спад сигнала до нуля, и продолжается до начала нового периода.

Как правило, ШИМ в микроконтроллерах построен на 8-битном счетчике/таймере TCNT, который считает от 0 до 256, период которого равен T=256/Fcpu, (Fcpu –тактовая частота процессора). Например, при тактовой частоте процессора в 1 МГц, период работы счетчика составит 256 микросекунд, а частота 3906Гц. Повышение разрядности счетчика вполне возможно, но это приводит к снижению частоты ШИМ, что само по себе не желательно.

Частоту ШИМ можно определить, разделив тактовую частоту процессора на 256. Например при тактовой частоте процессора 8 МГц, частота ШИМ составит 31250Гц.

Недостатком этого режима считается смещение фазы сигналов при изменении скважности.

alt

В режиме Phase Correct PWM недостаток смещения фаз при изменении скважности устранен, за счет использования двух периодов, т.е. частота меньше в два раза в сравнении с режимом Fast PWM.

alt

В режиме Phase Correct PWM счетчик/таймер TCNT сначала считает от 0 до 256. При совпадении со значением регистра OCR, сигнал на выходе сбрасывается, затем счет в счетчике/таймере TCNT идет в обратном порядке от 256 до 0, а при совпадении значения TCNT со значением регистра OCR, сигнал на выходе устанавливается в единичное состояние.

Для того чтобы задать ШИМ в микроконтроллере нам нужно определить несколько параметров, из описания понятно, что нужно:

задать вид ШИМ и разрядность с помощью регистров WGM ,

прописать значение регистра OCR,

выставить режим работы выхода сигнала ШИМ с помощью регистров COM.

установить делители счетчика/таймера TCNT равным 1:1с помощью регистров CS

Назначения регистров WGM для tiny2313 мы уже рассматривали в предыдущих статьях в виде двух таблиц для TCNT0 и TCNT1.

Значения регистра OCR будем менять произвольно.

Подробнее рассмотрим назначение регистров COM.

Режим обычного таймера

alt

Режим Fast PWM для регистров COM0

alt

Режим Phase correct PWM для регистров COM0

alt

Режим Fast PWM для регистров COM1

alt

Режим Phase correct PWM для регистров COM1

alt

В этих таблицах показаны функции выходов OC0A, OC0B и OC1A, OC1B в зависимости от состояния регистров COM0 и COM1 (ATtiny2313 для Mega8 и 16 таблицы несколько отличаются)

Биты CS02:CS01:CS00 – для таймера/счетчика Т0, CS12:CS11:CS10 – для таймера/счетчика Т1. Из них нас интересует только CS00 или CS10.

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

Возьмем самую простую задачу – создать ШИМ сигнал в режиме Fast-PWM, на основе восьмибитного счетчика/таймера. Тогда нам потребуется прописать биты регистра управления таймера TCCR0A: COM0A1=1, WGM1=1, WGM0=1 и бит предделителя в регистре TCCR0B: CS00=1

 

 


Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2017 © ChipMK.ru

ChipMk.ru Яндекс.Метрика
PRCY.ru