Режим широтно-импульсного преобразователя (ШИМ).




 

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

 

 

       
 
 
   


Работает модуль в этом режиме следующим образом. Главной задачей модуля является выдача на вывод 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 = Ox00; // вывод RC2 на выход

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

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

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

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

for (;;) { }

}


23. Универсальный синхронно – асинхронный приемопередатчик (USART).

 

Модуль USART представляет собой устройство ввода/вывода последовательного типа и предназначен для связи с любым устройством, поддерживающим заданный формат представляемой информации и согласованное по уровням передаваемых сигналов. Для обмена с абонентами модуль использует выводы микроконтроллера RC6 и RC7, которые настраиваются на вход или выход с помощью регистра TRISC, о чем будет сказано в соответствующем разделе.

Модуль может работать в одном из трех режимов:

- асинхронный полный дуплекс,

- ведущий синхронный полудуплекс,

- ведомый синхронный полудуплекс.

На практике наибольший интерес представляет режим асинхронного полного дуплекса. Рассмотрим его подробно.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2018-02-25 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: