АНАЛОГО-ЦИФРОВОЙ ПРЕОБРАЗОВАТЕЛЬ МК 8ХC196КС/КD

Краткая характеристика

Модуль АDC (Analog-to-Digital Converter), структура которого представлена на рис. 8.1, преобразовывает аналоговый сигнал напряжения на входах в 8- или 10-битовое цифровое представление.

Модуль АDC содержит следующие основные компоненты:
- восемь аналоговых входов (ACH0-ACH7);
- восьмиканальный мультиплексор (8-Channel Analog Mux) для выбора одного из восьми входных каналов;
- устройство выборки и хранения (The Sample and Hold Circuit);
- 10-битовый регистр последовательного приближения (10-bit Successive Approximation);
- регистр AD_COMMAND, который управляет работой ADC;

- схему управления (Control Logic);
- двухбайтовый регистр AD_RESULT, в который помещаются результаты преобразования и информация о состоянии устройства;
- регистр AD_TIME, который содержит времена выборки и преобразования.

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

Рис. 8.1 Структура ADC микроконтроллера 8ХС196КС/KD

После задержки выход мультиплексора соединяется с конденсатором и остается соединенным с ним в течение определенного времени - времени выборки, когда конденсатор заряжается. Затем конденсатор отсоединяется от мультиплексора, и поэтому во время процесса преобразования изменения напряжения на входе не будут влиять на сохраненный заряд. Затем компаратор автообнуляется, и начинается преобразование.

Чтобы выполнить аналого-цифровое преобразование, ADC использует алгоритм последовательного приближения. Аппаратные средства преобразователя состоят из многозвенной схемы с 256 резисторами, компаратора, разделительных конденсаторов и 10-битового регистра последовательного приближения (SAR) с логической схемой, которая управляет процессом.

Многозвенная схема из резисторов обеспечивает шаги по 20 мВ (VREF=5.12 В), в то время как емкостная связь (разделительные конденсаторы) создает шаги по 5 мВ внутри напряжения 20 мВ этой многозвенной схемы. Следовательно, для сравнения с напряжением аналогового входа доступны 1024 опорных внутренних напряжений, что обеспечивает 10-битовый результат преобразования.

Преобразование последовательного приближения выполняется путем сравнения последовательности опорных напряжений с напряжением на аналоговом входе через двоичный поиск напряжения, которое наиболее близко соответствует напряжению на входе. Сначала проверяется среднее значение половины всех опорных напряжений. Это соответствует 10-битовому результату, где старший бит - нуль и все другие биты - 1 (0111.1111.11B). Если напряжение на аналоговом входе было меньше тестируемого напряжения, бит 10 SAR оставляется равным 0 и проверяется новое напряжение, равное 1/4 всей шкалы тестируемых напряжений (0011.1111.11B). Если напряжение на аналоговом входе было больше, чем напряжение теста, 9-й бит SAR устанавливается в 1. Затем для следующего теста очищается бит 8 0101.1111.11B. Этот двоичный поиск продолжается до тех пор, пока выполнится 10 (или 8) тестов правильный результат преобразования постоянно находится в SAR, откуда он может быть прочитан посредством программного обеспечения.

Результат равен отношению напряжения на аналоговом входе к аналоговому напряжению источника питания. Если отношение - 1.00, то результатом будут все единицы (1111.1111.11B).

Преимущество ADC последовательного приближения заключается в том, что для получения конечного результата нужно сделать относительно небольшое число опросов, следовательно, существенно убыстряется процесс аналого-цифрового преобразования.

ПРОГРАММИРОВАНИЕ

Управляющие регистры

Запрограммированы могут быть следующие параметры ADC:
- разрядность результата преобразования;
- номер входного канала;
- времена выборки и преобразования;
- 80196KВ-совместимый режим;
- способ запуска ADC (непосредственное начало преобразования или выбор блока быстрого вывода (HSO) или сервера периферийных транзакций для запуска АDC). Можно также разрешить или запретить генерирование прерывания по завершении преобразования АDC.

В таблице 8.1 приведены программируемые регистры, которые воздействуют на работу и функции ADC.

Таблица 8.1

Регистры управления и состояния ADC

МнемоникаОписание регистра
AD_COMMANDРегистр управления АDC. Этот регистр задает номер входного канала для АDC, определяет, будет ли преобразование начинаться непосредственно или через HSO блок, также задает разрядность результата преобразования.
AD_RESULTРегистр результата ADС. Этот регистр состоит из двух байтов. Старший байт содержит восемь старших битов преобразования. Младший байт указывает номер входного канала АDC, который был использован для преобразования показывает, закончено преобразование или оно продолжается, и содержит два младших бита результата 10-битового преобразования.
AD_TIMEВремя преобразования АDC. Если установлен бит регистра IOC2, этот регистр определяет времена выборки и преобразования.
IOC2Регистр управления 2. Этот регистр устанавливает способ задания времени преобразования АDC (в регистре AD_TIME или эмуляцией режимов быстрого и нормального преобразования микроконтроллера 80C196KВ).
INT_MASKРегистр маскирования прерываний. Этот регистр разрешает/запрещает прерывание "Завершение преобразования АDC" (INT01, 8002H). Установка первого бита этого регистра разрешает прерывание, сброс бита запрещает прерывание.
INT_PENDРегистр захвата прерываний. Когда установлен первый бит этого регистра, он указывает, что поступило прерывание "Завершение преобразования АDC". Бит сбрасывается, когда для обслуживания прерывание обращается к вектору в ячейке 8002H.

Задание времени выборки и времени преобразования

Два параметра: время выборки и время преобразования определяют время, требуемое для аналого-цифрового преобразования.

Время выборки (Tsam) - промежуток времени, когда напряжение аналогового входа поступает на конденсатор выборки (зарядка конденсатора).

Если это время слишком мало, конденсатор выборки будет заряжен не полностью; если время выборки слишком велико, входное напряжение может измениться и это будет причиной ошибок преобразования.

Время преобразования (Tconv) - промежуток времени, требуемый для того, чтобы преобразовать напряжение аналогового входа, сохраненное на конденсаторе выборки, в цифровое значение. Время преобразования должно быть достаточным для того, чтобы компаратор и схема управления определили и распознали напряжение. Чрезмерно длинные времена преобразования позволяют конденсатору выборки разряжаться, что ухудшает точность.

Времена выборки и преобразования назначаются по умолчанию в 80C196KВ-совместимом режиме или определяются в регистре AD_TIME в зависимости от того, как запрограммирован бит IOC2.3 (см. Приложение). Очистка третьего бита в регистре управления IOC2 (AD_TIME_ENA) включает 80C196KВ-совместимое преобразование. В 80C196KВ-совместимом режиме бит AD_FAST (IOC2.4) управляет временами выборки и преобразования. 80C196KВ-медленный режим использует 15 временных состояний для времени выборки и общее количество 158 временных состояний для всего преобразования. 80C196KВ-быстрый режим использует восемь временных состояний для времени выборки и общее количество 91 временного состояние для преобразования.

При использовании или быстрого, или медленного режима преобразуйте эти временные состояния в микросекунды, чтобы гарантировать, что значения времени выборки (Tsam) и времени преобразования (Tconv) при данной тактовой частоте представлены в допустимых пределах. При тактовой частоте 8 МГц одно временное состояние равно 250 нс. Согласно требованиям Tsam = 3 мкс (минимум), 10 мкс < Tconv < 20мкс.

Если установлен бит AD_TIME_ENA (IOC2.3), времена выборки (SAM) и преобразования (CONV) определяются регистром AD_TIME. В регистре AD_TIME программируется быстродействие (скорость) аналого-цифрового преобразования, которое определяется разрешающей способностью АDC и частотой тактового генератора.

Аббревиатура - AD_TIME

Размер - 1 байт

Находится по адресу 03H

Использовать для записи/чтения в окне HWindow 1

Чтобы определить оптимальные значения SAM и CONV, используются следующие формулы:

SAM = [(Tsam x Fosc) - 2 ] / 8,

CONV = [((Tconv x Fosc) - 3) / (2 x B) ] - 1,
где SAM = от 1 до 7;
CONV = от 2 до 31;
Tsam - время выборки в микросекундах (min 3 мкс);
Tconv - время преобразования в микросекундах (от 10 до 20 мкс);
Fosc - частота тактового генератора (MГц);
B - разрядность преобразования (8 или 10 разрядов).

Когда значения SAM и CONV известны, запишите их в регистр AD_TIME. Не записывайте в этот регистр во время процесса преобразования, иначе результаты будут непредсказуемыми.

Программирование регистра AD_COMMAND

В регистре AD_COMMAND задаются:
- номер аналогового входа;
- разрядность результата преобразования (8- или 10-битовое);
- способ запуска ADC (или непосредственно начинать преобразование, или определить быстродействующий модуль вывода (HSO) как устройство запуска преобразования).

Аббревиатура - AD_COMMAND

Размер - 1 байт

Находится по адресу 02H

Использовать для записи в окне HWindow 0

Использовать для чтения в окне HWindow 15

Биты 0-2 (AD_CHAN_SEL биты) задают номер аналогового входа (входы ACH0 - 000, ACH7 - 111).

Бит 3 (GO) задает способ запуска ADC:
1 - немедленное начало преобразования (через три временных состояния после выполнения команды);
0 - преобразование инициализируется HSO модулем #.

Бит 4 (AD_MODE) задает разрядность результата преобразования:
1 - 8-битовое преобразование;
0 - 10-битовое преобразование.

Биты 5 -7 зарезервированы (должны быть записаны "0").

# HSO модуль генерирует преобразование, выполняя команду (CMD_TAG=0FH). Процесс преобразования начинается, когда значение счетчика 1 увеличивается до запрограммированного. Это помогает прикладным программам попытаться приблизиться к спектрально-чистому осуществлению выборки, поскольку последовательные выборки, предоставляемые счетчиком 1, будут происходить с дисперсией около 50 нс (при стабильной частоте на выводе XTAL1).

Обратите внимание: запись третьего разряда (бит GO) активизирует ADC, следовательно, даже если разряд уже содержит требуемое значение, Вы должны снова его записать, чтобы начать новое преобразование.

Следующий фрагмент программы показывает, как использовать HSO модуль, чтобы он инициализировал преобразование.

LDB AD_COMMAND, XXXX1XXXB ; Установить GO бит;

LDB HSO_COMMAND, #START_AD ; Загрузить команду начала AD преобразования в регистр HSO_COMMAND;

ADD HSO_TIME, TIMER1, #TIME_DELAY ; Добавить 16-битовую константу к текущему cодержимому счетчика 1 и поместить результат в HSO_TIME

Модуль HSO позволяет нескольким командам START_AD загружаться в CAM. Однако будьте внимательными при записи команд HSO. Если счетчик 1 увеличился и начинается новое преобразование, в то время как предыдущее еще не закончилось, то старое преобразование прерывается и начинается новое.

PTS может начинать новое преобразование по прерыванию "Завершение аналого-цифрового преобразования" (INT01).

Прерывания

ADC по завершении преобразования генерирует прерывание "Завершение аналого-цифрового преобразования (INT01)". Этот вектор прерывания доступен из ячейки 8002H установкой бита INT_MASK.1 (AD_MASK). Бит INT_PEND.1 (AD_PEND) устанавливается всегда, когда преобразование завершается, даже если прерывание замаскировано. Этот бит сбрасывается, когда идет обращение по вектору 8002H или когда регистр захвата очищается.

Чтение результатов преобразования

Аббревиатура - AD_RESULT

Размер - 2 байта

Находится по адресу 03/02H

Использовать для записи в окне HWindow 15

Использовать для чтения в окне HWindow 0

Регистр AD_RESULT состоит из двух байтов.

Старший байт (03H) содержит восемь старших битов (AD_HI) аналого-цифрового преобразования.

Биты младшего байта (02H) указывают:
- биты 0-2 (AD_CHAN_NUM) - на номер канала ADC, который использовался для преобразования ;
- бит 3 ( AD_STATUS) - закончилось ли преобразование в настоящее время. 1- преобразование еще не закончилось (установка этого бита может занимать до восьми временных состояний, так что не тестируйте этот бит по крайней мере восемь временных состояний после старта преобразования); 0 - преобразование закончилось;
- бит 4 (AD_MODE_ST) - на разрядность закончившегося преобразования: 1 - 8-битовое преобразование, 0 - 10-битовое преобразование;
- бит 5 зарезервирован;
- биты 6,7 содержат два младших бита (AD_RESULT0, AD_RESULT1) 10- битового аналого-цифрового преобразования.

Регистр AD_RESULT очищается, когда начинается новое преобразование, поэтому во избежание потери данных перед стартом следующего преобразования следует прочитать оба байта.

<<< Содержание >>>