ШИРОТНО-ИМПУЛЬСНЫЙ МОДУЛЯТОР МК 8ХC196КС/КD

Краткая характеристика

8XC196KC/KD содержит три модуля "Широтно-импульсный модулятор" (Pulse Width Modulator; PWM0-PWM2). На выходе каждого модуля формируется последовательность импульсов различной программируемой скважности и фиксированной частоты.

PWM модули имеют следующие основные компоненты (см. рис. 6.1):
- восьмибитовый счетчик (8 Bit Counter); - три компаратора (Comparator);
- три регистра управления (PWMx _ Control Register);
- три буферных регистра (Holding Register);
- три RS триггера.

Рис. 7.1. Блок-схема PWMx модулей

Второй бит в регистре управления IOC2 (см. Приложение) (SLOW_PWM) управляет периодом импульса на выходе PWMx, подключая или отключая делитель частоты на два. Подключение делителя частоты заставляет значение восьмибитового счетчика увеличиваться один раз каждые два временных состояния; его отключение - один раз каждое временное состояние (при тактовой частоте 8 МГц одно временное состояние составляет 250 нс).

Каждый регистр управления (PWM_Control Register) содержит 8-битовое значение, которое загружается в буферный регистр при переполнении 8-битового счетчика. Когда значение счетчика становится равным 0, уровень сигнала на выходе PWMx становится равным 1 (сигнал переполнения счетчика поступает на вход S RS-триггера). Компараторы сравнивают содержимое буферных регистров с текущим значением счетчика. Уровень сигнала на выходе PWMx остается равным 1, пока значение счетчика не равно значению в буферном регистре. При равенстве указанных выше значений уровень сигнала на выходе PWMх станет равным нулю. Когда произойдет очередное переполнение счетчика, уровень сигнала на выходе снова станет равным 1 (загрузка 00H в PWMx_CONTROL фиксирует выход PWM= 0).

На рис. 7.2 приведены примеры форм сигналов на выходе PWM.

Рис. 7.2. Формы сигналов на выходе PWM

Программирование скважности

Записывая значения в регистр PWMx_CONTROL и IOC2 (второй разряд), программист определяет, как долго уровень сигнала на выходе PWMx в течение периода импульса остается высоким, то есть, задавая длительность импульса при постоянном периоде, управляет скважностью. Значение, записанное в регистр PWMx_CONTROL, может составлять от 0 до 255 временных состояний (от 0 до 99.6% скважности).

Аббревиатура - PWM0_CONTROL

Размер - 1 байт

Находится по адресу 17H

Использовать для записи в окне HWindow 0

Использовать для чтения в окне HWindow 15
 

Аббревиатура - PWM1_CONTROL

Размер - 1 байт

Находится по адресу 16H

Использовать для записи/чтения в окне HWindow 1
 

Аббревиатура - PWM2_CONTROL

Размер - 1 байт

Находится по адресу 17H

Использовать для записи/чтения в окне HWindow 1

Установка бита SLOW_PWM (IOC2.2) подключает делитель частоты тактовых импульсов PWM, общая длительность выходного импульса в этом случае составит 512 временных состояний и значение PWMx_CONTROL умножится на 4. Очистка бита IOC2.2 отключает делитель частоты; общая длительность выходного импульса в этом случае составит 256 временных состояний и значение PWMx_CONTROL умножится на 2.

Используйте следующие формулы, чтобы вычислить период импульса на выходе PWMx и его длительность (PWMx=1) (табл. 7.1).

Обратите внимание, что PWMx_CONTROL - 8-битовое значение и Fosc - тактовая частота резонатора в MГц.

Таблица 7.1
Делитель частоты на два отключен (IOC2.2=0)Делитель частоты на два подключен (IOC2.2=1)
Период PWMx (в микросекундах)
512 / F1024 / F
PWMx =1 (в микросекундах)
PWMx_CONTROL x 2 / FoscPWMx_CONTROL x 4 / Fosc

Например, если Fosc равна 16 MГц и IOC2.2 = 0, тогда период импульса на выходе PWMx 512/16 = 32 микросекунды. Если значение, записанное в регистр PWM0_CONTROL равно 8AH (138 - десятичное число) и IOC2.2 = 0, то уровень сигнала на выходе PWM0 остается высоким в течение (138x2)/16 = 17.25 микросекунд (и низким - 32-17.25 = 14.75 микросекунд, скважность при этом составляет приблизитель-но 54% (17.25/32~0/54). Когда бит IOC2.2 установлен, при тех же значениях будут генерироваться импульсы с периодом 1024.16 = 64 микросекунды и длительностью (138x4)/16 = 34.5 микросекунд (уровень сигнала на выходе остается низким в течение 29.5 микросекунд), скважность та же (34.5/64~0.54).

Выбор PWM выходов

Каждый выход PWMx мультиплексируется с выводом порта. В таблице 7.2 приведены выводы параллельных портов, альтернативная функция использования которых - соответствующий выход широтно-импульсного модулятора. Также приводится управляющий регистр, установка одного из битов которого вместо функции порта выбирает альтернативную функцию использования порта - выход PWM. При выборе PWM1 или PWM2 функция вывода отключает квазидвунаправленную функцию порта 1.

Таблица 7.2
PWM ВыходАльтернативная функция порта "Выход PWM" допускается, когда
PWM0 P2.5IOC1.0 = 1 (PWM0_SEL)
PWM1 P1.3IOC3.2 = 1 (PWM1_SEL)
PWM2 P1.4IOC3.3 = 1 (PWM2_SEL)

Генерация аналоговых сигналов (цифро-аналоговый преобразователь)

Как PWM модули, так и модуль быстрого вывода (HSO) может генерировать последовательность прямоугольных импульсов, различных по скважности и длительности. Фильтрация этих импульсов будет создавать гладкий аналоговый сигнал.

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

В качестве фильтра используется или простая RC-цепь, или активный фильтр.

Рис. 7.3. Схема использования PWM выхода как ЦАП

На рис. 7.3 приведена типовая схема, используемая для малого выходного тока (меньше 100 мA). Обратите внимание на температурный дрейф и дрейф источника питания при выборе компонентов для внешней схемы цифро-аналогового преобразователя (ЦАП). С правильно подобранными компонентами, используя или PWM, или HSO выходы, может быть изготовлен высокоточный 8-битовый ЦАП.

<<< Содержание >>>