Аналого-цифровой преобразователь в составе микроконтроллера
Структура и управление АЦП
Микроконтроллеры ATmega16 оснащены 10-разрядным АЦП последовательного приближения. Основные параметры этого модуля следующие:
· абсолютная погрешность: ±2 МЗР;
· интегральная нелинейность: ±0.5 МЗР;
· быстродействие до 15 тыс. выборок/с.
На входе модуля АЦП всех моделей имеется 8-канальный аналоговый мультиплексор, предоставляющий в распоряжение пользователя 8 каналов с несимметричными входами.
В модели ATmega16 входы АЦП могут также объединяться попарно для формирования в общей сложности до 13 каналов с дифференциальным входом. Два канала при этом имеют возможность 20 - и 200-кратного предварительного усиления входного сигнала. При коэффициентах усиления 1х и 20х действительная разрешающая способность – 8 разрядов, а при коэффициенте 200х – 7 разрядов.
В качестве источника опорного напряжения для АЦП может использоваться как напряжение питания микроконтроллера, так и внутренний либо внешний источник напряжения.
АЦП может функционировать в двух режимах:
· режим одиночного преобразования, когда запуск каждого преобразования инициируется пользователем;
· режим непрерывного преобразования, когда выполняется непрерывно через определенные интервалы времени.
Для управления модулем АЦП в микроконтроллере ATmega16 предусмотрены следующие регистры (табл. 28.2):
Таблица 28.2
Структура регистров управления модулем АЦП
Бит
|
Название
|
Описание назначения
|
ADCSR – регистр управления и состояния
|
7
|
ADEN
|
Разрешение АЦП (1 – включено, 0 – выключено)
|
6
|
ADSC
|
Запуск преобразования АЦП (1 – начать преобразование, запись 0 в этот бит эффекта не оказывает.)
|
5
|
ADATE
|
Выбор режима работы АЦП (0 – одиночный режим, 1 – циклический режим или запуск от прерывания)
|
4
|
ADIF
|
Флаг прерывания АЦП (Устанавливается в 1 по завершению цикла преобразования).
|
3
|
ADIE
|
Разрешение прерывания АЦП (При установленных в состояние 1 бите ADIE и бите I регистра SREG возникает прерывание по завершению преобразования).
|
2…0
|
ADPS2..ADPS0
|
Задание коэффициента деления тактовой частоты микроконтроллера для получения тактовой частоты АЦП
|
Окончание табл. 28.2
Бит
|
Название
|
Описание назначения
|
ADMUX– Регистр выбора мультиплексора АЦП
|
7,6
|
REFS1, REFS0
|
Выбор источника опорного напряжения (в таблице биты обозначены как S1 и S0)
S1
|
S0
|
Источник опорного напряжения
|
0
|
0
|
Внешний ИОН, подключенный к выводу AREF;
внутренний ИОН отключен
|
0
|
1
|
Напряжение питания AVcc*
|
1
|
0
|
Зарезервировано
|
1
|
1
|
Внутренний ИОН напряжением 2.56 В
|
|
5
|
ADLAR
|
Выравнивание результата преобразования (рис. 3.2)
|
4…0
|
MUX4..MUX0
|
Биты выбора аналогового канала и коэффициента предварительного усиления (табл.3.15).
|
Регистр специальных функций - SFIOR
|
7..5
|
ADTS2.. ADTS0
|
Выбор источника запуска преобразования АЦП при ADATE=1 (в таблице биты обозначены как 2,1 и 0)
2
|
1
|
0
|
Источник стартового сигнала
|
0
|
0
|
0
|
Режим непрерывного преобразования
|
0
|
0
|
1
|
Прерывание от аналогового компаратора
|
0
|
1
|
0
|
Внешнее прерывание INT0
|
0
|
1
|
1
|
Событие «Совпадение» таймера/счетчика T0
|
1
|
0
|
0
|
Переполнение таймера/счетчика T0
|
1
|
0
|
1
|
Событие «Совпадение В» таймера/счетчика T1
|
1
|
1
|
0
|
Переполнение таймера/счетчика T1
|
1
|
1
|
1
|
Событие «Захват» таймера/счетчика T1
|
|
4
|
ADHSM
|
Выбор режима ускоренного преобразования
|
3..0
|
–
|
Не используются
|
Регистры данных АЦП – ADCL и ADCH – фиксируют результат преобразования в зависимости от настройки ADLAR (см. рис. 28.1).
Биты результата преобразования
-
|
-
|
-
|
-
|
-
|
-
|
9
|
8
|
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
При ADLAR=0
|
ADCH ADCL
Биты результата преобразования
9
|
8
|
7
|
6
|
5
|
4
|
3
|
2
|
|
1
|
0
|
-
|
-
|
-
|
-
|
-
|
-
|
При ADLAR=1
|
ADCH ADCL
Рис. 28.1. Принцип выравнивания результата преобразования АЦП
Работа аналого-цифрового преобразователя
Работа АЦП разрешается установкой в состояние 1 бита ADEN в регистре ADCSR. Если АЦП будет выключен во время цикла преобразования, то преобразование завершено не будет (в регистрах данных АЦП останется результат предыдущего преобразования).
В режиме циклического преобразования (ADATE=1) запуск каждого следующего преобразования осуществляется автоматически после окончания текущего. В режиме одиночного преобразования оно осуществляется по команде пользователя.
Преобразование начинается с установки в состояние «1» бита начала преобразования ADSC регистра ADCSR. Этот бит находится в состоянии «1» в течение всего цикла преобразования и сбрасывается, по завершении преобразования аппаратно. Запуск преобразования по прерыванию осуществляется при установке в «1» флага выбранного прерывания. Разряд ADSC при этом аппаратно устанавливается в «1». Запуск преобразования в этих режимах также может быть осуществлен записью «1» в разряд ADSC.
Длительность цикла составляет около 15 тактов. Когда преобразование завершается, разряд ADSC аппаратно сбрасывается в «0» и результат преобразования сохраняется в регистрах данных АЦП. Одновременно устанавливается флаг прерывания ADIF регистра ADCSR и генерируется запрос на прерывание. Разрешение прерывания осуществляется установкой в «1» разряда ADIE регистра ADCSR при установленном флаге I регистра SREG.
Поскольку АЦП формирует 10-разрядный результат, то данные размещаются в двух регистрах данных ADCH и ADCL. При этом используется специальная логика защиты: при считывании данных первым должен быть считан регистр ADCL, после чего обращение ADC к регистрам данных блокируется. Обращение АЦП к ADCH и ADCL разрешается по завершении считывания содержимого регистра ADCH.
Если результат преобразование выравнивается влево и достаточно точности 8-разрядного значения, для получения результата можно прочитать только содержимое регистра ADCH.
Для каналов с несимметричным входом результат преобразования определяется выражением , где – значение входного напряжения, а – величина опорного напряжения.
Для каналов с дифференциальным входом результат преобразования определяется выражением , где – величина напряжения на положительном входе, – величина напряжения на отрицательном входе, – коэффициент усиления. Результат преобразования представляется в дополнительном коде.
Наибольшая точность преобразования достигается, если АЦП работает с тактовой частотой в диапазоне от 50 до 200 кГц.
Выводы микроконтроллера, подключенные ко входам АЦП, определяются состоянием разрядов MUX4..0 регистра ADMUX. Для каналов с дифференциальным входом указанные разряды определяют также коэффициент предварительного усиления входного сигнала. Принцип выбора входного канала представлен в табл.28.3.
Состояние разрядов MUX4..0 можно изменить в любой момент, однако, если это будет сделано во время цикла преобразования, смена канала произойдет только после завершения преобразования.
Таблица 28.3
Управление входным мультиплексором в модели ATmega16
MUX4..MUX0
|
Несимметричный
вход
|
Дифференциальный вход
|
Усиление
|
(положительный)
|
(отрицательный)
|
00000
|
ADC0
|
Не применимо
|
00001
|
ADC1
|
00010
|
ADC2
|
00011
|
ADC3
|
00100
|
ADC4
|
00101
|
ADC5
|
00110
|
ADC6
|
00111
|
ADC7
|
01000
|
Не
применимо
|
ADC0
|
ADC0
|
10x
|
01001
|
ADC1
|
ADC0
|
10x
|
01010
|
ADC0
|
ADC0
|
200x
|
01011
|
ADC1
|
ADC0
|
200x
|
01100
|
ADC2
|
ADC2
|
10x
|
01101
|
ADC3
|
ADC2
|
10x
|
01110
|
ADC2
|
ADC2
|
200x
|
01111
|
ADC3
|
ADC2
|
200x
|
10000
|
ADC0
|
ADC1
|
1x
|
10001
|
ADC1
|
ADC1
|
1x
|
10010
|
ADC2
|
ADC1
|
1x
|
10011
|
ADC3
|
ADC1
|
1x
|
10100
|
ADC4
|
ADC1
|
1x
|
10101
|
ADC5
|
ADC1
|
1x
|
10110
|
ADC6
|
ADC1
|
1x
|
10111
|
ADC7
|
ADC1
|
1x
|
11000
|
ADC0
|
ADC2
|
1x
|
11001
|
ADC1
|
ADC2
|
1x
|
11010
|
ADC2
|
ADC2
|
1x
|
11011
|
ADC3
|
ADC2
|
1x
|
11100
|
ADC4
|
ADC2
|
1x
|
11101
|
ADC5
|
ADC2
|
1x
|
11110
|
1.22 В
|
Не применимо
|
11111
|
0 В (GND)
|
|