Функционирование аналого-цифрового преобразователя
ADC преобразовывает аналоговое входное напряжение в 10-битовую цифровую величину методом последовательного приближения.
Минимальная величина представляет AGND, максимальная величина – напряжение на AREF-пине минус один LSB.
Аналоговый входной канал выбирается записью в биты MUX в ADMUX, тем самым подключается один из восьми входов аналогового мультиплексора ADC7..0 к входу ADC.
Аналого-цифровой преобразователь может работать в двух режимах: режиме однократного преобразования и режиме циклического преобразования. В режиме однократного преобразования каждое преобразование инициируется пользователем. В режиме циклического преобразования ADC осуществляет выборку и обновление содержимого регистра данных ADC непрерывно. Выбор режима производится битом ADFR регистра ADCSR.
Работа ADC разрешается установкой в состояние 1 бита ADEN в регистре ADCSR. Входные канальные выбора не вступят в работу, пока АДЕН установлен. ADC не поглощает мощность, когда АДЕН очищается, таким образом, рекомендуется выключать ADC прежде, чем ввести режим sleep.
Преобразование начинается с установки в состояние 1 бита начала преобразования ADSC. Этот бит находится в состоянии 1 в течение всего цикла преобразования и сбрасывается по завершении преобразования, аппаратно. Если в процессе выполнения преобразования выполняется смена канала данных, то ADC вначале закончит текущее преобразование и лишь потом выполнит переход к другому каналу.
Поскольку ADC формирует 10-разрядный результат, то по завершении преобразования результирующие данные размещаются в двух регистрах данных ADCH и ADCL. Для обеспечения соответствия результирующих данных считываемому уровню используется специальная логика защиты. Этот механизм работает следующим образом: при считывании данных первым должен быть считан регистр ADCL. Как только ADCL считан, обращение ADC к регистрам данных блокируется. Таким образом, если после считывания состояния ADCL, но до считывания ADCH, будет завершено следующее преобразование, ни один из регистров не будет обновлен и записанный ранее результат не будет искажен. Обращение ADC к регистрам ADCH и ADCL разрешается по завершении считывания содержимого регистра ADCH.
ADC имеет свое собственное прерывание, которое может быть активировано по завершении преобразования. Когда обращение ADC к регистрам запрещено, в процессе считывания регистров ADCL и ADCH прерывание будет активироваться, даже если результат будет потерян.
В режиме однократного преобразования по завершении процесса оцифровки происходит сброс флага ADSC. Вновь установленный программным способом флаг ADSC вызовет новое однократное преобразование.
В режиме циклического преобразования новое будет стартовать немедленно после завершения предыдущего преобразования, пока флаг ADSC остается установленным. Использование режима циклического преобразования и частоты оцифровки 200 kHz дает минимальное время преобразования с максимальным разрешением 65 мкс.
15.5. Регистр выбора мультиплексора ADC – ADMUX
На рис. 3.20 изображен регистр выбора канала мультиплексора.
$07(27)
биты 7 6 5 4 3 2 1 0
- | - | - | - | - | MUX2 | MUX1 | MUX0 |
Доступ Чт Чт Чт Чт Чт Чт/Зп Чт/Зп Чт/Зп Н. С. 0 0 0 0 0 0 0 0
Рис. 3.20. Регистр выбора канала мультиплексора
Биты 7…3 – Res: – зарезервированные биты.
Эти биты в микроконтроллерах AT90S4434/8535 зарезервированы и при считывании всегда покажут состояние 0.
Биты 2…0 – MUX2...MUX0: – биты выбора аналогового канала.
Содержимое этих битов определяет, какой из восьми аналоговых каналов (0–7) будет подключен к ADC (табл. 3.14).
Таблица 3.14
Определение входа АЦП
MUX2.0 | Вход | |
ADC0 | ||
ADC1 | ||
ADC2 | ||
ADC3 | ||
ADC4 | ||
ADC5 | ||
ADC6 | ||
ADC7 |
15.6. Регистр управления и состояния ADC – ADCSR
На рис. 3.21 изображен регистр управления и состояния ADC.
$06(26)
биты 7 6 5 4 3 2 1 0
ADEN | ADSC | ADFR | ADIF | ADIE | ADPS2 | ADPS1 | ADPS0 |
Доступ Чт/Зп Чт/Зп Чт/Зп Чт/Зп Чт/Зп Чт/Зп Чт/Зп Чт/Зп
Н. С. 0 0 0 0 0 0 0 0
Рис. 3.21. Регистр управления и состояния ADC
Бит 7 – ADEN: – разрешение ADC.
Установка данного бита в состояние 1 разрешает ADC. Очистка бита запрещает ADC. Запрещение ADC в процессе преобразования прекращает преобразование.
Бит 6 – ADSC: – запуск преобразования ADC.
В режиме однократного преобразования для запуска каждого цикла преобразования необходимо устанавливать бит ADSC в состояние 1. В циклическом режиме бит ADSC устанавливается в состояние 1 только при запуске первого цикла преобразования. Каждый раз после первой установки бита ADSC, выполненной после разрешения ADC или одновременно с разрешением ADC, будет выполняться пустое преобразование, предшествующее активируемому преобразованию. Это пустое преобразование активирует ADC. ADSC будет сохранять состояние 1 в течение всего цикла преобразования и сбрасывается по завершении преобразования. При выполнении пустого преобразования, предшествующего активируемому, бит ADSC остается установленным до завершения активируемого преобразования. Запись 0 в этот бит эффекта не оказывает.
Бит 5 – ADFR: – установка циклического режима работы ADC. При установленном в состояние 1 бите ADFR ADC будет работать в циклическом режиме. В этом режиме ADC производит выборки и обращения к регистрам непрерывно (одно за другим). Очистка бита приводит к прекращению циклического режима.
Бит 4 – ADIF: – флаг прерывания ADC.
Данный бит устанавливается в состояние 1 после завершения преобразования и обновления регистров данных. Прерывание по завершении преобразования ADC выполняется, если в состояние 1 установлены бит ADIE и I – бит регистра SREG. Бит ADIF сбрасывается аппаратно при выполнении подпрограммы обработки соответствующего вектора прерывания. Кроме того, бит ADIF может быть очищен записью во флаг логической 1. Бит 3 – ADIE: – разрешение прерывания ADC.
При установленных в состояние 1 бите ADIE и I – бите регистра SREG активируется прерывание по завершении преобразования ADC.
Биты 2…0 – ADPS2...ADPS0: – выбор коэффициента предварительного деления.
Выбор коэффициента предварительного деления
ADPS2 | ADPS1 | ADPS0 | Коэффициент деления |
Данные биты определяют коэффициент деления частоты XTAL для получения необходимой тактовой частоты ADC (табл. 3.15).