Микроконтроллер C167 имеет дополнительно 4 независимых выхода ШИМ (PWM) с разрешением 50 нсек. Диапазон частот выходных сигналов PWM, выравненных по фронту, может быть от 4.8 Гц до 10 МГц, для PWM сигналов, выравненных по центру — от 2.4 Гц до 5 МГц.
Блок генерации PWM сигналов с повышенным разрешением состоит из 4-х независимых каналов. Каждый канал содержит 16-разрядный реверсивный счётчик PTx, 16-разрядный регистр периода с теневым «регистром-защёлкой», 16-разрядный регистр ШИМ с теневым «регистром-защёлкой», 2 модулятора и необходимую управляющую логику.
Режимы работы
Модуль ШИМ имеет четыре режима работы:
- Режим генерации стандартного ШИМ-сигнала (синхронизация ШИМ по фронту), для 4-х каналов
- Режим генерации симметричного ШИМ-сигнала (синхронизация ШИМ по центру), для 4-х каналов
- Режим генерации пакетов импульсов (Burst mode), объединяет каналы 0 и 1
- Режим одновибратора (Single Shot Mode), только для каналов 2 и 3
Режим генерации стандартного ШИМ-сигнала (синхронизация ШИМ по фронту)
В этом режиме таймер PTx соответствующего канала PWM наращивает своё значение до тех пор, пока не достигнет значения теневого регистра периода. Во время прихода следующего импульса таймер сбрасывается в 0000h и далее продолжает считать, наращивая своё значение по приходу входных импульсов. Выходной сигнал ШИМ переключается в состояние лог.1, когда значение таймера больше или равно значения теневого регистра ширины импульса.
Сигнал переключается обратно в состояние лог.0, когда соответствующий таймер сбрасывается в состояние 0000h, т.е. его значение меньше значения теневого регистра ширины импульса.
Период результирующего сигнала ШИМ определяется по формуле:T1pwm = [PPx] + 1
Коэффициент заполнения выходного ШИМ-сигнала управляется значением соответствующего теневого регистра ширины импульса и может изменяться в пределах от 0% до 100%.
Режим генерации симметричного ШИМ-сигнала (синхронизация ШИМ по центру)
В режиме генерации симметричного ШИМ-сигнала таймер PTx соответствующего канала ШИМ наращивает своё значение до тех пор, пока не достигнет значения соответствующего теневого регистра периода. Во время прихода следующего импульса направление счета изменяется, и таймер начинает считать вниз, пока не достигнет значения 0000h. Следующий импульс снова изменяет направление счета, повторяя цикл генерации симметричного ШИМ-сигнала.
Значение периода в этом режиме вычисляется по формуле:T2pwm =2 * ([PPx] + 1)
Режим генерации пакетов импульсов (Burst mode)
В этом режиме объединяются сигналы каналов 0 и 1 (логическое И) и подаются на вывод порта 0-го канала.
Каждый из двух каналов может работать как в режиме 0, так и в режиме 1.
Замечание: Выходной cигнал поступает на выход порта синхронно с сигналом внутреннего тактового генератора, что гарантирует отсутствие ложных импульсов.
Режим одновибратора (Single shot mode)
В режиме одновибратора таймер PTx соответствующего ШИМ-канала запускается программно и наращивает своё значение до тех пор, пока его значение не достигнет значения теневого регистра периода. С приходом следующего импульса таймер обнуляется в 0000h и останавливается.
Сигнал выхода ШИМ переключается в состояние лог.1, когда значение таймера больше или равно значению теневого регистра ширины импульса. Сигнал переключается обратно в состояние лог.0, когда таймер обнуляется.
Таким образом, запуск таймера PTx в режиме одновибратора позволяет генерировать один импульс на соответствующем выводе порта, при условии что значение регистра ширины импульса находится между 0000H и значением периода.
Для генерации следующего импульса таймер запускается программно, установкой бита PTRx.
После запуска таймера (т.е. PTRx=»1″) выходной сигнал можно изменять программно. При записи в таймер PTx изменяется фронт и/или спад выходного сигнала, в зависимости от того, начался импульс (т.е. выход в лог.1) или нет (т.е. выход все еще в лог.0).
При правильной установке значения периода (PPx), начального значения таймера (PTx) и значения регистра ширины импульса (PWx) ширина выходного импульса (tw) и задержка импульса (td) могут изменяться в широком диапазоне.