Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - Стивен Барретт
Шрифт:
Интервал:
Закладка:
Рис. 4.103. Формат регистра конфигурации PWPOL
Каждому каналу поставлен в соответствие бит полярности сигнала PPOLx и бит выбора источника тактирования канала PCLKx (x — номер канала). Если бит PPOLx=1, то активный уровень ШИМ-сигнала — высокий логический (рис. 4.98). При PPOLx = 0 на выходе канала формируется ШИМ-сигнал с низким логическим уровнем на интервале γT (рис. 4.98).
Если бит PCLKx равен 0, то для соответствующего канала в качестве источника тактирования назначается импульсная последовательность CLOСK_A (каналы 0 и 1) или CLOСK_B (каналы 2 и 3). При PCLKx = 0 соответствующий канал тактируется от дополнительного делителя частоты, который конфигурируется битами регистров PWSCNT0/PWSCNT1 и PWSCAL0/PWSCAL1.
Регистр разрешения работы каналов PWENОтдельные биты регистра конфигурации PWEN используются для активизации каналов модуля PWM. Формат регистра PWEN представлен на рис. 4.104. Если бит PWENx установлен в 1, то канал с номером «x» генерирует импульсную последовательность на соответствующем выводе порта PORT P. При PWENx = 0 канал находится в неактивном режиме, соответствующая линия порта PORT P может использоваться как линия ввода/вывода общего назначения.
Рис. 4.104. Формат регистра разрешения работы каналов PWEN
Регистр дополнительного делителя PWPRESЭтот регистр используется только в специальных режимах работы МК. Его формат представлен на рис. 4.105. Более подробно мы не будем его рассматривать.
Рис. 4.105. Формат регистра дополнительного делителя PWPRES
Прежде, чем приступить к рассмотрению двух следующих регистров, возвратимся к рис. 4.100 и вспомним, как организована система тактирования отдельных каналов модуля PWM. Источником тактирования каналов является импульсная последовательность E_CLOСK. Два программируемых делителя образуют из E_CLOСK сигналы тактирования CLOСK_A для каналов 0 и 1 и CLOСK_B для каналов 2 и 3. Причем каждый из каналов может тактироваться от указанного сигнала или напрямую, или через дополнительный делитель. Регистры PWSCNT0/PWSCNT1 и PWSCAL0/PWSCAL1 устанавливают режимы работы этих двух дополнительных делителей.
Регистры делителей PWSCNT0/PWSCNT1 и PWSCAL0/PWSCAL0Делитель 0 обслуживает каналы 0 и 1 (рис. 4.100), он формирует свой выходной сигнал из импульсной последовательности CLOСK_A. Делитель 1 обслуживает каналы 2 и 3 (рис. 4.100) и формирует выходной сигнал из последовательности CLOСK_B. Коэффициент деления каждого из этих делителей определяет код в регистрах PWSCAL0 и PWSCAL1 соответственно. Коэффициент деления Kx (x — номер делителя) вычисляется по формуле:
Kx = (PWSCALx + 1)/2,
где PWSCALx — десятичный эквивалент кода в регистре PWSCALx.
Код из регистров PWSCAL0 и PWSCAL1 автоматически загружается в вычитающие счетчики PWSCNT0 и PWSCNT1, когда последние обнуляются. Таким образом, счетчики выполняют функцию делителей частоты с плавно изменяющимся коэффициентом деления. Регистры счетчиков PWSCNT0 и PWSCNT1 доступны только для чтения. Форматы регистров PWSCAL0/PWSCAL1 и PWSCNT0/PWSCNT1 приведены на рис. 4.106 и 4.107.
Рис. 4.106. Формат регистров делителей PWSCALx
Рис. 4.107. Формат регистров вычитающих счетчиков PWSCNTx
Регистры счетчика каналов PWCNTxПри рассмотрении принципа действия отдельного канала генератора ШИМ-сигнала мы выяснили, что в формировании сигнала участвует непрерывно считающий 8-разрядный двоичный счетчик, текущий код которого сравнивается с кодом коэффициента заполнения и кодом периода. В регистрах PWCNTx (x — номер канала 0…3) отображается текущий код счетчика каждого канала. Формат регистров PWCNTx представлен на рис. 4.108. Регистры PWCNT0… PWCNT3 доступны только для чтения, попытка записи в регистр счетчика текущего кода вызывает сброс счетчика.
Рис. 4.108. Формат регистров счетчика каналов PWCNTx
Регистры периода каналов PWPERxЧисло регистров периода PWPERx равно числу каналов ШИМ в модуле PWM. Все регистры PWPER0…PWPER3 — 8-разрядные. Формат регистров PWPER0…PWPER3 приведен на рис. 4.109. Период следования ШИМ-сигнала каждого канала определяется кодом, который записан в соответствующем регистре периода PWPERx:
Рис. 4.109. Формат регистров периода каналов PWPERx
• для фронтовой ШИМ период сигнала равен
TPWM = (PWPERx + 1)/fx
• для центрированной ШИМ период сигнала равен
TPWM = 2 × (PWPERx + 1)/fx
где PWPERx — десятичный эквивалент кода в регистре периода PWPERx, fx — частота тактирования счетчика канала с номером «x».
Регистры коэффициента заполнения каналов PWDTYxФормат регистров коэффициента заполнения PWDTYxРис. 4.110.
Число регистров коэффициента заполнения PWDTYx также равно числу каналов ШИМ в модуле PWM. Все регистры PWDTY0…PWDTY3 — 8-разрядные. Формат регистров PWDTY0…PWDTY3 представлен на рис. 4.110. Длительность импульса в каждого канале определяется кодом, который записан в соответствующем регистре коэффициента заполнения PWDTYx:
• для фронтовой ШИМ длительность импульса равна
TIMP = (PWDTYx + 1) / [(PWPERx + 1) × fx]
• для центрированной ШИМ длительность импульса равна
TIMP = 2 × (PWDTYx + 1) / [(PWPERx + 1) fx]
Регистры коэффициента заполнения каналов PWDTYxЧисло регистров коэффициента заполнения PWDTYx также равно числу каналов ШИМ в модуле PWM. Все регистры PWDTY0…PWDTY3 — 8-разрядные. Формат регистров PWDTY0…PWDTY3 представлен на рис. 4.110. Длительность импульса в каждого канале определяется кодом, который записан в соответствующем регистре коэффициента заполнения PWDTYx:
• для фронтовой ШИМ длительность импульса равна
TIMP = (PWDTYx + 1) / [(PWPERx + 1) × fx]
• для центрированной ШИМ длительность импульса равна
TIMP = 2 × (PWDTYx + 1) / [(PWPERx + 1) × fx]
Коэффициент заполнения в обоих режимах равен
γ = [(PWDTYx + 1)/(PWPERx + 1)] × 100%,
где PWDTYx — десятичный эквивалент кода в регистре коэффициента заполнения PWDTYx, PWPERx — десятичный эквивалент кода в регистре периода PWPERx, fx — частота тактирования счетчика канала с номером «x».
Регистр управления PWCTLФормат регистра управления модулем PWMCTL представлен на рис. 4.111. В этом разделе мы рассмотрим только бит CENTR этого регистра. Этот бит определяет форму выходных сигналов всех каналов модуля PWM. Если бит CENTR = 1, то в каналах реализуется центрированная ШИМ, при CENTR = 0 выходные сигналы генерируются по способу фронтовой ШИМ.
Рис. 4.111. Формат регистра управления PWCTL
Регистр специальных режимов PWTSTЭтот регистр используется только в специальных режимах работы МК. Его формат представлен на рис. 4.112. Более подробно мы не будем его рассматривать.
Рис. 4.112. Формат регистра PWTST
Регистры работы с портом PОбслуживание модуля PWM — альтернативная функция линий порта PORT P. Линии PP0…PP3 порта P могут использоваться не только в качестве выходов модуля PWM, но и как линии порта ввода/вывода общего назначения. Если работа соответствующих каналов модуля PWM разрешена, то линии порта P автоматически конфигурируются для работы в качестве выходов, на которых формируются ШИМ-сигналы. Если каналы модуля PWM не активизированы, то линии PP0…PP3 работают как обычные линии ввода/вывода. Направление передачи сигнала линиями PP0…PP7 определяется битами регистра направления передачи DDRP. Формат регистра DDRP приведен на рис. 4.113. Запись 1 в соответствующий разряд регистра DDRP конфигурирует линию на вывод. Порт P обслуживается регистром данных PORTP (рис. 4.113).
Рис. 4.113. Формат регистров обслуживания порта PORTP
4.24.5. Примеры программирования модуля PWM
Изучая модуль PWM, читатель должен был заметить, что модуль требует инициализации достаточно большого числа регистров для определения параметров работы каналов ШИМ. Однако после активизации каналов их программное обслуживание состоит лишь в смене значений коэффициента заполнения и реже, периода следования выходной импульсной последовательности.
Рассмотрим последовательность действий, которую необходимо проделать для инициализации модуля PWM:
• Для конкретного приложения следует определить разрешающую способность генерируемого ШИМ-сигнала, т.е. число дискретных отсчетов частоты таткирования канала в периоде и длительности импульса выходного сигнала канала. На основании полученных данных следует определить, в каком режиме, 8-разрядном или 16-разрядном, Вы будете использовать каналы модуля PWM;
• Для конкретного приложения следует определить требуемую частоту генерируемого ШИМ-сигнала. На основе полученных данных определить структуру подсистемы тактирования каналов модуля PWM;