
Шпаргалки по МПС / MPS_shprots / Вопрос 22
.pdf8-21
Выходы HSO могут дать 6 дополнительных выходных контактов, если не используются функции HSO. Чтобы использовать выходы HSO как стандартные выходы, необходимо разрешить их использование как выходов, и затем установить или очистить их записью в IOS0 регистр через HWindow 15.
8.3.3.Использование Модуля HSO как Широтно-Импульсного Модулятора
(PWM)
И HSO модуль, и PWM модуль могут генерировать последовательность прямоугольных импульсов, в которой изменяются период и скважность импульсов. Используя соответствующие внешние компоненты, можно реализовать высокоточный восьмиразрядный цифро-аналоговый преобразователь с использованием либо HSO, либо PWM выходов (смотрите главу 10.).
HSO модуль может генерировать либо одиночную PWM последовательность, либо повторяющуюся PWM последовательность. Одиночная последовательность требует программирования периода и времени сброса (clear time) сигнала и двух HSO команд: установить активное состояние вывода и сбросить его. Для управления может быть использован Таймер 1 или Таймер 2.
Генерация повторяющейся последовательности производится аналогичным способом, для управления используется Таймер 2. Для генерации повторяющейся последовательности требуется запрограммировать период для Таймера 2, время установки (set time)
(PWMx_ST) и время сброса (PWMx_CT) для каждого выходного контакта и несколько HSO команд: одну для сброса Таймера 2, несколько для установки выводов и несколько для их сброса.
В приведенном ниже примере показан способ генерации нескольких PWM сигналов (ШИМ последовательностей) с использованием HSO.0, HSO.1 и HSO.2 как PWM выходов и Таймера 2 как базового. Рисунок 8.10 показывает три результирующие PWM последовательности.
SET_0: |
|
|
LDB |
HSO_COMMAND, #11100000B |
; set HSO.0 when |
LD |
HSO_TIME, #PWM0_ST |
; timer2 = pwm0_st |
SKIP |
R0 |
; wait 4 state times |
SKIP |
R0 |
; wait 4 state times |
SET_1: |
|
|
LDB |
HSO_COMMAND, #11100001B |
; set HSO.1 when |
LD |
HSO_TIME, #PWM1_ST |
; timer2 = pwm1_st |
SKIP |
R0 |
; wait 4 state times |
SKIP |
R0 |
; wait 4 state times |
SET_2: |
|
|
LDB |
HSO_COMMAND, #11100010B |
; set HSO.2 when |
LD |
HSO_TIME, #PWM2_ST |
; timer2 = pwm2_st |
SKIP |
ZERO_REG |
; wait 4 state times |
SKIP |
ZERO_REG |
; wait 4 state times |
CLEAR_0: |
|
|
LDB |
HSO_COMMAND, #11000000B |
; clear HSO.0 when |
LD |
HSO_TIME, #PWM0_ST |
; timer2 = pwm0_ct |
SKIP |
ZERO_REG |
; wait 4 state times |
SKIP |
ZERO_REG |
; wait 4 state times |
CLEAR_1: |
|
|
LDB |
HSO_COMMAND, #11000001B |
; clear HSO.1 when |
LD |
HSO_TIME, #PWM1_ST |
; timer2 = pwm1_ct |
SKIP |
ZERO_REG |
; wait 4 state times |
SKIP |
ZERO_REG |
; wait 4 state times |

|
8-22 |
|
CLEAR_2: |
|
|
LDB |
HSO_COMMAND, #11000010B |
; clear HSO.2 when |
LD |
HSO_TIME, #PWM2_ST |
; timer2 = pwm2_ct |
SKIP |
ZERO_REG |
; wait 4 state times |
SKIP |
ZERO_REG |
; wait 4 state times |
RESET: |
|
|
LDB |
HSO_COMMAND, #11001110B |
; reset Timer 2 when |
LD |
HSO_TIME, #PERIOD |
; timer2 = period |
Смотрите описание применения AP-466 “Использование 80C196KB” для получения дополнительной информации и примеров программ, которые показывают, как использовать HSO для генерации одиночной и повторяющейся PWM последовательностей.
8.3.4.Синхронизация Выхода HSO.
HSO выводы синхронизируются базовым таймером. Все внешние выводы HSO изменяются при достижении таймером заданного значения сразу после того, как таймер увеличился на единицу. При внутренней синхронизации таймер изменяет значение каждый восьмой такт во время фазы 1. При внешней HSO вывод будет изменяться сразу после спада импульса CLKOUT и будет стабилен при его нарастающем фронте. Информация от HSO может быть зафиксирована при нарастающем фронте CLKOUT. Внутреннее HSO событие происходит, когда инкрементируется базовый таймер.
HSO.0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
PWM0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
PWM1 |
|
HSO.1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
HSO.2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
PWM2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
TIMER2 |
EXT REF |
|
SetTime |
|
Clear Time |
|
Period |
Рисунок 8.10. Пример PWM последовательностей.