Модуль аналого-цифрового преобразователя (АЦП)

 

Модуль АЦП (рис. 3.10) содержит четыре входных аналоговых канала AIN3, AIN1, AIN2 и AIN3, мультиплексируемых на одну схему выборки/хранения и далее на АЦП. Опорное напряжение поступает извне через ножку RA3/AIN3/Vref или формируется внутри кристалла из Vdd в источнике опорного напряжения (ИОН).

Преобразователь использует принцип последовательного приближения. Восьмибитовый результат преобразования помещается в регистр ADRES (09h). Преобразования инициируются установкой управляющего бита (GO/DONE) в регистре ADCON0. До начала преобразования должен быть выбран нужный канал и обеспечено достаточное время для завершения выборки. Время преобразования есть функция периода генератора. Минимально возможное время преобразования 20 мкс. В конце преобразования бит GO/DONE очищается и активируется прерывание установкой в «»бита ADIF в регистре ADCON0. Ошибка преобразования не превышает +‑ 1 LSB для Vdd=5.12 В и Vref = Vdd. Разрешение и точность уменьшаются, когда Vref меньше Vdd.

 

CT – Делитель частоты DB – Шина данных

G – Внутренний RC-генератор ADCS0, ADCS1 – Выбор частоты преоб-

MUX – Мультиплексор разования

MUX – Мультиплексор PCFG0, PCFG1 – Выбор опорного

ИОН – Источник опорного напряжения напряжения

АЦП – Аналого-цифровой преобразова тель GO/DONE – Инициализация АЦП

ADCON0 – Регистр управления и стататуса АЦП CHS0, CHS1 – Выбор канала

ADCON1 – Регистр управления и конфигурации

АЦП ADIF –Конец преоразования

 

 

Рис. 3.10. Структурная схема модуля АЦП

 

Алгоритм работы АЦП в нормальном режиме следующий:

1. Выборка канала (запись <1>/<0> в биты CHS0 и CHS1 регистра АDCON0).

2. Инициализация АЦП (запись <1> в бит GO/DONE регистра АDCON0).

3. Задержка на время выборки (формирование сигнала выборка/хранение).

4. Запуск АЦП (формирование сигнала <Запуск АЦП>).

5. Преобразование (примерно 30 мс).

6. Конец преобразования:

- формирование сигнала прерывания (установка в <1> бита ADIF в регистре ADCON0 и сброс бита GO/DONE в регистре ADCON0);

- функционирование АЦП в режиме SLEEP.

Пункты 1 и 2 данного алгоритма реализуются программно, а пункты 3-6 аппаратно в модуле АЦП.

Тактирование АЦП осуществляется от своего собственного тактового генератора или от генератора OSC1, как показано в табл. 3.3.

 

Таблица 3.3

Тактирование АЦП

 

Управляющий бит ADCS1, ADCS0 Задержка (должна быть > 2 мкс )
2 tosc
8 tosc
32 tosc
trc (2..6 мкс, 4мкс номинал)

 

Время преобразования каждого бита занимает одинаковый интервал. Общее время измерения- 10 интервалов. Сам интервал должен быть не менее 2мкс. На низких частотах может быть выбран RC-генератор. Однако его частота существенно зависит от напряжения питания, температуры и других параметров (период от 2 до 6 мкс, номинал - 4 мкс).

Управляющий регистр и регистр статуса АЦП (ADCОN0) (Адрес 08h. Значение при включении питания = 00H) имеет следующее содержание:

 

7 6 5 4 3 2 1 0

ADCS1 ADCS0   CHS1 CHS0 GO/DONE ADIF ADON

 

ADON - Включение АЦП:

ADON = 0: АЦП не работает и не потребляет тока.

ADON = 1: АЦП работает и занял линии IO.

 

ADIF - Флаг прерывания по окончанию аналого-цифрового преобра-

зования:

Флаг устанавливается, когда преобразование закончено.

Флаг сбрасывается программно.

 

GO:/DONE - Этот бит должен быть установлен, чтобы началось пре

образование. Он автоматически сбрасывается аппарат-ным способом, когда преобразование заканчивается.

 

CHS1 CHS0 - Выбор аналогового канала:

CH1,CH0 = 00: канал 0 (AIN0),

01: канал 1 (AIN1),

10: канал 2 (AIN2),

11: канал 3 (AIN3).

 

ADCS1 ADCS0 - Выбор частоты преобразования

ADCS0,ADCS0 = 00: fosc/2,

01: fosc/8,

10: fosc/32,

11: fRC (частота от собственного RC генератора).

 

Подключение аналоговых входов осуществляется следующим образом. Пользователь должен установить регистр ACON1 так, чтобы линии аналоговых сигналов были сконфигурированы как аналоговые входы. Так как линии аналоговых сигналов запараллелены с цифровыми выходами, которые имеют диоды защиты, подключенные к Vdd и к Vss в обратном направлении, то входной аналоговый сигнал должен будет ограничиваться этими значениями, иногда с увеличением тока в ножку. Чтобы избежать повреждений входных цепей, рекомендуется иметь последовательный ограничивающий резистор не менее 500Ом.

Для источников сигнала, выходное сопротивление не должно быть больше 10 КОм. Тогда максимальная погрешность, вызванная током утечки, составляет +‑ 5 мВ или +‑ 0.25 LSB при Vdd=Vref= 5В (10 КОм * 5мкА). Другая причина ограничения максимального выходного сопротивления источника сигнала -это требование к запоминанию входного сигнала на специальном конденсаторе в схеме выборки-хранения. Для снижения шума иногда добавляют внешний RC фильтр. И в этом случае значение R должно быть таким, чтобы суммарная величина сопротивления не превосходила 10КОм. Любой внешний компонент, подключаемый к аналоговому входу (будь то конденсатор или стабилитрон ), должен иметь очень небольшой ток утечки.

Управляющий регистр АЦП (ADCON1) (Адрес 88h. Значение при включении питания= 00H)имеет следующее содержание:

 

- - - - - - PCFG1 PCFG0

 

PCFG1 PCFG1 - Биты, которые определяют конфигурацию ножек RA0 - RA3 (см. табл. 3.4)

 

Таблица 3.4

Конфигурация выводов RA0-RA3

 

PCFG1, PCFG0 RA0,RA1 RA2 RA3 Vref
аналоговые входы аналоговый вход аналоговый вход Vdd
аналоговые входы аналоговый вход вход опорного напряжения RA3
налоговые входы цифровой вход цифровой вход Vdd
цифровые входы цифровой вход цифровой вход

Функционирование АЦП в режиме SLEEP осуществляется следующим образом.

При входе в режим Sleep следует сбросить бит ADON в регистре ADCON0, чтобы уменьшить потребление тока.

Если АЦП находился в процессе преобразования ( с использованием RC генератора), то преобразование будет завершено прямо в режиме Sleep. Флаг прерывания ADIF будет взведен и кристалл будет выведен из режима SLEEP, если флаг разрешения прерывания ADIE ранее был установлен. При таком режиме измерения отсутствуют импульсные помехи и обеспечивается максимально возможная точность преобразования, что полезно на высоких тактовых частотах.

Если режим SLEEP инициализируется во время преобразования, которое использует внутренний генератор, как источник тактирования —преобразование будет прервано. В этом случае пользователь должен перезапустить АЦП после выхода из режима Sleep, начав с повторной выборки данных.