ATmega16 (32): аналого-цифровой преобразователь (ADC) |
![]() |
Добавил(а) microsin | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Перевод даташита Atmel на микроконтроллер ATmega16, ATmega32, касающийся ADC. [Отличительные особенности]
Замечание: дифференциальные каналы не тестировались для микроконтроллеров в корпусе PDIP40. Работа в таком режиме гарантируется только для микроконтроллеров в корпусах TQFP и QFN/MLF. ATmega16 содержит 10-разр. ADC последовательного приближения. ADC связан с 8-канальным аналоговым мультиплексором, 8 однополярных (недифференциальных) входов которого связаны с ножками порта A. Недифференциальные входы измеряют потенциал напряжения относительно провода 0 В (т. е. связанного с GND). ADC также поддерживает 16 вариантов конфигурации для дифференциальных входов. Два дифференциальных входа (ADC1, ADC0 и ADC3, ADC2) содержат каскад со ступенчатым программируемым усилением: 0 дБ (1x), 20 дБ (10x), или 46 дБ (200x) – непосредственно перед аналого-цифровым преобразованием. Семь дифференциальных аналоговых каналов используют общий инвертирующий вход (ADC1), а все остальные входы ADC выполняют функцию неинвертирующих входов. Если выбрано усиление 1x или 10x, то можно ожидать 8-разрядное разрешение, а если 200x, то 7-разрядное. ADC содержит УВХ (Sample and Hold circuit, устройство выборки-хранения), которое поддерживает на постоянном уровне напряжение на входе ADC во время преобразования. Функциональная схема ADC показана на рисунке 98. ADC имеет отдельный вывод питания AVCC (аналоговое питание). AVCC не должен отличаться более чем на ±0.3В от VCC. См. параграф “Подавитель шумов ADC (ADC Noise Canceler)”, где приведены рекомендации по подключению этого вывода. В качестве внутреннего опорного напряжения может выступать напряжение от внутреннего ИОН (Reference Voltage, Источник Опорного Напряжения) на 2.56В или напряжение AVCC. Для уменьшения шума к выводу AREF может быть подключен внешний блокировочный конденсатор. Рисунок 98. Блоковая схема ADC. [Принцип действия] ADC преобразовывает входное аналоговое напряжение в 10-разр. код методом последовательных приближений. Минимальное значение соответствует уровню GND, а максимальное уровню AREF минус 1 мл. разр. К выводу AREF по выбору может быть подключено напряжение AVCC или внутренний ИОН на 2.56В путем записи соответствующих значений в биты REFSn регистра ADMUX. Несмотря на то, что ИОН на 2.56В находится внутри микроконтроллера, к его выходу может быть подключен блокировочный конденсатор для снижения чувствительности к шумам, т.к. он связан с выводом AREF. Канал аналогового ввода и каскад дифференциального усиления выбираются путем записи бит MUX в регистр ADMUX. В качестве однополярного аналогового входа ADC может быть выбран один из входов ADC0…ADC7, а также GND и выход фиксированного источника напряжения (fixed bandgap voltage reference). В режиме дифференциального ввода предусмотрена возможность выбора инвертирующих и неинвертирующих входов к дифференциального усилителя. Если выбран дифференциальный режим аналогового ввода, то дифференциальный усилитель будет усиливать разность напряжений между выбранной парой входов на заданный коэффициент усиления. Усиленное таким образом значение поступает на аналоговый вход ADC. Если выбирается однополярный режим аналогового ввода, то каскад усиления пропускается. Работа ADC разрешается путем установки бита ADEN в регистре ADCSRA. Выбор опорного источника и канала преобразования не производят эффекта до установки ADEN. Если ADEN = 0, то ADC не потребляет ток, поэтому, при переводе в экономичные режимы сна рекомендуется предварительно отключить ADC. ADC генерирует 10-разрядный результат, который помещается в пару регистров данных ADC ADCH и ADCL. По умолчанию результат преобразования размещается в младших 10-ти разрядах 16-разр. слова (выравнивание справа), но может быть опционально размещен в старших 10-ти разрядах (выравнивание слева) путем установки бита ADLAR в регистре ADMUX. Практическая полезность представления результата с выравниванием слева существует, когда достаточно 8-разрядное разрешение, т.к. в этом случае необходимо считать только регистр ADCH. В другом же случае необходимо первым считать содержимое регистра ADCL, а затем ADCH, чем гарантируется, что оба байта являются результатом одного и того же преобразования. Как только выполнено чтение ADCL, блокируется доступ к регистрам данных со стороны ADC. Это означает, что если считан ADCL и преобразование завершается перед чтением регистра ADCH, то ни один из регистров не может модифицироваться и результат преобразования теряется. После чтения ADCH доступ к регистрам ADCH и ADCL со стороны ADC снова разрешается. ADC генерирует собственный запрос на прерывание по завершении преобразования. Если между чтением регистров ADCH и ADCL запрещен доступ к данным для ADC, то прерывание возникнет, даже если результат преобразования будет потерян. [Запуск преобразования] Одиночное преобразование запускается путем записи лог. 1 в бит запуска преобразования ADC ADSC (регистр ADCSRA). Данный бит остается в высоком состоянии в процессе преобразования и сбрасывается по завершении преобразования. Если в процессе преобразования переключается канал аналогового ввода, то ADC автоматически завершит текущее преобразование прежде, чем переключит канал. Другой вариант запуска преобразования – автоматический запуск по сигналу из различных источников. В режиме автоматического перезапуска ADC непрерывно оцифровывает аналоговый сигнал и обновляет регистр данных ADC. Данный режим задается путем записи лог. 1 в бит ADATE регистра ADCSRA. Можно также выбрать источник перезапуска битами ADTS регистра SFIOR (см. описание битов ADTS для списка источников запуска). Когда происходит положительный перепад выбранного сигнала перезапуска, сбрасывается прескалер ADC и запускается преобразование. Это предоставляет метод запуска преобразования в фиксированные интервалы времени. Если сигнал запуска все еще установлен, когда преобразование завершено, новое преобразование не запускается. Если происходит положительный перепад выбранного сигнала перезапуска происходит во время преобразования, этот перепад будет игнорирован. Внимание – флаг прерывания ADIF будет все равно установлен, даже если соответствующее прерывание запрещено или бит глобального разрешения прерываний регистра SREG сброшен, при этом преобразование запустится без генерации прерывания. Однако флаг прерывания ADIF должен быть очищен, чтобы запустилось новое преобразование при следующем событии прерывания. Рисунок 99. Логика автоматического запуска ADC. Использование флага прерывания ADC (ADIF) как источника запуска преобразования запускает новое преобразование, как только текущее преобразование завершается. Таким образом, ADC работает в режиме автозапуска - непрерывно оцифровывает аналоговый сигнал и обновляет регистр данных ADC. Первое преобразование инициируется путем записи лог. 1 в бит ADSC регистра ADCSRA. В данном режиме ADC выполняет последовательные преобразования, независимо от того - сброшен флаг прерывания ADC ADIF или нет. Если разрешен автозапуск (установлен бит ADATE регистра ADCSRA), одиночные преобразования могут запускаться путем записи лог. 1 в бит ADSC регистра ADCSRA. Бит ADSC может использоваться для определения, происходит или нет в настоящий момент преобразование. Бит ADSC будет читаться как 1 во время выполнения преобразования, независимо от того, как оно было запущено. [Предделитель (прескалер) и временная диаграмма преобразования] Рисунок 100. Прескалер ADC. Если требуется максимальная разрешающая способность (10 разрядов), то тактовая частота для ADC последовательного приближения должна быть в диапазоне 50…200 кГц. Если достаточно разрешение менее 10 разрядов, то для получения более высокой частоты преобразования тактовая частота ADC может быть установлена свыше 200 кГц. Модуль ADC содержит предделитель, который формирует частоты тактов ADC из любых частот ядра микроконтроллера свыше 100 кГц. Коэффициент деления устанавливается с помощью бит ADPS в регистре ADCSRA. Предделитель начинает счет с момента включения ADC установкой бита ADEN в регистре ADCSRA. Предделитель работает, пока бит ADEN = 1, и постоянно сброшен, когда ADEN=0. Если инициируется преобразование не в дифференциальном режиме установкой бита ADSC в регистре ADCSRA, то преобразование начинается со следующего нарастающего фронта тактового сигнала ADC. Особенности временной диаграммы в режиме дифференциального преобразования представлены в разделе “Каналы дифференциального усиления”. Нормальное преобразование требует 13 тактов синхронизации ADC. Первое преобразование после включения ADC (установка ADEN в ADCSRA) требует 25 тактов синхронизации ADC за счет необходимости инициализации аналоговой схемы. После начала нормального преобразования на выборку-хранение затрачивается 1.5 такта синхронизации ADC, а после начала первого преобразования – 13,5 тактов. По завершении преобразования результат помещается в регистры данных ADC и устанавливается флаг ADIF. В режиме одиночного преобразования одновременно сбрасывается бит ADSC. Программно бит ADSC может быть снова установлен и новое преобразование будет инициировано первым нарастающим фронтом тактового сигнала ADC. В режиме автоматического перезапуска прескалер (предделитель) сбрасывается при каждом событии запуска. В этом режиме схема выборки-хранения требует 2 такта ADC после нарастающего фронта сигнала запуска. 3 дополнительных цикла ядра микроконтроллера используется для логики синхронизации. В дифференциальном режиме, если используется автозапуск от любого источника, кроме «завершение преобразования ADC», каждое преобразование требует 25 тактов ADC. Это происходит из-за того, что ADC должен быть запрещен и снова разрешен для каждого преобразования. В режиме постоянного преобразования (Free Running) новое преобразование начинается сразу по завершении предыдущего, пока бит ADSC остается в высоком состоянии. Времена преобразования для различных режимов преобразования представлены в таблице 81. Рисунок 101. ВременнАя диаграмма ADC, первое преобразование (режим одиночного преобразования). Рисунок 102. ВременнАя диаграмма ADC, одиночное преобразование. Рисунок 103. ВременнАя диаграмма ADC, преобразование с автозапуском. Рисунок 104. ВременнАя диаграмма ADC, непрерывное преобразование (Free Running conversion). Таблица 81. Время преобразования ADC.
[Каналы дифференциального усиления] Если используются каналы дифференциального усиления, то необходимо принять во внимание некоторые особенности. Дифференциальные преобразования синхронизированы внутренней тактовой частотой CKADC2, частого которого равна половине частоты синхронизации ADC. Данная синхронизация выполняется автоматически интерфейсом ADC таким образом, чтобы выборка-хранение инициировалась определенным фазой CKADC2. Если преобразование (все одиночные преобразования и первое преобразование в режиме автоматического перезапуска) инициировалось пользователем, когда CKADC2 находился в низком лог. состоянии, то его длительность будет эквивалента недифференциальному преобразованию (13 тактов синхронизации ADC относительно следующего такта). Если преобразование инициируется пользователем, когда CKADC2 равен лог. 1 , оно будет длиться 14 тактов синхронизации ADC вследствие работы механизма синхронизации. В режиме автоматического перезапуска (Free Running mode) новое преобразование инициируется сразу по завершении предыдущего, а т.к. в этот момент CKADC2 равен лог. 1, то все преобразования, которые были автоматически перезапущены (т. е. все, кроме первого), будут длиться 14 тактов синхронизации ADC. Усилительный каскад оптимизирован под частотный диапазон до 4 кГц для любых коэффициентов усиления. Усиление сигналов более высоких частот будет нелинейным. Поэтому, если входной сигнал содержит частотные составляющие выше частотного диапазона усилительного каскада, то необходимо установить внешний фильтр низких частот. Обратите внимание, что частота синхронизации ADC не связана с ограничением по частотному диапазону усилительного каскада. Например, период синхронизации ADC может быть 6 мкс, при котором частота преобразования канала равна 12 тыс. преобр. в секунду, независимо от частотного диапазона этого канала. Если используются каналы дифференциального усиления и преобразование запущено автоматическим запуском, то ADC должен быть выключен между преобразованиями. При использовании автоматического запуска прескалер ADC сброшен перед запуском преобразования. Поскольку каскад усиления зависит от стабильной тактовой частоты ADC перед преобразованием, то это преобразование будет недействительным. Путем запрещения и разрешения ADC между каждыми преобразованиями (с помощью записи 0 и 1 соответственно в бит ADEN регистра ADCSRA) выполняются только расширенные преобразования. Результат расширенного преобразования будет действительным. См. подробнее раздел «Предделитель (прескалер) и временная диаграмма преобразования». [Изменение канала или выбор источника опорного напряжения] Биты MUXn и REFS1:0 в регистре ADMUX поддерживают одноступенчатую буферизацию через временный регистр. Этим гарантируется, что новые настройки канала преобразования и опорного источника вступят в силу в безопасный момент для преобразования. Любые изменения канала и опорного источника постоянно вступают в силу в момент начала преобразования. Как только начинается процесс преобразования доступ к изменению канала и опорного источника блокируется, чем гарантируется достаточность времени на преобразование для ADC. Непрерывность модификации восстанавливается на последнем такте ADC перед завершением преобразования (при установке флага ADIF в регистре ADCSRA). Обратите внимание, что преобразование начинается следующим нарастающим фронтом тактового сигнала ADC после записи ADSC. Таким образом, пользователю не рекомендуется записывать новое значение канала или опорного источника в ADMUX до завершения 1-го такта синхронизации ADC после записи ADSC. Если используется автозапуск преобразования, то нельзя определить точное время события запуска. Необходимо внимательно обновлять регистр ADMUX, чтобы определить, какое преобразование будет соответствовать новым установкам. Если оба бита ADATE и ADEN установлены в лог. 1, событие прерывания может произойти в любой момент. Если регистр ADMUX был изменен в этот период, то пользователь не может сказать, произошло это преобразование на основе старых или новых установок. В этом случае ADMUX должен модифицироваться следующими способами:
Когда регистр ADMUX обновляется с соблюдением этих условий, то новые установки начнут работать во время следующего преобразования ADC. Особые меры необходимо предпринять при изменении дифференциальных каналов. Как только осуществлен выбор дифференциального канала, усилительному каскаду требуется 125 мкс для стабилизации нового значения. Следовательно, после переключения дифференциального канала в течение первых 125 мкс не должно стартовать преобразование. Если же в этот период преобразования все-таки выполнялись, то их результат необходимо игнорировать. Такую же задержку на установление необходимо ввести при первом дифференциальном преобразовании после изменения источника опорного напряжения для ADC (путем изменения бит REFS1:0 в ADMUX). [Входные каналы ADC] При переключении входного канала необходимо учесть некоторые рекомендации, которые исключат некорректность переключения. В режиме одиночного преобразования переключение канала необходимо выполнять перед началом преобразования. Переключение канала может произойти только в течение одного такта синхронизации ADC после записи лог. 1 в ADSC. Однако самым простым методом является ожидание завершения преобразования перед выбором нового канала. В режиме автоматического перезапуска (Free Running mode) канал необходимо выбирать перед началом первого преобразования. Переключение канала происходит аналогично - в течение одного такта синхронизации ADC после записи лог. 1 в ADSC. Но самым простым методом является ожидание завершения первого преобразования, а затем переключение канала. Поскольку следующее преобразование уже запущено автоматически, то следующий результат будет соответствовать предыдущему каналу. Последующие преобразования отражают результат для нового выбранного канала. При переключении на дифференциальный канал первое преобразование будет характеризоваться плохой точностью из-за переходного процесса в схеме автоматической регулировки смещения. Следовательно, первый результат такого преобразования рекомендуется игнорировать. [Источник опорного напряжения ADC] Источник опорного напряжения (ИОН) для ADC (VREF) определяет диапазон преобразования ADC. Если в недифференциальном режиме уровень сигнала свыше VREF, то результатом преобразования будет 0x3FF. В качестве VREF могут выступать AVCC, внутренний ИОН 2,56В или внешний ИОН, подключенный к выв. AREF. AVCC подключается к ADC через пассивный ключ. Внутреннее опорное напряжение 2,56В генерируется внутренним эталонным источником (Bandgap Reference) VBG, буферизованного внутренним усилителем. В любом случае внешний вывод AREF связан непосредственно с ADC, и поэтому можно снизить влияние шумов на опорный источник за счет подключения конденсатора между выводом AREF и общим проводом (GND). Напряжение VREF также может быть измерено на выводе AREF высокоомным вольтметром. Обратите внимание, что VREF является высокоомным источником, и поэтому внешне к нему может быть подключена только емкостная нагрузка. Если пользователь использует внешний опорный источник, подключенный к выв. AREF, то не допускается использование другой опции опорного источника, т. к. это приведет к шунтированию внешнего опорного напряжения. Если к выв. AREF не приложено напряжение, то пользователь может выбрать AVCC и 2.56В качестве опорного источника. Результат первого преобразования после переключения опорного источника может характеризоваться плохой точностью и пользователю рекомендуется его игнорировать. Если используются дифференциальные каналы, то выбранный опорный источник должен быть меньше уровня AVCC, что показано в табл. 122. Часть таблицы 122. Уровень опорного напряжения ADC.
[Подавитель шумов ADC (ADC Noise Canceler)] ADC имеет встроенный подавитель шумов, который позволяет производить преобразование в режиме сна (sleep mode), что уменьшает влияние шумов, вызванных работой ядра ЦПУ и периферийных устройств ввода-вывода. Подавитель шумов может быть использован совместно с режимами снижения шумов ADC (ADC Noise Reduction) и в режиме холостого хода (Idle mode). При использовании данной функции необходимо придерживаться следующей процедуры:
Обратите внимание, что ADC не отключается автоматически при переводе во все другие режимы сна, кроме режима холостого хода (Idle mode) и режима снижения шумов ADC (ADC Noise Reduction mode). Поэтому пользователь должен предусмотреть запись лог. 0 в бит ADEN перед переводом в такие режимы сна, во избежание чрезмерного энергопотребления. Если работа ADC была разрешена в таких режимах сна и пользователь желает выполнить дифференциальное преобразование, то после пробуждения ADC нужно выключить, а затем включить для инициации расширенного преобразования, чем будет гарантировано получение действительного результата. [Схема аналогового входа] Схема аналогового входа для недифференциальных каналов представлена на рисунке 105. Независимо от того, какой канал подключен к ADC, аналоговый сигнал, подключенный к выв. ADCn, нагружается емкостью вывода и входным сопротивлением утечки. После подключения канала к ADC входной аналоговый сигнал будет связан с конденсатором выборки-хранения через последовательный резистор, сопротивление которого эквивалентно всей входной цепи. ADC оптимизирован под аналоговые сигналы с выходным сопротивлением 10 кОм или меньше. Если используется такой источник сигнала, то время выборки незначительно. Если же используется источник с более высоким входным сопротивлением, то время выборки будет определяться временем, которое требуется для зарядки конденсатора выборки-хранения от источника аналогового сигнала. Рекомендуется использовать источники только с малым выходным сопротивлением и медленно изменяющимися сигналами, т.к. в этом случае будет достаточно быстрым заряд конденсатора выборки-хранения. С каналами с дифференциальным усилением рекомендуется использовать сигналы с внутренним сопротивлением до нескольких сотен кОм. Следует предусмотреть, чтобы в предварительных каскадах формирования аналогового сигнала ко входу ADC не вносились частоты выше fADC/2, в противном случае результат преобразования может быть некорректным (связано с условием Найквиста/Котельникова). Если вероятность проникновения высоких частот существует, то рекомендуется перед ADC установить фильтр низких частот. Рисунок 105. Схема аналогового входа [Рекомендации по снижению влияния шумов на результат преобразования] Работа цифровых узлов внутри и снаружи микроконтроллера связана с генерацией электромагнитных излучений и шумов, которые могут негативно сказаться на точность измерения аналогового сигнала. Если точность преобразования является критическим параметром, то уровень шумов можно снизить, придерживаясь следующих рекомендаций:
Рисунок 106. Подключение питания к ADC [Схемы компенсации смещения] Усилительный каскад имеет встроенную схему компенсации смещения (offset cancellation circuit), которая стремится максимально приблизить к нулю смещение дифференциального измерения. Оставшееся смещение можно измерить, если в качестве дифференциальных входов ADC выбрать один и тот же вывод микроконтроллера. Измеренное таким образом остаточное смещение можно программно вычесть из результата преобразования. Использование программного алгоритма коррекции смещения позволяет уменьшить смещение ниже одного мл. разр. [Определения погрешности (точности) аналого-цифрового преобразования] n-разрядный однополярный ADC преобразовывает напряжение линейно между GND и VREF с количеством шагов 2n (мл. разрядов). Минимальный код = 0, максимальный = 2n-1. Основные погрешности преобразования являются отклонением реальной функции преобразования от идеальной. К ним относятся: Смещение – отклонение первого перехода (от кода 0x000 на код 0x001) по сравнению с идеальным переходом (т. е. при 0.5 мл. разр.). Идеальное значение: 0 мл. разр. Рисунок 107. Погрешность смещения. Погрешность усиления. После корректировки смещения погрешность усиления представляет собой отклонение последнего перехода (с 0x3FE на 0x3FF) от идеального перехода (т. е. отклонение при максимальном значении минус 1.5 мл. разр.). Идеальное значение: 0 мл. разр. Рисунок 108. Погрешность усиления
Интегральная нелинейность (Integral Non-linearity, INL). После корректировки смещения и погрешности усиления INL представляет собой максимальное отклонение реальной функции преобразования от идеальной для любого кода. Идеальное значение ИНЛ = 0 мл. разр. Рисунок 109. Интегральная нелинейность (ИНЛ) Дифференциальная нелинейность (DNL). Максимальное отклонение между шириной фактического кода (интервал между двумя смежными переходами) от ширины идеального кода (1 мл. разр.). Идеальное значение: 0 мл. разр. Рисунок 110. Дифференциальная нелинейность (DNL) Погрешность квантования. Возникает из-за преобразования входного напряжения в конечное число кодов. Погрешность квантования - интервал входного напряжения протяженностью 1 мл. разр. (шаг квантования по напряжению), который характеризуется одним и тем же кодом. Всегда равен ±0.5 мл. разр. Абсолютная погрешность. Максимальное отклонение реальной (без подстройки) функции преобразования от реальной при любом коде. Является результатом действия нескольких эффектов: смещение, погрешность усиления, дифференциальная погрешность, нелинейность и погрешность квантования. Идеальное значение: ±0.5 мл. разр. [Результат преобразования ADC] По завершении преобразования (ADIF = 1) результат может быть считан из пары регистров результата преобразования ADC (ADCL, ADCH). Для недифференциального преобразования: где VIN – уровень напряжения на подключенном к ADC входе, VREF – напряжение выбранного источника опорного напряжения (см. табл. 83 и табл. 84). Код 0x000 соответствует уровню аналоговой земли, а 0x3FF - уровню напряжения ИОН минус 1 шаг квантования по напряжению. При использовании дифференциального канала Здесь VPOS напряжение на «плюсовом» дифференциальном входе, а VNEG – на «минусовом», GAIN – выбранный коэффициент усиления, VREF – напряжение выбранного источника опорного напряжения. Результат представляется в коде двоичного дополнения, начиная с 0x200 (-512d) до 0x1FF (+511d). Обратите внимание, что при необходимости быстро определить полярность результата достаточно опросить старший бит результата преобразования (ADC9 в ADCH). Если данный бит равен лог. 1, то результат отрицательный, если же лог. 0, то положительный. На рисунке 111 представлена функция преобразования ADC в дифференциальном режиме. В таблице 82 представлены результирующие выходные коды для дифференциальной пары каналов (ADCn - ADCm) с коэффициентом усиления GAIN (Ку) и опорным напряжением VREF (VИОН). Рисунок 111. Функция преобразования ADC при измерении дифференциального сигнала Таблица 82. Связь между входным напряжением и выходными кодами
Пример: ADMUX = 0xED (дифференциальная пара входов ADC3 - ADC2, GAIN = 10, VREF =2.56В, результат с левосторонним выравниванием), напряжение на входе ADC3 = 300 мВ, а на входе ADC2 = 500 мВ, тогда: ADCR = 512 * 10 * (300 - 500) / 2560 = -400 = 0x270 С учетом выбранного формата размещения результата (левосторонний) ADCL = 0x00, а ADCH = 0x9C. Если же выбран правосторонний формат (ADLAR=0), то ADCL = 0x70, ADCH = 0x02. [Регистры ADC] Интерфейс работы с ADC микроконтроллеров ATmega16 (ATmega32) чрезвычайно прост - нужно знать только 5 регистров - ADMUX, ADCSRA, ADCL, ADCH, SFIOR.
Разряд 7:6 – REFS1:0: Биты выбора источника опорного напряжения Таблица 83. Выбор опорного источника ADC
Разряд 5 – ADLAR: Бит управления представлением результата преобразования Разряды 4:0 – MUX4:0: Биты выбора аналогового канала и коэффициента усиления Таблица 84. Выбор входного канала и коэффициента усиления
Примечание: 1. Дифференциальные каналы не тестировались для микроконтроллеров в корпусе PDIP40. Работа в таком режиме гарантируется только для микроконтроллеров в корпусах TQFP и QFN/MLF.
Разряд 7 – ADEN: Разрешение работы ADC Разряд 6 – ADSC: Запуск преобразования ADC В процессе преобразования при опросе бита ADSC возвращается лог. 1, а по завершении преобразования – лог. 0. Запись лог. 0 в данный бит возможно, но не оказывает никакого действия. Разряд 5 – ADATE: Включение режима автоматического запуска ADC Разряд 4 – ADIF: Флаг прерывания ADC Разряд 3 – ADIE: Разрешение прерывания ADC Разряды 2:0 – ADPS2:0: Биты управления предделителем ADC Таблица 85. Управление предделителем (прескалером) ADC
ADLAR = 0:
ADLAR = 1:
По завершении преобразования результат помещается в этих двух регистрах. При использовании дифференциального режима преобразования результат представляется в коде двоичного дополнения. Если выполнено чтение ADCL, то доступ к этим регистрам для ADC будет заблокирован (т. е. ADC не сможет в дальнейшем модифицировать результат преобразования), пока не будет считан регистр ADCH. Формат представления результата (левостороннее выравнивание или правостороннее выравнивание) зависит от состояния бита ADLAR и от состояния битов MUXn в регистре ADMUX. Левосторонний формат представления результата удобно использовать, если достаточно 8 разрядов. В этом случае 8-разрядный результат хранится в регистре ADCH и, следовательно, чтение регистра ADCL можно не выполнять. При правостороннем формате необходимо сначала считать ADCL, а затем ADCH. ADC9:0: Результат преобразования ADC
Разряды 7:5 – ADTS2:0: Биты выбора источника автоматического запуска ADC
Разряд 4 – Res: Зарезервированный бит [Устранение проблем, FAQ] Q001. Мне нужно, чтобы ADC выполнял преобразование максимально быстро. Почему когда я устанавливаю маленькое значение делителя битами ADPS2..0 (ADPS2:ADPS0=000 или ADPS2:ADPS0=001), то ADC у меня не работает? [Ссылки] 1. Содержимое этой статьи в формате doc. |