Модуль аналого - цифрового преобразователя ADC
Модуль ADC обеспечивает выборку и преобразование сигналов,
поступающих на 8 аналоговых входов AC0-7 ( в некоторых моделях микроконтроллеров используются только
четыре аналоговых входа AC0 - 4), в 8- или 10-разрядный двоичный код, который записывается в регистры
результата ADR0-7. Модуль ADC имеет отдельные выводы для подключения напряжения питания Vda, "земли"
Vsa, высокого и низкого опорных потенциалов Vов, Vон, которые определяют диапазон входных потенциалов,
воспринимаемых ADC. Типовые значения опорных потенциалов Vов=5 В, Vон=0 В. В этом случае разрешающая
способность составляет около 20 мВ при 8-разрядном и около 5 мВ при 10-разрядном преобразовании.
Модуль программируется на выполнение одноканальных или многоканальных циклов
преобразования. При одноканальном цикле последовательно выполняется 4 или 8 выборок и преобразований
значений потенциала, поступающего на один из аналоговых входов, в двоичные коды, записываемые в
регистры результата. При многоканальном цикле последовательно выбираются 4 или 8 аналоговых входов,
значения потенциалов на которых преобразуются в двоичный код и записываются в регистры результата.
Если модуль работает в одноцикловом режиме, то преобразование останавливается после завершения первого
цикла. В режиме сканирования (многоцикловый режим) одноканальный или многоканальный циклы повторяются,
а полученные в очередном цикле результаты заносятся в регистры ADR0-7 на место результатов предыдущего
цикла.
Таблица 3.21. Адреса и уровни доступа регистров модуля ADC
Адрес |
Регистр |
Уровень доступа |
$*FF700 |
ADMCR |
S |
$*FF702 |
ADTEST |
S |
$*FF704 |
резервировано |
- |
$*FF706 |
PORTADA |
S/U |
$*FF708 |
резервировано |
- |
$*FF70A |
ADCTL0 |
S |
$*FF70C |
ADCTL1 |
S |
$*FF70E |
ADSTAT |
S |
$*FF710-71E |
RJURR0-7 |
S/U |
$*FF720-72E |
LJSRR0-7 |
S/U |
$*FF730-73E |
LJURR0-7 |
S/U |
Каждый из регистров ADR0-7 может быть считан CPU
путем обращения по одному из трех возможных адресов (табл. 3.21) в зависимости от требуемого
формата представления результата. При обращении к регистрам RJURR0-7 (адреса $*FF710-1E) результат
преобразования считывается из соответствующего регистра с размещением значащих разрядов (R7-0 при
8-разрядном или R9-0 при 10-разрядном преобразовании) в правой части 16-разрядного формата
(рис.3.23,а). При обращении к регистрам LJURR0-7 (адреса $*FF730-3E) результат преобразования
R7-0 или R9-0 считывается с размещением значащих разрядов в левой части 16-разрядного формата (
рис.3.23,б). При обращении к регистрам LJSRR0-7 (адреса $*FF720-2E) значение результата дается
относительно среднего опорного потенциала (Vов - Vон) / 2. В этом случае старший разряд регистра
содержит знак результата S. Результат будет иметь 7 значащих разрядов R6-0 при 8-разрядном или 9
разрядов R8-0 при 10-разрядном преобразовании (рис.3.23,в). При значении знака S=1 результат
представляется в дополнительном коде.
|
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
000000 |
R9/0 |
R8/0 |
R7/R7 |
R6/R6 |
R5/R5 |
R4/R4 |
R3/R3 |
R2/R2 |
R1/R1 |
R0/R0 |
а) RJURR0-7 (адрес $*FF710-FF71E)
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
|
R9/R7 |
R8/R6 |
R7/R5 |
R6/R4 |
R5/R3 |
R4/R2 |
R3/R1 |
R2/R0 |
R1/0 |
R0/0 |
000000 |
б) LJURR0-7 (адрес $*FF730-FF73E)
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
|
S |
R8/R6 |
R7/R5 |
R6/R4 |
R5/R3 |
R4/R2 |
R3/R1 |
R2/R0 |
R1/0 |
R0/0 |
000000 |
в) LJSRR0-7 (адрес $*FF720-FF72E)
Рис. 3.23. Форматы представления результатов аналого-цифрового преобразования
В состав модуля ADC входят регистр конфигурации
ADCMR (адрес $*FF700), регистры управления ADCTL0,1 (адреса $*FF70A,$*FF70C) и регистр состояния
ADSTAT (адрес $*FF70E).
Регистр конфигурации ADCMR (рис.3.24,а) содержит следующие биты:
STOP - останавливает при STOP=1 функционирование ADC, переводя его в
режим останова с пониженным энергопотреблением; при установке начального состояния микроконтроллера
этот бит принимает значение STOP=1, поэтому перед использованием ADC необходимо установить STOP=0;
SUPV - задает уровень доступа к регистрам ADC в соответствии с табл.3.21:
при SUPV=1 доступ ко всем регистрам разрешен только в режиме супервизора, при SUPV=0 регистры,
имеющие уровень доступа S/U могут быть выбраны в режиме пользователя (для микроконтроллеров
семейства 68HC16 доступ ко всем регистрам разрешен при любых значениях SUPV);
FRZ1,0 - определяет функционирование ADC в режиме отладки (при поступлении
сигнала FREEZE=1): при FRZ1,0=00 работа ADC продолжается, при FRZ1,0=11 ADC прекращает свою работу,
при FRZ1,0=10 работа ADC останавливается после завершения текущего преобразования.
15 |
|
|
7 |
|
STOP |
FRZ1-0 |
- |
SUPV |
ADTEST |
а) ADCMCR (адрес $*FF700)
б) ADCTL0 (адрес $*FF70A)
|
6 |
5 |
4 |
3 |
2 |
1 |
0 |
- |
SCAN |
MULT |
S8CM |
CD |
CC |
CB |
CA |
в) ADCTL1 (адрес $*FF70C)
г) ADSTAT (адрес $*FF70E)
Рис. 3.24. Форматы регистров управления модуля ADC
Содержимое регистра управления ADCTL0 (рис.3.24,б)
задает разрядность результата, определяет частоту преобразования и время выборки. Если в этом
регистре значение бита RES10=0, то аналого-цифровое преобразование дает 8-разрядный результат,
если RES10=1, то 10-разрядный результат. Поле PRS4-0 задает частоту преобразования Fa в
соответствии с табл.3.22. Поле STS1-0 определяет время выборки Ts, которое равно
Ts = ( Ns + 4 ) Ta,
где Ta = 1/Fa - период преобразования, значения параметра Ns даны в табл. 3.23. Полное время
преобразования составляет
Tg = Ts + Tr,
где значение Tr=8Ta при 8-разрядном результате, Tr=12Ta при 10-разрядном результате. Таким
образом, при 8-разрядном результате время преобразования Tg=(16-30)Ta, при 10-разрядном
результате Tg=(18-32)Ta.
Таблица 3.22. Частота аналого-цифрового преобразования Fa
PRS4-0 |
Частота Fa |
00000 |
00001 |
00010 |
11110 |
11111 |
|
резервировано |
Fт/4 |
Fт/6 |
Fт/62 |
Fт/64 |
|
Таблица 3.23. Значения параметра Ns
Содержимое регистра управления ADCTL1 (рис.3.24,в)
определяет тип выполняемого цикла и режим работы АЦП. При значении бита MULT=0 реализуется
одноканальный цикл преобразования, при MULT=1 - многоканальный цикл. При значении бита SCAN=0
преобразователь работает в одноцикловом режиме, при SCAN=1 - в многоцикловом режиме (режим
сканирования). Бит S8CM задает число преобразований, выполняемых в каждом цикле: четыре при
значении S8CM=0, восемь при S8CM=1. Биты CA,CB,CC,CD определяют выбор аналоговых входов (табл.
3.24, 3.25).
При одноканальном цикле преобразования (MULT=0) выбор входов и регистров
для размещения результатов производится в соответствии с табл.3.24. В каждом цикле для выбранного
входа производятся последовательно четыре (при S8CM=0) или восемь (при S8CM=1) преобразований,
результаты которых заносятся в регистры ADR0-3 или ADR0-7. Кроме сигналов на аналоговых входах
могут выбираться для преобразования опорные потенциалы Vов,Vон или их среднее значение (
Vов - Vон)/2.
Таблица 3.24. Выбор аналоговых входов и регистров результата
при одноканальных циклах преобразования
CD |
CC |
CB |
CA |
Аналоговые входы |
Размещение результатов |
S8CM=0 |
S8CM=1 |
|
|
|
|
AC0 |
AC1 |
AC3 |
AC4 |
AC5 |
AC6 |
AC7 |
|
ADR0-3 |
ADR0-3 |
ADR0-3 |
ADR0-3 |
ADR0-3 |
ADR0-3 |
ADR0-3 |
ADR0-3 |
|
ADR0-7 |
ADR0-7 |
ADR0-7 |
ADR0-7 |
ADR0-7 |
ADR0-7 |
ADR0-7 |
ADR0-7 |
|
|
|
|
|
резервировано |
резервировано |
резервировано |
резервировано |
|
ADR0-3 |
ADR0-3 |
ADR0-3 |
ADR0-3 |
|
ADR0-7 |
ADR0-7 |
ADR0-7 |
ADR0-7 |
|
|
|
|
|
Vов |
Vов |
(Vов - Vон)/2 |
резервировано (тест) |
|
ADR0-3 |
ADR0-3 |
ADR0-3 |
ADR0-3 |
|
ADR0-3 |
ADR0-3 |
ADR0-3 |
ADR0-3 |
|
При многоканальном цикле преобразования (MULT=1)
выбор входов и регистров размещения результатов производится в соответствии с табл.3.25. В
каждом цикле последовательно выполняются преобразования для четырех (при S8CM=0) или восьми
(при S8CM=1) аналоговых входов, результаты которых заносятся в регистры ADR0-3 или ADR0-7.
Для преобразования могут также выбираться потенциалы Vов,Vон или (Vов - Vон)/2.
При записи в регистр ADCTL0 нового содержимого выполнение текущего
преобразования прекращается, и модуль ADC останавливается. При записи в регистр ADCTL1
выполнение текущего преобразования прекращается, и ADC начинает новый цикл преобразований в
соответствии с поступившим содержимым. Таким образом операции записи в регистры управления
ADCTL0,1 служат для останова или запуска модуля ADC.
Таблица 3.25. Выбор аналоговых входов и регистров результата
при многоканальных циклах преобразования
S8CM |
CD |
CC* |
CB* |
CA* |
Аналоговые входы |
Размещение результатов |
1 |
0 |
0 |
X |
X |
AC0 AC1 AC2 AC3 |
ADR0 ADR1 ADR2 ADR3 |
1 |
0 |
1 |
X |
X |
AC4 AC5 AC6 AC7 |
ADR0 ADR1 ADR2 ADR3 |
1 |
1 |
0 |
X |
X |
резервировано резервировано резервировано резервировано |
ADR0 ADR1 ADR2 ADR3 |
1 |
1 |
1 |
X |
X |
Voв Vон (Vов - Vон)/2 резервировано (тест) |
ADR0 ADR1 ADR2 ADR3 |
1 |
0 |
X |
X |
X |
AC0 AC1 AC2 AC3 AC4 AC5 AC6 AC7 |
ADR0 ADR1 ADR2 ADR3 ADR4 ADR5 ADR6 ADR7 |
1 |
1 |
X |
X |
X |
резервировано резервировано резервировано резервировано Vов Vон (Vов - Vон)/2 резервировано (тест) |
ADR0 ADR1 ADR2 ADR3 ADR4 ADR5 ADR6 ADR7 |
*) Символ "Х" обозначает произвольное значение соответствующего сигнала
Модуль ADC не вырабатывает запроса прерывания, поэтому контроль
за его работой осуществляется путем программного опроса или с помощью периодического прерывания. При этом
процессор считывает и анализирует содержимое регистра состояния ADSTAT (рис.3.24,г), биты которого имеют
следующее назначение:
SCF - признак, который принимает значение SCF=1 после окончания первого цикла
преобразования (для одноциклового преобразования - после его завершения);
CCTR - поле указывает номер регистра ADR0-7, в котором будет располагаться
результат следующего преобразования;
CCF0-7 - поле, i-ый бит которого принимает значение CCFi=1 после записи результата
преобразования в регистр ADRi; после считывания этого регистра устанавливается значение CCFi=0.
Таким образом содержимое регистра ADSTAT дает необходимую информацию о ходе
выполнения преобразований в модуле ADC.
Модуль ADC может использоваться для цифрового ввода данных, который выполняется
путем считывания содержимого регистра PORTADA (адрес $*FF706, табл.3.21). При этом производится чтение
данных, поступающих на входы AC0-7. Одновременно может производиться и аналого-цифровое преобразование
потенциалов, установленных на этих входах. Если потенциалы на входах модуля не соответствуют стандартным
уровням V0 = - 0,3В ... 0,2Vп, V1 = 0,7Vп ... (Vп + 0,3В), то вводимые цифровые данные будут иметь
неопределенные значения.
|