Лекция № 11 (Лекции МП), страница 2
Описание файла
Файл "Лекция № 11" внутри архива находится в папке "Лекции МП". Документ из архива "Лекции МП", который расположен в категории "". Всё это находится в предмете "микропроцессоры" из 7 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "микропроцессоры" в общих файлах.
Онлайн просмотр документа "Лекция № 11"
Текст 2 страницы из документа "Лекция № 11"
01 = 1:2
00 = 1:1
T1OSCEN - Включение тактового генератора TMR1.
1 = генератор включен.
0 = генератор выключен (инвертирующий элемент и резистивная обратная
связь выключены для уменьшения тока потребления).
-T1SYNC - Синхронизация внешнего тактового сигнала.
TMR1CS = 1:
1 = не синхронизировать внешний тактовый.
0 = синхронизировать внешний тактовый.
TMR1CS = 0:
Значение бита игнорируется.
TMR1CS - Выбор источника тактового сигнала.
1 = внешний источник с вывода T1OSO/T1CKI (активным является передний
фронт сигнала).
0 = внутренний источник Fosc/4.
TMR1ON - Включение модуля TMR1.
1 = включен.
0 = выключен.
Таймер/счетчик TMR2:
TMR2 – 8-разрядный таймер с программируемыми предделителем и выходным делителем, 8-разрядным регистром периода PR2. При максимальном значении коэффициентов деления тактового сигнала TMR2 соответствует 16 - разрядному таймеру.
TMR2 может быть опорным таймером для CCP модуля в ШИМ режиме. Регистры TMR2 доступны для записи/чтения и очищаются при любом виде сброса.
Входной тактовый сигнал поступает через предделитель с программируемым коэффициентом деления (1:1, 1:4, 1:16), определяемый битами T2CKPS1: T2CKPS0 (T2CON<1:0>).
TMR2 считает, инкрементируя от 00h до значения в регистре PR2, затем сбрасывается в 00h на следующем машинном цикле. Регистр PR2 доступен для записи и чтения. После сброса значение регистра PR2 равно FFh.
Сигнал переполнения TMR2 проходит через выходной 4-разрядный делитель с программируемым коэффициентом деления (от 1:1 до 1:16 включительно) для установки флага TMR2IF в регистре PIR1<1>.
Для уменьшения энергопотребления таймер TMR2 может быть выключен сбросом бита TMR2ON(T2CON<2>) в '0'.
Управляющий регистр T2CON:
7 6 5 4 3 2 1 0
- | TOUTPS3 | TOUTPS2 | TOUTPS1 | TOUTPS0 | TMR2ON | T2CKPS1 | T2CKPS0 |
TOUTPS3:TOUTPS0 - Выбор коэффициента выходного делителя TMR2.
0000 = 1:1
0001 = 1:2
………….
1111 = 1:16
TMR2ON - Включение модуля TMR2.
1 = включен.
0 = выключен.
T2CKPS1:T2CKPS0 - Выбор коэффициента деления предделителя TMR2.
00 = 1:1
01 = 1:4
1x = 1:16
CCP модуль (захват/сравнение/ШИМ).
Каждый модуль CCP содержит 16-разрядный регистр, который может использоваться в качестве:
-
16-разрядного регистра захвата данных;
-
16-разрядного регистра сравнения;
-
двух 8-разрядных (ведущий и ведомый) регистров ШИМ.
Работа модулей CCP1 и CCP2 идентична, за исключением функционирования триггера специального события.
Управляющий регистр CCPxCON:
7 6 5 4 3 2 1 0
- | - | CCPxX | CCPxY | CCPxM3 | CCPxM2 | CCPxM1 | CCPxM0 |
CCPxX:CCPxY - Младшие биты длительности импульса ШИМ.
Режим захвата:
Не используются.
Режим сравнения:
Не используются.
Режим ШИМ:
Два младших бита 10-разрядного значения длительности импульса ШИМ. Восемь старших битов находятся в CCPRxL.
CCPxM3:CCPxM0 - Режим работы модуля CCPx:
0000 = модуль CCPx выключен (сброс модуля CCPx)
0100 = захвата по каждому заднему фронту сигнала
0101 = захват по каждому переднему фронту сигнала
0110 = захват по каждому 4-му переднему фронту сигнала
0111 = захват по каждому 16-му переднему фронту сигнала
1000 = сравнение, устанавливает выходной сигнал (устанавливается флаг
CCPxIF в ‘1’)
1001 = сравнение, сбрасывает выходной сигнал (устанавливается флаг CCPxIF
в ‘1’)
1010 = сравнение, на выходной сигнал не влияет (устанавливается флаг CCPxIF
в ‘1’)
1011 = сравнение, триггер специальных функций (устанавливается флаг CCPxIF в
‘1’); на вывод CCPx не влияет). CCP1 – сброс таймера TMR1. CCP2 –
сброс таймера TMR1, запуск преобразования АЦП (если АЦП включено).
11xx = ШИМ режим
Режим захвата:
При возникновении события захвата 16-разрядное значение счетчика TMR1 переписывается в регистры CCPR1L:CCPR1H модуля CPP1. Событием захвата может быть:
-
Каждый задний фронт сигнала на входе RC2/CCP1;
-
Каждый передний фронт сигнала на входе RC2/CCP1;
-
Каждый 4-й передний фронт сигнала на входе RC2/CCP1;
-
Каждый 16-й передний фронт сигнала на входе RC2/CCP1.
Тип события захвата устанавливается битами CCP1M3:CCP1M0 в регистре CCP1CON. После выполнения захвата устанавливается флаг прерывания CCP1IF (PIR1<2>) в '1', который должен быть сброшен программно. Если происходит событие захвата до того, как предыдущие данные были прочитаны, старое значение будет потеряно.
В режиме захвата TMR1 должен работать в режиме таймера или синхронизированного счетчика. В режиме асинхронного счетчика операция захвата не работает.
Операция захвата данных не сбрасывает 16-разрядный регистр TMR1. TMR1 может использоваться как базовый таймер для других операций. Промежуток времени между двумя операциями захвата данных может быть легко вычислен (разница между значением первого и второго захвата). При переполнении TMR1 устанавливается флаг прерывания TMR1IF в '1' и, если разрешено, произойдет переход на обработку прерываний, что позволяет программно реализовать таймер разрядностью больше чем 16 бит.
Режим сравнения:
В этом режиме 16-разрядный регистр CCPR1 сравнивается со значением TMR1. Как только значения в регистрах становятся одинаковые, модуль CCP1 изменяет состояние вывода RC2/CCP1:
-
устанавливает высокий уровень сигнала;
-
устанавливает низкий уровень сигнала;
-
на вывод не воздействует.
Действие при совпадении может быть выбрано битами CCP1M3:CCP1M0 в регистре CCP1CON. В момент изменения состояния вывода устанавливается флаг прерывания CCP1IF в '1'.
В режиме сравнения TMR1 должен работать в режиме таймера или синхронизированного счетчика. В режиме асинхронного счетчика операция сравнения не работает.
Режим ШИМ:
В ШИМ режиме модуля CCP1 вывод RC2/CCP1 используется в качестве выхода 10-разрядного ШИМ. Т.к. вывод CCP1 мультиплицирован с цифровым каналом порта ввода/вывода, соответствующий бит направления TRISC<2> должен быть сброшен в ‘0’.
Очистка регистра CCP1CON вынудит перевести вывод CCP1 в низкий логический уровень. Низкий логический уровень не является данными из защелки PORTC.
ШИМ есть импульсный сигнал постоянной частоты и переменной скважности, то есть отношения длительности импульса к их периоду следования. С помощью задания скважности (длительности импульсов) можно менять среднее напряжение на выходе ШИМ.
Генерируется аналоговым компаратором, на отрицательный вход которого подаётся опорный сигнал в виде «пилы» или «треугольника», а на положительный - собственно сам модулируемый непрерывный аналоговый сигнал. Частота импульсов соответствует частоте «зубьев» пилы. Та часть периода, когда входной сигнал выше опорного, на выходе получается единица, ниже - нуль.
Временная диаграмма одного цикла ШИМ (период ШИМ и длительность
высокого уровня сигнала):
Период ШИМ определяется значением в регистре PR2 и может быть вычислен по формуле:
Период ШИМ = [(PR2) + 1] ∙ 4 ∙ Tosc ∙ (коэффициент предделителя TMR2);
Частота ШИМ = 1 / период ШИМ.
Когда значение TMR2 сравнивается с PR2, выполняются следующие действия:
-
TMR2 сбрасывается в 00h;
-
Устанавливается высокий уровень сигнал на выводе CCP1 (если скважность равна 0%, то сигнал в высокий уровень устанавливаться не будет);
-
Модуль ШИМ начинает новый цикл, загружая значение из регистра CCPR1L в CCPR1H.
Примечание: Выходной делитель TMR2 не влияет на частоту ШИМ. Он может использоваться для отсчета времени, когда необходимо изменить скважность ШИМ.
Длительность импульса ШИМ (скважность ШИМ) определяется битами в регистрах CCPR1L и CCP1CON <5:4>. Для 10-разрядного ШИМ старшие восемь бит сохраняются в регистре CCPR1L, а младшие два бита - в регистре CCPCON <5:4> (CCPR1L:CCPCON <5:4>). Для вычисления длительности сигнала высокого уровня, воспользуйтесь следующей формулой:
Длительность импульса ШИМ = (CCPR1L:CCPCON <5:4>) ∙ Tosc ∙ (коэффициент
предделителя TMR2)
Биты в регистре CCPR1L и CCP1CON<5:4> могут быть изменены в любое время, но значение в регистре CCPR1H не изменяется, пока не произойдет соответствие PR2 и TMR2. В ШИМ режиме регистр CCPR1H доступен только для чтения.
Регистр CCPR1H и внутренняя двух разрядная защелка образуют буфер ШИМ. Эффект буферизации необходим при записи нового значения длительности импульса ШИМ.
Когда значение CCPR1H и 2-разрядной внутренней защелки соответствует значению TMR2 и внутреннему 2-разрядному счетчику, в такте Q2 на выводе CCP1 будет установлен низкий уровень сигнала (конец импульса ШИМ).
Максимальную разрядность ШИМ для данной частоты можно вычислить по формуле (бит):
Примечание: Если длительность импульса ШИМ больше периода ШИМ, вывод CCP1 не будет иметь низкий уровень сигнала, что позволяет реализовать скважность выходного сигнала 100%.
Расчет периода ШИМ и длительности импульса:
Частота дискретизации ШИМ = 78.125кГц
FOSC = 20МГц
Предделитель TMR2 = 1
1/78.125кГц = [(PR2) + 1] ∙ 4 ∙ 1/20МГц ∙ 1
12.8мкс = [(PR2) + 1] ∙ 4 ∙ 50нс ∙ 1
PR2 = 63
Найдем максимальную разрядность длительности импульса ШИМ при частоте дискретизации 78.125кГц и тактовой частоте микроконтроллера 20МГц.
1/78.125кГц = 2 РАЗРЯДНОСТЬ ШИМ ∙ 1/20МГц ∙ 1
12.8мкс = 2 РАЗРЯДНОСТЬ ШИМ ∙ 50нс ∙ 1
256 = 2 РАЗРЯДНОСТЬ ШИМ
log(256) = (Разрядность ШИМ) ∙ log(2)
8.0 = Разрядность ШИМ
При тактовой частоте микроконтроллера 20МГц и частоте дискретизации ШИМ 78.125кГц самая большая разрядность ШИМ 8 бит. Любое значение больше 255 приведет к значению скважность цикла ШИМ 100%. Чтобы получить большую разрядность ШИМ необходимо уменьшить частоту дискретизации ШИМ. Для повышения частоты дискретизации ШИМ необходимо уменьшить разрядность ШИМ.
Применение широтно-импульсной модуляции:
1.) ШИМ применяется в двигателях для управления скоростью вращения электромотора.
2.) ШИМ часто используется для изменения яркости световых приборов. Эффект мерцания
может быть заметен на частотах ниже 50 Гц, поэтому на практике частота ШИМ выбирается
около 100 Гц или выше.
3.) ШИМ применяется для формирования звукового сигнала.
Все эти задачи основываются на базовом принципе ШИМ-сигнала: чем больше скважность импульсов, тем больше среднее значение напряжения.