В мк семейства PIC16Cxx

 

1. ЦЕЛЬ

Выучить принцип работы аналого-цифрового преобразователя на примере микроконтроллера PIC16C71. Научиться вводить аналоговые сигналы. Рассмотреть способы вывода аналоговых сигналов. Научиться формировать широтно-модулируемые сигналы.

 

2. Короткие теоретические сведения

2.1. Ввод аналоговых сигналов выполняется с помощью аналого-цифровых преобразователей (АЦП). На рис. 1 приведенная зависимость получаемого цифрового кода от входного аналогового сигнала для

8-разрядного АЦП.

 

Рис. 1. Функция превращения КОЗЕЛ

 

Для управления АЦП в микроконтроллере PIC16C71 необходимо использовать следующие регистры:

- регистр результата (ADRES);

- регистр управления 0 (ADCON0);

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

- регистр управления прерываниями (INTCON).

 

В регистре ADRES хранится результат аналого-цифрового преобразования. Когда преобразование завершено, результат преобразования записывается в регистр ADRES, после этого смахивает флажок GO/DONE (ADCON0<2>) и устанавливается флажок прерывания ADIF (ADCON0<1>). Потом необходимо выдержать паузу 20 - 30 мкс для разряда емкости схемы выборки-сохранения АЦП (причем, это необходимо повторять после каждого следующего цикла преобразования). И только после этого нужно установить бит GO/DONE (ADCON0<2>) для начала преобразования.

Алгоритм действий для выполнения аналого-цифрового преобразования следующий:

1. Осуществить конфигурацию (инициализацию) модуля АЦП:

- выбрать аналоговые входы и источник опорного напряжения (биты PCFG2 – PCFG0 в регистре ADCON1);

– выбрать входной канал АЦП (біти CHS2 – CHS0 у регістрі ADCON0);

выбрать источник и частоту импульсов превращения (биты ADCS1, ADCS0 в регистре ADCON0);

– включить модуль АЦП (біт ADON у регістрі ADCON0).

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

- сбросить флажки окончания прерывания (бит ADIF в регистре ADCON0);

- разрешить прерывания от АЦП (бит ADIE в регистре INTCON);

- разрешить все прерывания (біт GIE у регістрі INTCON).

3. Видержать паузу 20 – 30 мкс.

4. Начать аналого-цифровое преобразование:

- установить бит запуска АЦП (бит GO/DONE в регистре ADCON0).

5. Ожидать окончания превращения, в конце которого автоматически выполняется:

- сброс бита окончания преобразования (бит GO/DONE в регистре ADCON0);

- формувание сигнала (установка бита ADIF в регистре ADCON0).

6. Получить результаты преобразования:

- прочитать результат преобразования (регистр ADRES);

- сброс, если необходимо, флажок окончания прерывания (бит ADIF в регистре ADCON0).

7. Выполнить действия, начиная с пункта 1 или пункта 2, для выполнения следующего превращения.

2.2. Вывод аналоговых сигналов выполняется с помощью цифро-аналоговых преобразователей. Сигнал с амплитудой, пропорциональной цифровому коду, можно также получить, используя широтно-импульсную модуляцию (ШИМ), что представляет собой сигналы переменной длительности при постоянном периоде. Амплитуда такого сигнала, что прошел через интегрирующую цепочку или через фильтр низкой частоты (ФНЧ), пропорциональная длительности ШИМ сигнала.

На рис. 2 приведенный пример формирования ШИМ сигнала с разной длительностью tі1, tі2, tі3 и постоянным периодом T.

Рис. 2. Форма ШИМ сигнала

 

На рис. 3 приведенный пример схемы формирования аналогового сигнала из ШИМ сигнала с использованием RC цепочки в качестве ФНЧ первого порядка и повторителя на операционном усилителе.

 

Рис. 3. Формирование аналогового сигнала

 

Для расчета значений R и C обратимся к амплитудно-частотной характеристике (АЧХ) ФНЧ, что представлена на рис. 4.

Ширина спектра исходного сигнала без использования ФНЧ равняется |PWM = 1/T, а при использовании ФНЧ - ¦ГР. Частота ¦ГР должна быть значительно меньше (в 5 и более раз) частоты ¦PWM. Тогда, задав одно из значений R или C, за формулой RC = 1/(2 p ¦), де ¦ = ¦ГР - частота среза фильтра, можно найти другое значение.

 

3. ЗАДАНИЕ ПО ЛАБОРАТОРНОЙ РАБОТЕ

3.1. Ввод аналоговых сигналов.

3.1.1. Выполнить конфигурацию микроконтроллера на вводе аналоговых сигналов.

3.1.2. Ввести сигналы из двух аналоговых датчиков U1 и U2.

3.1.3. Сделать сравнение введенных сигналов.

3.1.4. За результатами сравнения выполнить подпрограмму согласно варианта.

3.1.5. Определить время выполнения превращения АЦП.

Рис. 4. Амплитудно-частотная характеристика ФНЧ

 

3.2. Вывод аналоговых сигналов.

3.2.1. На заданном выводе микроконтроллера сформировать сигнал с заданным периодом повторения T и числом уровней квантования N.

 

4. ВАРИАНТЫ ЗАДАНИЙ

4.1. Варианты задания 3.1.

 
U1 < U2 А B C D E F G H I J А B C D E F D C I J
U1 = U2 И J G H E F D C B J А I C G F E G H I А
U1 > U2 А J C H B D G C I E J B H D E E D H B J

Действия подпрограмм:

А - инкремент ячейки памяти данных;

B - декремент 16-разрядного счетчика в памяти данных;

C - чтение 8-разрядного числа из порта B и запись его в ячейку памяти данных;

D - запись текущего значения таймера (регистр TMR0) в ячейку памяти данных;

E - формирование положительного импульса длительностью ti = 5 · tц на выводе RB0, где tц - длительность командного цикла;

F - инкремент 16-разрядного счетчика в памяти данных;

G - одновременное инвертирование сигналов на выводах RB0 и RB1;

H - декремент ячейки памяти данных;

I - обмен уровней сигналов на выводах RB1 и RB2;

J - прием дискретного сигнала из вывода RB3 и выдача его на вывод RB0.

 

4.2. Варианты задания 3.2.

 
Вывод RB
T, мс
N

 

Тактування микроконтроллера выполнить от тактового генератора с частотой ¦OSC = 4 Мгц.

 

Пример программы.Фрагмент программы, что выполняет настройку АЦП и аналого-цифровое превращение входного сигнала из вывода RA2/AN2.

; подключение файла с описанием стандартных констант и значений

#include p16c71.inc

; Настройка АЦП

initAD

bsf STATUS, RP0 ; выбор банка 1

movlw b'00000000' ; выл.RA3-RA0 - аналоговые входы

movwf ADCON1

bcf STATUS, RP0 ; выбор банка 0

movlw b'11010001' ; RC-генератор для АЦП,

movwf ADCON0 ; канал 2, разрешение АЦП

; Превращение

Convert

call Delay30us ; задержка 30 мкс

bsf ADCON0, GO_DONE ; запуск АЦП

loop

btfsc ADCON0, GO_DONE ; превращение закончено?

goto loop ; продолжить ожидание

movf ADRES, W ; результат превращения в W

… ; продолжение программы

 

5. Моделирование работы АЦП в пакете MPLAB

5.1. Создать текстовый файл с предполагаемыми значениями результатов превращения АЦП, например adcres.reg (см. рис. 5).

5.2. Открыть окно Register Stimulus через меню: Debug->Simulator Stimulus->Register Stimulus->Enable... (см. рис. 6).

5.3. В поле Program Memory Address указать адрес команды в памяти программ (позволяется и рекомендуется указывать метку), например, ares.

5.4. В поле Register Address укажите адрес или символьное имя регистра, например, ADRES.

5.5. Нажмите кнопку Browse... для указания файла стимула, например, adcres.reg.

 

Рис. 5. Создание текстового файла с результатами превращения АЦП

 
 

 

 


Рис. 6. Окно Register Stimulus

 

5.6. После сброса МК, каждый раз, когда значение счетчика команд PC совпадет с указанным адресом ares, в регистр ADRES будет занесено значение из файла adcres.reg. При достижении конца файла adcres.reg подстановка начнется с начала файла, то есть будет выполняться циклический.

 

6. Содержание отчета

6.1. Тема.

6.2. Цель.

6.3. Индивидуальное задание.

6.4. Листинг программы с подробным комментированием выполнения программы.

6.5. Короткое описание программ.

6.6. Результаты выполнения программ.

6.7. Выводы.