Пример использования внешних портов микроконтроллера.




Принципиальная схема фрагмента в виде «жесткой схемы» показана на рис.1.7.

 

 

 

Рис.1.7. Принципиальная схема фрагмента электроавтоматики.

 

Р1…Р5, К5 – контакты реле и концевых выключателей фрагмента – входные сигналы электроавтоматики – аргументы булева уравнения.,

Кп – катушка электромагнитного пускателя – выходной сигнал электроавтоматики – функция булева уравнения.

Краткое описание фрагмента: выходной сигнал Кп, например, включение электромагнитного пускателя, формируется в одном из двух вариантов: либо при срабатывании контактов Р1, Р2, Р3 и К5, либо при включенном контакте Р3 и выключенном контакте Р4.

Общий вид булева уравнения, описывающего этот фрагмент, имеет вид:

__

Кп = Р1*Р2*Р3*Р5 + Р1*Р3*Р4*Р5


Для привязки сигналов электроавтоматики к выводам микроконтроллера составим таблицу соответствия – таблица 15:

Программу работы фрагмента пишем на языке СИ, адаптированном к компилятору

PICC v 9.60, поставляемому вместе с программным обеспечением для программирования микроконтроллеров фирмы Microchip Technology

Таблица 15

 

Обозначение сигнала Р1 Р2 Р3 Р4 Р5 Кп
Наименование вывода МК RB0 RB1 RB2 RB3 RB4 RC0

 

Программа имеет вид:

#define XTAL_FREQ 4MHZ //Частота тактового генератора 4мггц.

 

#define byte unsigned char

#define word unsigned int

 

#include <pic.h>

#include <stdio.h>

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

 

void main() {

 

TRISB = 0xff; // настройка порта В вход

TRISC = 0xFE; //настройка вывода RC0 порта С на выход

OPTION = 0x00; // подключение подтягивающих резисторов,

 

for(;;) { // цикл рабочей программы

 

RC0 = (RB0&&RB1&&RB2&&RB4) || (RB0&&RB2&&!RB3&&RB4);

 

}

 

} // конец main

 

Краткое описание работы программы: при выполнении любого из двух условий булева уравнения формируется единичный выходной сигнал на выходе RC0 микроконтроллера, при отсутствии условий - на выходе нулевой сигнал.


18. АЦП

Модуль АЦП имеет 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

Таблица 19.

Номер разряда                
Обозн. разряда ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE - ADON

 

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

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

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

Бит 2GO/DONE -бит состояния преобразователя: 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.

 

Таблица 19.

Номер разряда                
Обозн. разряда ADFM - - - PCFG3 PCFG2 PCFG1 PCFG0

 

 

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

 

 

Таблица 20.

PCFG3 PCFG0 AN7 RE2 AN6 RE1 AN5 RE0 AN4 RA5 AN3 RA3 AN2 RA2 AN1 RA1 AN0 RA0 Vref+ Vref- Кан./ Vref
  A A A A A A A A Vdd Vss 8/0
  A A A A Vref+ A A A RA3 Vss 7/1
  D D D A A A A A Vdd Vss 5/0
  D D D A Vref+ A A A RA3 Vss 4/1
  D D D D A D A A Vdd Vss 3/0
  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
  A A A A Vref+ Vref- A A RA3 RA2 6/2
  D D A A A A A A Vdd Vss 6/0
  D D A A Vref+ A A A RA3 Vss 5/1
  D D A A Vref+ Vref- A A RA3 RA2 4/2
  D D D A Vref+ Vref- A A RA3 RA2 3/2
  D D D D Vref+ Vref- A A RA3 RA2 2/2
  D D D D D D D A Vdd Vss 1/0
  D D D D Vref+ Vref- D A RA3 RA2 1/2

 

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

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

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

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

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

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

 

2.3.1.Работа модуля осуществляется в следующей последовательности:

 

  1. Настроить модуль АЦП:

- настроить выводы портов А и В на: ввод – для аналоговых каналов и опорных напряжений Vref в соответствии с конкретной задачей, на ввод / вывод для цифровых каналов (см. регистр ADCON1),

- выбрать входной канал аналогового сигнала (см. регистр ADCON0),

- выбрать источник тактовых сигналов для преобразователя (регистр ADCON0),

-включить модуль АЦП («1» в 0 разряд регистра ADCON0),

2. Настроить прерывание от модуля АЦП, если это необходимо:

- сбросить бит ADIF (регистр PIR1) в «0»,

- установить бит ADIE (регистр PIE1) в «1»,

- установить бит PEIE (регистр INTCON) в «1»,

- установить бит GIE (регистр INTCON) в «1»,

3. Выдержать паузу для зарядки входного конденсатора АЦП (см. ниже).

4. Начать аналого-цифровое преобразование: установить бит GO/-DONE (регистр ADCON0) в «1».

5. Ожидать окончания преобразования:

- ожидать сброса бита GO/-DONE,

или

- обработать прерывание по окончанию преобразования.

6. Считать результат преобразования из регистра ADRESH – старший байт двоичного числа, из регистра ADRESL – младший байт, сбросить бит ADIF (регистр PIR1)/

7. Для следующего преобразования необходимо:

- сделать выдержку не менее 2TAD, где TAD – время одного преобразования,

- повторить этапы, начиная с пункта 1 или 2.

 

2.3.2.Временные требования к работе модуля АЦП.

На входе модуля имеется накопительный конденсатор CHOLD, необходимый для стабилизации входного сигнала на время преобразования. Поэтому перед включением преобразования необходимо сделать выдержку. Расчетная схема входной части модуля приведена на рис. Временную задержку можно рассчитать по формуле:

TACQ = TAMP + TC + TCOFF, где:

TAMP – время задержки входного усилителя модуля,

TC - время заряда конденсатора CHOLD,

TCOFF – температурный коэффициент.

TAMP = 2MKC;

Tc = CHOLD (RIC + RSS +RS) Ln(1/2047); где:

RIC – входное сопротивление модуля = 1ком,

RSS - входное сопротивление канала = 7ком,

RS – максимальное рекомендуемое внутреннее сопротивление источника аналогового сигнала 10ком.

TCOFF = [(t – 25) (0,05 / t)], где: t температура окружающей среды в градусах.

При подстановке приведенных данных можно получить следующее значение выдержки:

TACQ = 2 + 16,47 + 1,25 = 19,72 мкс.

После очередного преобразования необходимо также сделать выдержку длительностью не менее 2TAD, где TAD – время работы модуля для получения одного бита выходного кода, зависит от частоты входных импульсов преобразователя. Значения TAD для различных режимов приведены в таблице 21.

Таблица 21.

TAD FOSC
Режим Значения битов ADCS1:ADCS0 Максимальное значение частоты
2TOSC 00 1,25МГц
8TOSC 01 5МГц
32TOSC 10 20МГц
2-6 мкс (RC-генератор модуля АЦП) 11 (см. характеристики модуля)

 

2.3.4. Последовательность преобразования аналогового сигнала.

Преобразование начинается после установки в «1» бита G0/-DONE (бит 2) в регистре ADCON0. Последовательность операций приведена на рис. После окончания преобразования результат перепишется в регистры ADRESH и ADRESL, где могут быть прочитаны программно. Перед следующим преобразованием необходимо дать выдержку не менее 2TAD.

 

2.3.5. Выравнивание результата преобразования.

Поскольку модуль АЦП 10 – разрядный, а результат преобразования хранится в двух спаренных 8 – разрядных регистрах, то окончательный результат преобразования можно «выравнять», как показано на рис. 16. Вид выравнивания задается битом ADFM (бит 7) регистра ADCON1 (адрес 9Fh): при ADFM =1 результат преобразования хранится в регистре ADRESL – восемь младших разрядов и регистре ADRESH – два старших разряда цифрового кода преобразования, шесть старших разрядов регистра ADRESH равны 0, при ADFM = 0 результат преобразования хранится в регистре ADRESH – восемь старших разрядов и в регистре ADRESL – два младших разряда цифрового кода, шесть младших разрядов регистра ADRESL равны 0.

 

2.3.6. Работа модуля АЦП в SLEEP режиме.

Модуль АЦП можно запустить в работу в SLEEP с целью экономии энергопотребления, при этом в качестве генератора тактовых импульсов должен быть выбран внутренний RC-генератор (биты ADSC1:ADSC0 =11). После завершения преобразования аппаратно сбрасывается бит пуска преобразования GO/-DONE (бит 2 в регистре ADCON0) и если был установлен режим обслуживания прерывания, то микроконтроллер выйдет из SLEEP режима и обработает прерывание. Повторный запуск SLEEP режима может быть осуществлен подпрограммой обработки прерывания. Если режим обслуживания прерывания изначально не был установлен, то после окончания прерывания модуль АЦП выключается, хотя результат преобразования сохраняется в регистрах ADRESH:ADRESL и бит включения модуля ADON остается установленным. То есть работа может быть продолжена, если микроконтроллер будет выведен из SLEEP режима другим способом, например, внешним прерыванием.



Поделиться:




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

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


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