Режим широтно-импульсного преобразователя (ШИМ)
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

В режиме ШИМ вывод RC2 микроконтроллера используется в качестве выхода 10-разрядного широтно-импульсного модулятора. Структурная схема модуля в этом режиме показана на рис. 13.

 

 

Регистр длительности импульса
CCP1RL
CCP1CON <5:4>
CCPR1H
Сравнение
TMR2
Сравнение
PR2
R Q     S  
RC2
TRISC<2>
Сброс TMR2, Сброс RC2, Загрузка TMR2
Рис 14. Структурная схема модуля ССР1 в режиме ШИМ.

 


Работает модуль в этом режиме следующим образом. Главной задачей модуля является выдача на вывод RC2 сигнала, форма которого показана на рис. Сигнал представляет собой импульсную последовательность с заданной частотой и заданной длительностью импульса. Заданная частота формируется таймером TMR2, в который записывается число, соответствующее периоду ШИМ. Это число предварительно записывается в регистр PR2 и в процессе работы модуля непрерывно сравнивается с состоянием счетчика таймера.

При совпадении этих значений происходит сброс счетчика таймера и установка в «1» выходного RS- триггера, формируя таким образом начало импульса ШИМ.

Длительность импульса задается 10-разрядным двоичным кодом, который записывается в регистр CCPR1L – младшая часть кода и разряды <5:4> регистра CCP1CON - старшая часть кода. В процессе работы модуля содержимое регистров CCPR1L : CCP1CON <5:4> переписывается в буфер, образованный регистром CCPR1H и двухразрядной внутренней защелкой. Содержимое буфера непрерывно сравнивается с содержимым счетчика таймера TMR2. При их совпадении сбрасывается RS-триггер, формируя таким образом на выводе RC2 уровень сигнала «0». Ввод очередного значения длительности и, соответственно, пуск схемы сравнения осуществляется только после срабатывания схемы сравнения триггера TMR2 с регистром PR2. Для правильной работы модуля в режиме ШИМ двоичный код в регистре PR2 должен всегда быть больше кода в регистрах CCPR1L:<5:4> CCP1CON, в противном случае на выходе всегда будет уровень «0».

Численные значения частоты и длительности определяются из следующих зависимостей:

f = 1/T; T= [(PR2 + 1)] x Tosc x (коэффициент предделителя TMR2).

a = (CCPR1L:CCP1CON <5:4>) x Tosc x (коэффициент предделителя TMR2).

Tosc – период тактовых импульсов микроконтроллера.

 

Таким образом, процесс настройки модуля ССР в режиме ШИМ заключается в следующем:

- рассчитать и записать в регистр PR2 величину периода ШИМ,

- рассчитать и записать в регистры CCPR1L:CCP1CON <5:4> величину длительности импульса ШИМ,

- настроить вывод RC2 на выход (TRISC<2> = 0),

- настроить предделитель и таймер TMR2 (см. раздел «Таймеры….» ),

- включить модуль ССР1 (регистр CCP1CON<3:0> = 11xx).

 

  В микроконтроллере PIC16F873 имеется два модуля ССР: ССР1 и ССР2. Настройка и работа модуля ССР2 аналогична настройке и работе модуля ССР1. Отличие заключается только в именах регистров: например, вместо регистра CCP1CON должен быть регистр CCP2CON, вместо регистра CCPR1H должен быть регистр CCPR2H и т.д.

При использовании двух модулей ССР одновременно необходимо помнить, что основные тактирующие элементы в обоих модулях одни и те же: в режимах захвата и сравнения – таймер TMR1, а в режиме ШИМ – таймер TMR2 и регистр PR2.

В качестве примера программирования модуля ССР в режиме ШИМ рассмотрим следующие условия:

Частота следования импульсов 1кгц, скважность импульсов равна 2, тактовая частота микроконтроллера – 4 мггц.

Из приведенных условий требуемый период ШИМ Тшим = 1/1000= 0,001 сек или 1 000 мксек. Максимальный период импульсов самого таймера TMR2 = 256 * 1 = 256 мксек, и с учетом входного делителя можно получить TMR2 = 256 * 4 =1024 мксек (коэффициент деления входного делителя 1:4) , поэтому для получения требуемой частоты следования импульсов в регистр PR2 необходимо записать число 1000 / 4 = 250 или в шестнадцатиричной системе EA.  Длительность импульсов равна половине периода (скважность равна 2), поэтому в регистр CCP1RL запишем число 125 ил в шестнадцатиричной системе 7C.

В регистр CCP1CON запишем число 0x0C – модуль CCP1 включен, режим работы модуля – ШИМ.

Для работы модуля ССР необходимо настроить таймер TMR2 (см.выше):

T2CON = 0x05 – коэффициент деления входного предделителя 1:4, модуль TMR2 включен, выходной делитель выключен

Тогда программа формирования ШИМ – сигналов будет выглядеть следующим образом:

 

#define      XTAL_FREQ 4MHZ

#define      byte            unsigned char

#define word         unsigned int

#include     <pic.h>

#include     <stdio.h>

__CONFIG(HS & WDTDIS & PWRTEN & LVPDIS & DUNPROT & WRTEN);

 

void main() {

TRISC = Ox04;             // вывод RC2 на выход

T2CON = 0x05;             // настройка модуля TMR2

PR2 = 0xEA;                 // запись периода ШИМ

CCP1RL = 7C;               // запись длительности импульсов ШИМ

CCP1CON = 0x0C;       //настройка модуля CCP1 и включение модуля

for (;;) { }

}

 

 


Модуль АЦП.

Модуль АЦП имеет 5 входных каналов (8 в микроконтроллерах PIC16F874). Структурная схема модуля показана на рис. 14. Микроконтроллер имеет в своем составе один аналого-цифровой 10 - разрядный преобразователь, на вход которого коммутируется 5 или 8 (для PIC16F887) аналоговых сигналов. Входные сигналы подаются на выводы RA0…RA3, RA5, RE0…RE3 портов A и E микроконтроллера, соответственно эти выводы должны быть предварительно настроены как входы. В качестве опорных напряжений преобразователя можно использовать как напряжения питания микроконтроллера: Vdd и Vss, так и задавать от внешнего источника опорных напряжений: Vref+ и Vref-, которые подаются на входы RA3, RA2 соответственно. Число входных каналов модуля при этом сокращается.

Для управления модулем АЦП используются четыре регистра специального назначения:

- ADRESH – регистр старшего байта результата преобразования,

- ADRESL -  регистр младшего байта результата преобразования,

- ADCON0 – регистр управления 0,

- ADCON1 - регистр управления1.

Регистр ADCON0 используется для настройки и пуска преобразователя. Формат регистра приведен в таблице 19

                                                                                                            Таблица 22.

Номер разряда 7 6 5 4 3 2 1 0
Обозн. разряда ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE - ADON

 

Бит 0 – ADON – включение преобразования: 1 – модуль включен,

                                                                         0 – модуль выключен, ток не потребляется.

Бит 1 не используется.

Бит 2GO/DON E -бит состояния преобразователя: 1 – выполняется преобразование, установка бита   означает начало работы преобразователя, 0 – ожидание, аппаратно сбрасывается по окончании преобразования.

 

Биты 5-3 – CHS2: CHS0 - выбор номера аналогового входа:

              000 – канал 0

              001 – канал 1

              010 – канал 2

              011 – канал 3

              100 – канал 4

              101 – канал 5

              110 – канал 6

              111 – канал 7

Биты 7-6 – ADCS1: ADCS0 – выбор источника тактовых сигналов преобразователя)

              00 – Fosc/2, где Fosc- основная тактовая частота микроконтроллера,

              01 – Fosc/8

              10 – Fosc/32 

              11 - частота внутреннего RC – генератора модуля АЦП.

 

Формат регистра ADCON1 приведен в таблице 19.

                                                                                                            Таблица 23

Номер разряда 7 6 5 4 3 2 1 0
Обозн. разряда ADFM - - - PCFG3 PCFG2 PCFG1 PCFG0

 

Биты 3-0 PCFG3:PCFG0 - биты настройки каналов на различные режимы, приведенные в таблице 20

ADFM  выбора способа выравнивания (см. рис.17).

                                                                                                 Таблица 24.

PCFG3 PCFG0 AN7 RE2 AN6 RE1 AN5 RE0 AN4 RA5 AN3 RA3 AN2 RA2 AN1 RA1 AN0 RA0 Vref+ Vref- Кан./ Vref
0000 A A A A A A A A Vdd Vss 8/0
0001 A A A A Vref+ A A A RA3 Vss 7/1
0010 D D D A A A A A Vdd Vss 5/0
0011 D D D A Vref+ A A A RA3 Vss 4/1
0100 D D D D A D A A Vdd Vss 3/0
0101 D D D D Vref+ D A A RA3 Vss 2/1
011x D D D D D D D D Vdd Vss 0/0
1000 A A A A Vref+ Vref- A A RA3 RA2 6/2
 1001 D D A A A A A A Vdd Vss 6/0
1010 D D A A Vref+ A A A RA3 Vss 5/1
1011 D D A A Vref+ Vref- A A RA3 RA2 4/2
1100 D D D A Vref+ Vref- A A RA3 RA2 3/2
1101 D D D D Vref+ Vref- A A RA3 RA2 2/2
1110 D D D D D D D A Vdd Vss 1/0
1111 D D D D Vref+ Vref- D A RA3 RA2 1/2

 

Обозначения в таблице 20:

A – аналоговый вход,

D – цифровой канал ввода/вывода

Vref+ - положительное внешнее опорное напряжение АЦП,

Vref- - отрицательное внешнее опорное напряжение АЦП,

Kан./Vref – число доступных аналоговых каналов / число входов внешнего опорного напряжения.

АЦП
RE2/AN7 RE1/AN6 RE0/AN5 RA5/AN4 RA3/AN3/Vref+ RA2/AN2/Vref- RA1/AN1 RA0/AN0
Uan
Vdd
Vss
Vref+
Vref-
CHS2:CHS0
Рис. 15.  Структурная схема модуля АЦП.
C hold
F tact

Дата: 2019-04-23, просмотров: 216.