![]() |
|
АНАЛОГО-ЦИФРОВОЙ ПРЕОБРАЗОВАТЕЛЬ МК 8ХC196КС/КDКраткая характеристикаМодуль АDC (Analog-to-Digital Converter), структура которого представлена на рис. 8.1, преобразовывает аналоговый сигнал напряжения на входах в 8- или 10-битовое цифровое представление. Модуль АDC содержит следующие основные компоненты:
- схему управления (Control Logic);
Если А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:
В таблице 8.1 приведены программируемые регистры, которые воздействуют на работу и функции ADC. Таблица 8.1 Регистры управления и состояния ADC
Задание времени выборки и времени преобразованияДва параметра: время выборки и время преобразования определяют время, требуемое для аналого-цифрового преобразования. Время выборки (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 и CONV известны, запишите их в регистр AD_TIME. Не записывайте в этот регистр во время процесса преобразования, иначе результаты будут непредсказуемыми. Программирование регистра AD_COMMANDВ регистре AD_COMMAND задаются:
Аббревиатура - AD_COMMAND Размер - 1 байт Находится по адресу 02H Использовать для записи в окне HWindow 0 Использовать для чтения в окне HWindow 15
![]() Биты 0-2 (AD_CHAN_SEL биты) задают номер аналогового входа (входы ACH0 - 000, ACH7 - 111). Бит 3 (GO) задает способ запуска ADC:
Бит 4 (AD_MODE) задает разрядность результата преобразования:
Биты 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) указывают:
Регистр AD_RESULT очищается, когда начинается новое преобразование, поэтому во избежание потери данных перед стартом следующего преобразования следует прочитать оба байта. |