Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Уч. пос. МПТ (2.04.12).pdf
Скачиваний:
403
Добавлен:
22.03.2015
Размер:
10.95 Mб
Скачать

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

При измерении длительности импульса можно подключить сигнал сразу к двум входам захвата и настроить реакцию одного из них (например, CAP0.0) на нарастающий фронт, а другого — на спадающий (например, CAP0.1). Прерывание разрешить только по спадающему фронту. Тогда нет необходимости сохранять в памяти значения регистров захвата. Можно определить длительность через разность текущих значений CAP0.1 и CAP0.0.

1.13.7 Подсчет числа импульсов в единицу времени

Для реализации частотомера потребуется два таймера-счетчика. Один используется для формирования интервала счета (например, 1 с), другой служит счетчиком внешних импульсов. Для определенности будем считать, что TC0 — таймер, а TC1 — счетчик.

Тогда необходимо использовать один из выходов MAT0 (таймерасчетчика 0), сигнализирующий об окончании интервала счета, в качестве сигнала захвата CAP1 (таймера-счетчика 1). Потребуется внешнее электрическое соединение соответствующих портовых линий MAT0 и CAP1.

Порядок настройки изложен ниже.

1.Перевести одну портовую линию в режим MAT0.x, и две в режим

CAP1.x и CAP2.x.

2.Через регистр T0MCR включить сброс таймера по совпадению.

3.Через регистр T0EMR включить инверсию выбранного выхода

MAT0.x.

4.Задать длительность формируемого интервала счета установкой порогового регистра T0MRx. Опираться на формулу (1.13.3).

5.Запустить таймер через T0TCR.

6.Задать режим счетчика с инкрементом по одному из фронтов, выбрать счетный вход для TC1 через регистр T1CTCR.

7.В регистре T1CCR включить захват TC1 по обоим фронтам сигнала на входе CAP1.x, соединенным с сигналом совпадения MAT0.x.

8.Разрешить счет через регистр T1TCR.

9.Разрешить прерывание от таймера 1 с помощью регистров

VICVectAddr0–15, VICVectCntl0–15 и VICIntEnable.

1.14 Широтно-импульсный модулятор

Широтно-импульсный модулятор (ШИМ) предназначен для формирования периодических последовательностей прямоугольных импульсов. Период и длительность импульсов регулируются с шагом в один машинный цикл (16,67 нс). Возможно формирование до шести последовательностей импульсов одной частоты и разной скважности. Имеется режим, в котором задается начальная фаза импульсов.

55

1.14.1 Основы функционирования

Упрощенная функциональная схема ШИМ показана на рисунке 1.14.1. Основу модуля ШИМ составляет счетчик PWMTC (на схеме не показан), семь пороговых регистров PWMMR0–PWMMR6 (также не показаны), набор схем совпадения и D-триггеров, связанных с выходными портовыми линиями МК PWM0–PWM6. Счетчик PWMTC инкрементируется в каждом такте .

PWMTC PWMMR0

PWMMR1

PWMMR2

PWMMR3

PWMMR4

PWMMR5

PWMMR6

A B

A B

A B

A B

A B

A B

A B

==

 

 

 

Y

 

==

 

 

 

Y

 

 

 

D1

 

 

D0

 

MWMSEL2

A

==

 

 

 

Y

 

 

 

D1

 

 

D0

 

MWMSEL3

A

==

 

 

 

Y

 

 

 

D1

 

 

D0

 

MWMSEL4

A

==

 

 

 

Y

 

 

 

D1

 

 

D0

 

MWMSEL5

A

==

Y

 

 

 

 

 

D1

 

 

D0

 

MWMSEL6

A

==Y

 

S

T

Q

PWM1

 

 

 

 

 

R

 

 

 

MX

 

 

 

 

Y

S

T

Q

PWM2

 

 

 

 

 

R

 

 

 

MX

 

 

 

 

Y

S

T

Q

PWM3

 

 

 

 

 

R

 

 

 

MX

 

 

 

 

Y

S

T

Q

PWM4

 

 

 

 

 

R

 

 

 

MX

 

 

 

 

Y

S

T

Q

PWM5

 

 

 

 

 

R

 

 

 

MX

 

 

 

 

Y

S

T

Q

PWM6

 

 

 

 

 

R

 

 

 

Рисунок 1.14.1 – Упрощенная функциональная схема модуля ШИМ

С помощью схем совпадения счетчик PWMTC сравнивается с пороговыми регистрами PWMMR0–6. При совпадении PWMTC и PWMMR0 формируется сигнал сброса счетчика в ноль (верхний график на рисунке 1.14.2).

Таким образом, пороговый регистр PWMMR0 используется для задания периода импульсов. При частота выходных импульсов ШИМ определяется выражением

. (1.14.1)

Так как PWMMR0 — 32-разрядный регистр, диапазон изменения частоты весьма широк: от десятков мегагерц до сотых долей герц.

56

Рисунок 1.14.2 – Временные диаграммы работы ШИМ. Управление начальной фазой отключено (PWMSEL2–6 = 0)

Остальные пороговые регистры служат для задания длительности импульсов. D-триггеры, соединенные с выходными портовыми линиями МК PWM0–PWM6, сбрасываются при совпадении счетчика PWMTC с соответствующим пороговым регистром PWMMR1–PWMMR6. Установка триггеров может происходить двумя способами в зависимости от состояния мультиплексоров, управляемых сигналами PWMSEL2–6.

Если , установка осуществляется в начале каждого периода ШИМ. При этом возможность регулировки начальной фазы отсутствует. Получим шесть синхронных выходов с независимой регулировкой коэффициента заполнения (рисунок 1.14.2). Коэффициент заполнения определяется следующим выражением:

. (1.14.2)

При установка триггеров PWM2, 4, 6 происходит при сбросе триггеров PWM1, 3, 5. В этом случае пороговые регистры PWMMR1, 3, 5 используются для задания начальной фазы, а PWMMR2, 4, 6 для задания длительности импульсов. Данный режим задействует больше аппаратных ресурсов (по два пороговых регистра на каждый выход), что приводит к сокращению числа выходных сигналов. Получим три синхронных выхода PWM2, 4, 6 с независимой регулировкой начальной фазы (угла включения) и коэффициента заполнения (рисунок 1.14.3). В этом случае коэффициент заполнения (для выхода PWM2)

. (1.14.3)

Для остальных выходов должны использоваться другие пары «четного» и «нечетного» пороговых регистров.

57

Рисунок 1.14.3 – Временные диаграммы работы ШИМ в режиме управления начальной фазой (PWMSEL2–6 = 1)

Начальная фаза

. (1.14.4)

Длительность импульса

. (1.14.5)

1.14.2 Дополнительные возможности

Имеется возможность деления входной тактовой частоты счетчика PWMTC предварительным счетчиком делителем PWMPC. Причем коэффициент деления частоты задается в регистре PWMPR. Инкремент счетчика PWMTC осуществляется каждый PWMPR+1 такт . Таким образом, действительная частота тактовых импульсов на входе счетчика PWMTC рассчитывается по формуле

. (1.14.6)

Следовательно, частота выходных импульсов при

. (1.14.7)

Выше сказано, что сброс счетчика PWMTC осуществляется при совпадении его содержимого с пороговым регистром PWMMR0. На самом деле есть возможность отслеживать его совпадение с любым из пороговых регистров и выполнять одно из трех действий: сброс счетчика, остановка счета, запрос прерывания.

Рассмотрим следующую ситуацию. Пусть счетчик ;

. Через 10 тактов их значения совпадут, что приведет к по-

58