Формирование ШИМ с повышенным разрешением

Микроконтроллер C167 имеет дополнительно 4 независимых выхода ШИМ (PWM) с разрешением 50 нсек. Диапазон частот выходных сигналов PWM, выравненных по фронту, может быть от 4.8 Гц до 10 МГц, для PWM сигналов, выравненных по центру — от 2.4 Гц до 5 МГц.

Блок генерации PWM сигналов с повышенным разрешением состоит из 4-х независимых каналов. Каждый канал содержит 16-разрядный реверсивный счётчик PTx, 16-разрядный регистр периода с теневым «регистром-защёлкой», 16-разрядный регистр ШИМ с теневым «регистром-защёлкой», 2 модулятора и необходимую управляющую логику.

Это изображение имеет пустой атрибут alt; его имя файла - 15-02-w13-13.gif

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

Модуль ШИМ имеет четыре режима работы:

  • Режим генерации стандартного ШИМ-сигнала (синхронизация ШИМ по фронту), для 4-х каналов
  • Режим генерации симметричного ШИМ-сигнала (синхронизация ШИМ по центру), для 4-х каналов
  • Режим генерации пакетов импульсов (Burst mode), объединяет каналы 0 и 1
  • Режим одновибратора (Single Shot Mode), только для каналов 2 и 3

Режим генерации стандартного ШИМ-сигнала (синхронизация ШИМ по фронту)

В этом режиме таймер PTx соответствующего канала PWM наращивает своё значение до тех пор, пока не достигнет значения теневого регистра периода. Во время прихода следующего импульса таймер сбрасывается в 0000h и далее продолжает считать, наращивая своё значение по приходу входных импульсов. Выходной сигнал ШИМ переключается в состояние лог.1, когда значение таймера больше или равно значения теневого регистра ширины импульса.

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

Период результирующего сигнала ШИМ определяется по формуле:T1pwm = [PPx] + 1

Коэффициент заполнения выходного ШИМ-сигнала управляется значением соответствующего теневого регистра ширины импульса и может изменяться в пределах от 0% до 100%.

Это изображение имеет пустой атрибут alt; его имя файла - 15-03-w13-14.gif

Режим генерации симметричного ШИМ-сигнала (синхронизация ШИМ по центру)

В режиме генерации симметричного ШИМ-сигнала таймер PTx соответствующего канала ШИМ наращивает своё значение до тех пор, пока не достигнет значения соответствующего теневого регистра периода. Во время прихода следующего импульса направление счета изменяется, и таймер начинает считать вниз, пока не достигнет значения 0000h. Следующий импульс снова изменяет направление счета, повторяя цикл генерации симметричного ШИМ-сигнала.

Значение периода в этом режиме вычисляется по формуле:T2pwm =2 * ([PPx] + 1)

Это изображение имеет пустой атрибут alt; его имя файла - 15-04-w13-15.gif

Режим генерации пакетов импульсов (Burst mode)

В этом режиме объединяются сигналы каналов 0 и 1 (логическое И) и подаются на вывод порта 0-го канала.

Каждый из двух каналов может работать как в режиме 0, так и в режиме 1.

Замечание: Выходной cигнал поступает на выход порта синхронно с сигналом внутреннего тактового генератора, что гарантирует отсутствие ложных импульсов.

Это изображение имеет пустой атрибут alt; его имя файла - 15-5-w13-16.gif

Режим одновибратора (Single shot mode)

В режиме одновибратора таймер PTx соответствующего ШИМ-канала запускается программно и наращивает своё значение до тех пор, пока его значение не достигнет значения теневого регистра периода. С приходом следующего импульса таймер обнуляется в 0000h и останавливается.

Сигнал выхода ШИМ переключается в состояние лог.1, когда значение таймера больше или равно значению теневого регистра ширины импульса. Сигнал переключается обратно в состояние лог.0, когда таймер обнуляется.

Это изображение имеет пустой атрибут alt; его имя файла - 15-6-w13-17.gif

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

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

После запуска таймера (т.е. PTRx=»1″) выходной сигнал можно изменять программно. При записи в таймер PTx изменяется фронт и/или спад выходного сигнала, в зависимости от того, начался импульс (т.е. выход в лог.1) или нет (т.е. выход все еще в лог.0).

При правильной установке значения периода (PPx), начального значения таймера (PTx) и значения регистра ширины импульса (PWx) ширина выходного импульса (tw) и задержка импульса (td) могут изменяться в широком диапазоне.