В режиме ШИМ вывод 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 не используется.
Бит 2 – GO/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, просмотров: 267.