Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учеб Пособ_Гончаровский.doc
Скачиваний:
1316
Добавлен:
29.03.2015
Размер:
3.65 Mб
Скачать

1.7.2. Таймер-счетчик

Почти каждый μC имеет в своем составе несколько (иногда очень много) таймеров-счетчиков (для краткости будем говорить таймер, Т/С), занимающих по полезности для встроенных систем второе место после GPIO. Название таймера отражает тот факт, что это устройство может быть сконфигурировано для подсчета регулярных тактовых импульсов (работает как таймер) или нерегулярных импульсов, выражающих некоторые события (работает как счетчик событий).

Обычно таймер содержит предварительный делитель частоты (prescaler), N-разрядный регистр таймера-счетчика (N = 8, 16 или 32), один или более N-разрядный регистр захвата (capture) и один или более N-разрядный регистр сравнения (compare). Так же могут быть регистры управления и статуса для управления и наблюдения за таймером-счетчиком.

Предварительный делитель частоты получает базовую тактовую частоту (это может быть тактовая частота CPU или более высокая или более низкая частота) и делит ее на некоторую величину перед подачей в таймер в соответствии с конфигурацией регистра предварительного делителя частоты. Величины предварительного делителя частоты могут иметь несколько фиксированных значений или значений в диапазоне 1 - 2^P, где P – разрядность предварительного делителя частоты.

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

Регистр таймера – это обычно N-разрядный счетчик, работающий на увеличение с возможностями записи или чтения текущего значения, остановкой и сбросом.

Регистр захвата – это регистр, который может автоматически загружаться текущим значением таймера при наступлении некоторого события (обычно изменение значения на некотором входе GPIO). Регистр захвата таким образом используется для получения «моментального снимка» таймера в момент появления события. Событие захвата может генерировать же прерывание. Регистр захвата может также использоваться для измерения интервала между двумя импульсами, определения времени импульса или паузы и определения времени между двумя различными входными сигналами.

Регистры сравнения (иногда называют совпадения) сохраняют величину, с которой постоянно автоматически сравнивается текущее значение таймера. Регистр сравнения используется для фиксации события, когда величина в таймере совпадает с величиной регистра сравнения. Если таймер-счетчик сконфигурирован как таймер, использование регистра сравнения дает возможность генерировать события (выход GPIO изменяется, и/или возникает прерывание, и/или сбрасывается таймер) в известное и точное время. Если таймер-счетчик сконфигурирован как счетчик, регистр сравнения генерирует события при достижении счетчика заданной величины.

1.8.3. Импульсно-кодовая модуляция.

Современные μC имеет в своем составе аппаратные средства, позволяющие формировать сигналы импульсно-кодовой модуляции (PWM - Pulse Width Modulation). Такие сигналы широко используются для управления различными устройствами, например, изменение скорости вращения двигателей постоянного тока, поворот на требуемый угол шагового двигателя, изменение яркости свечения ламп или LED (диммеры).

PWM – это формирование последовательности импульсов прямоугольной формы с постоянным периодом и изменяемой величиной длительности импульсов. Такой сигнал характеризуется коэффициентом заполнения (duty cycle) равным отношению длительности импульса к периоду сигнала в процентах. С изменением коэффициента заполнения меняется среднее значение сигнала PWM и это можно рассматривать как вариант цифро-аналогового преобразования, где цифра это дискретные значения длительности импульса, а аналог – среднее значение напряжения.

Часто реализация функции формирования сигнала PWM ложится на рассмотренные выше таймеры-счетчики μC. Пусть имеется два числа, называемые «нижнее» (BOTTOM) и большее по величине – «верхнее» (TOP). Пусть таймер стартует со значения BOTTOM, затем под действием тактовой частоты он достигает значения TOP и все начинается сначала, как на рис. 33. Получаем сигнал пилообразной формы.

Запишем в регистры сравнения таймера значение COMPARE. Если текущее значение «пилы» меньше чем COMPARE значение выхода GPIO остается низким, иначе высоким, как на рис.34. Сформировался сигнал с коэффициентом заполнения 50%.

Рис. 33. Сигнал пилообразной формы таймера-счетчика