Atmega как подключить avcc

ATMega8: зачем подключаться VCC и AVCC?

Я часто читал, что хорошей практикой является подключение VCC к AVCC. Даже в таблице ATMega8 он говорит так:

Но нигде я не могу найти объяснения по поводу почему они должны быть связаны. Простая схема для мигания светодиода работает без подключения VCC и AVCC.

Я просто должен принять это или есть веская причина?

5 ответов

В основном, он должен быть подключен, потому что производитель говорит, что он должен.

Кроме того, они должны полностью работать с чипом (все порты /контакты), чтобы предотвратить проблемы с плавающим штырем на стороне AVCC, чтобы предотвратить шум на цифровой стороне. Существуют проблемы, при которых отказ от сбоев на стороне AVCC вызывает паразитную подачу мощности и может дестабилизировать внутренние часы или может предотвратить стабильный запуск.

Хорошо, что вы просите причину!

AVCC определяется как независимый контакт, поскольку он подключается к основным аналоговым компонентам внутри и, как таковые, должен иметь отдельные фильтрующие конденсаторы.

Простые проекты «blinkenlights» не имеют требований к шуму и точности.

Теперь, если вы имеете в виду, если они должны быть подключены к одному и тому же НАПРЯЖЕНИЮ, ответ да в пределах +/- 0,3 В от VCC

«АЦП имеет отдельный аналоговый вывод напряжения питания AVCC. AVCC не должен отличаться более чем на ± 0,3 В от VCC». и «AVCC является пиком напряжения питания для АЦП»

Напомним: AVCC и VCC должны находиться на одинаковом напряжении (в пределах +/- 0,3 вольта), и он идентифицируется как отдельный контакт, чтобы позволить дизайнеру размещать дополнительные фильтры на этом входе, чтобы избежать шума из чувствительного A /D-преобразователь части IC.

Надеюсь, что это поможет!

Часто время, цифровое питание и штыри заземления будут в конечном итоге с небольшим количеством шума на них. Трудно устранить весь такой шум, когда цифровая схема переключает значительные объемы тока, а 150 мВ или около того шума питания вряд ли повлияет на схему, питаемую цифровыми штырьками питания. Тем не менее, наличие 150 мВ шума на аналоговых штыревых разъемах сделало бы очень трудным или невозможным для аналоговой схемы достичь точности доли процента. Тот факт, что аналоговые контакты разделены, означает, что можно принимать точные показания, даже если на цифровом источнике питания имеется шум 150 мВ, при условии, что цифровая подача не размахивается более чем на 300 мВ, а у одного есть аналоговое питание, которое где-то в пределах 300 мВ обеих крайностей диапазона цифрового питания. Устранение 99% шума от источника питания, который подает только штырь аналогового питания, и обеспечения того, что напряжение источника близко к цифровому напряжению питания, часто намного проще, чем устранение всех помех от цифрового питания.

Просто добавьте еще одну причину, по которой AVCC должен быть подключен даже в простых проектах.

Когда вы используете схему обнаружения Brown-out, которая опирается на справочное руководство по внутреннему напряжению, вы можете получить неожиданное поведение и ненадежный запуск устройства. Он может проявляться в виде странных порогов напряжения, запускающих сброс БПК или даже устройства, не начинающегося с правильного напряжения.

Я просто столкнулся с этой проблемой в одном из моих «быстрых и грязных» проектов взлома с использованием ATmega88P.

Причина связана с внутренним процессом устройства и его построением. Поскольку они указывают, что AVCC и VCC должны быть в пределах 0,3 В, это похоже на напряжение защиты внутренних диодов, используемых в чипах. Если диоды смещены выше 0,3 В (например, если AVCC не подключен), эти диоды могут работать, вызывая проблемы и, возможно, повреждая устройство.

Источник

Куда девать AREF?

Об использовании вывода AREF
Доброго вам, коллеги. Итак, возникла нужда в питании датчика температуры стабилизированным.

вывод AREF atmega8
как лучше поступить с этим выводом (вывод опорного напряжения) если он не задействован и каналы ацп.

Внутренний ИОН АЦП в tinny44 не подключается к выводу AREF
Пишу программу с использованием АЦП на tinny44. Проверяю в Proteuse. Мне нужно подключить.

Куда девать пробелы?
Вообще говоря пробелы которые стоят между словами сильно упрощают работу криптоаналитикам. То.

Девать его через конденсатор на 0.1 мкф на землю.

locm, А что если просто в воздухе оставить?

Добавлено через 16 минут
И на сколько вольт кондерик должен быть?

Добавлено через 6 минут
Если нет кондера на 6.3 вольта.
Повлияет ли как-то если он будет на 50 вольт?

Решение

Могут немного «плавать» данные АЦП в случае использования внутреннего ИОН.

Не меньше чем напряжение питания умноженное на два. Т. е. при 5 вольтах, конденсатор должен быть не меньше чем на 10 вольт.

А даташайс что говорит по этому поводу?
Выдержка из 328-й меги

И в данном случае необходимо обратить внимание, не только на то что выделено, а на весь текст, ибо некоторые пытаются добавить ещё сопротивление.

А по сути, внутренний ион генерируется с помощью внутреннего бэндгап, через внутренний усилитель. Который питается от AVCC и для помехоустойчивости, рекомендуется вешать ёмкость на AREF pin, а не подключать его к питанию или ещё куда, за исключением если в программе не используется разные опорные уровни для АЦП.

О, великий гугл счас все расскажет . Учите английский .
В тексте сказано, что в случае использования внутреннего ИОН эта нога станет «высокоимпедансным выходом, к которому должна быть подключена ёмкостная нагрузка». То бишь конденсатор, причем, этот же VREF можно использовать, например, для внешнего АЦП. Ну, через повторитель на ОУ, если очень хочется.

вот выдержка из ДШ по atmega328, на который вы ссылаетесь:

Если вы также откроете 251ю страницу, то на ней есть схема подключения это ноги, где видно что будет с сигналом при разных настройках сигналов REFS[0..1].

Источник

Atmega как подключить avcc

Перевод даташита 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). В режиме дифференциального ввода предусмотрена возможность выбора инвертирующих и неинвертирующих входов к дифференциального усилителя.

READ  Как подключить герои 6 к сети на пиратке

Если выбран дифференциальный режим аналогового ввода, то дифференциальный усилитель будет усиливать разность напряжений между выбранной парой входов на заданный коэффициент усиления. Усиленное таким образом значение поступает на аналоговый вход 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.

Если разрешен автозапуск (установлен бит 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.

Первое преобразование 13.5 25 Недифференциальное обычное преобразование 1.5 13 Преобразование с автозапуском 2 13.5 Дифференциальное обычное преобразование 1.5/2.5 13/14

[Каналы дифференциального усиления]

Если используются каналы дифференциального усиления, то необходимо принять во внимание некоторые особенности.

Усилительный каскад оптимизирован под частотный диапазон до 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, чтобы определить, какое преобразование будет соответствовать новым установкам.

READ  Как правильно подключить электрический бойлер к водопроводу в квартире

Если оба бита ADATE и ADEN установлены в лог. 1, событие прерывания может произойти в любой момент. Если регистр ADMUX был изменен в этот период, то пользователь не может сказать, произошло это преобразование на основе старых или новых установок. В этом случае ADMUX должен модифицироваться следующими способами:

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

Особые меры необходимо предпринять при изменении дифференциальных каналов. Как только осуществлен выбор дифференциального канала, усилительному каскаду требуется 125 мкс для стабилизации нового значения. Следовательно, после переключения дифференциального канала в течение первых 125 мкс не должно стартовать преобразование. Если же в этот период преобразования все-таки выполнялись, то их результат необходимо игнорировать.

Такую же задержку на установление необходимо ввести при первом дифференциальном преобразовании после изменения источника опорного напряжения для ADC (путем изменения бит REFS1:0 в ADMUX).

[Входные каналы ADC]

При переключении входного канала необходимо учесть некоторые рекомендации, которые исключат некорректность переключения.

В режиме одиночного преобразования переключение канала необходимо выполнять перед началом преобразования. Переключение канала может произойти только в течение одного такта синхронизации 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)

Абсолютная погрешность. Максимальное отклонение реальной (без подстройки) функции преобразования от реальной при любом коде. Является результатом действия нескольких эффектов: смещение, погрешность усиления, дифференциальная погрешность, нелинейность и погрешность квантования. Идеальное значение: ±0.5 мл. разр.

[Результат преобразования ADC]

По завершении преобразования (ADIF = 1) результат может быть считан из пары регистров результата преобразования ADC (ADCL, ADCH). Для недифференциального преобразования:

При использовании дифференциального канала

Здесь VPOS напряжение на «плюсовом» дифференциальном входе, а VNEG – на «минусовом», GAIN – выбранный коэффициент усиления, VREF – напряжение выбранного источника опорного напряжения. Результат представляется в коде двоичного дополнения, начиная с 0x200 (-512d) до 0x1FF (+511d). Обратите внимание, что при необходимости быстро определить полярность результата достаточно опросить старший бит результата преобразования (ADC9 в ADCH). Если данный бит равен лог. 1, то результат отрицательный, если же лог. 0, то положительный. На рисунке 111 представлена функция преобразования ADC в дифференциальном режиме.

Рисунок 111. Функция преобразования ADC при измерении дифференциального сигнала

Таблица 82. Связь между входным напряжением и выходными кодами

Символ Параметр Режим Min Номинал Max Единицы
считываемый код соответствующее десятичное значение
+ VREF / GAIN 0x1FF 511
+ (511/512) VREF / GAIN 0x1FF 511
+ (510/512) VREF / GAIN 0x1FE 510
. .
+ (1/512) VREF / GAIN 0x001 1
0x000
— (1/512) VREF / GAIN 0x3FF -1
. .
— (511/512) VREF / GAIN 0x201 -511
– VREF / GAIN 0x200 -512
READ  Как подключить драм машину к fl studio

С учетом выбранного формата размещения результата (левосторонний) ADCL = 0x00, а ADCH = 0x9C. Если же выбран правосторонний формат (ADLAR=0), то ADCL = 0x70, ADCH = 0x02.

[Регистры ADC]

Разряд 7 6 5 4 3 2 1
REFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0 ADMUX
Чтение/запись R/W R/W R/W R/W R/W R/W R/W R/W
Исх. значение

Разряд 7:6 – REFS1:0: Биты выбора источника опорного напряжения
Данные биты определяют какое напряжение будет использоваться в качестве опорного для ADC (см. табл. 83). Если изменить значения данных бит в процессе преобразования, то новые установки вступят в силу только по завершении текущего преобразования (т. е. когда установится бит ADIF в регистре ADCSRA). Внутренний ИОН можно не использовать, если к выводу AREF подключен внешний опорный источник.

Таблица 83. Выбор опорного источника ADC

REFS1 REFS0 Источник опорного напряжения ADC
Внешний источник, подключенный к AREF, внутренний VREF отключен
1 AVCC с внешним конденсатором на выводе AREF
1 Зарезервировано
1 1 Внутренний источник опорного напряжения 2.56В с внешним конденсатором на выводе AREF

Разряды 4:0 – MUX4:0: Биты выбора аналогового канала и коэффициента усиления
Данные биты определяют какие из имеющихся аналоговых входов подключаются к ADC. Кроме того, с их помощью можно выбрать коэффициент усиления для дифференциальных каналов (см. табл. 84). Если значения бит изменить в процессе преобразования, то новые установки вступят в силу только после завершения текущего преобразования (после установки бита ADIF в регистре ADCSRA).

Таблица 84. Выбор входного канала и коэффициента усиления

MUX4..0 Недифференциальный вход Неинвертирующий дифференциальный вход Инвертирующий дифференциальный вход Коэффициент усиления, GAIN (Ку)
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 (1) ADC0 ADC0 200x
01011 (1) ADC1 ADC0 200x
01100 ADC2 ADC2 10x
01101 ADC3 ADC2 10x
01110 (1) ADC2 ADC2 200x
01111 (1) 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 В (VBG) Дифференциальных входов и усиления нет
11111 0 В (GND)

Примечание: 1. Дифференциальные каналы не тестировались для микроконтроллеров в корпусе PDIP40. Работа в таком режиме гарантируется только для микроконтроллеров в корпусах TQFP и QFN/MLF.

Разряд 7 6 5 4 3 2 1
ADEN ADSC ADFR ADIF ADIE ADPS2 ADPS1 ADPS0 ADCSRA
Чтение/запись R/W R/W R/W R/W R/W R/W R/W R/W
Исх. значение

Разряд 7 – ADEN: Разрешение работы ADC
Запись в данный бит лог. 1 разрешает работу ADC. Если в данный бит записать лог. 0, то ADC отключается, даже если он находился в процессе преобразования.

Разряд 6 – ADSC: Запуск преобразования ADC
В режиме одиночного преобразования установка данного бита инициирует старт каждого преобразования. В режиме автоматического перезапуска установкой этого бита инициируется только первое преобразование, а все остальные выполняются автоматически. Первое преобразование после разрешения работы ADC, инициированное битом ADSC (или если в ADSC записали 1 одновременно с разрешением работы ADC), выполняется за 25 тактов синхронизации ADC, вместо обычных 13 тактов. Это связано с необходимостью инициализации ADC при первом преобразовании.

В процессе преобразования при опросе бита ADSC возвращается лог. 1, а по завершении преобразования – лог. 0. Запись лог. 0 в данный бит возможно, но не оказывает никакого действия.

Разряд 5 – ADATE: Включение режима автоматического запуска ADC
Если в данный бит записать лог. 1, то ADC перейдет в режим автоматического перезапуска. В этом режиме ADC автоматически запускает преобразование по положительному фронту выбранного запускающего сигнала. Выбор источника запуска происходит битами ADTS регистра SFIOR.

Разряд 4 – ADIF: Флаг прерывания ADC
Данный флаг устанавливается после завершения преобразования ADC и обновления регистров выходных данных (ADCH:ADCL). Если установлены биты ADIE и I (регистр SREG), то происходит вызов обработчика прерывания по завершении преобразования. Флаг ADIF сбрасывается аппаратно при переходе на соответствующий вектор прерывания. Альтернативно флаг ADIF сбрасывается путем записи лог. 1 в него. Обратите внимание, что при выполнении команды «чтение-модификация-запись» с регистром ADCSRA ожидаемое прерывание может быть запрещено. Сказанное также действительно, если используются инструкции SBI и CBI.

Разряд 3 – ADIE: Разрешение прерывания ADC
Когда этот бит установлен в лог. 1, и установлен бит I в регистре SREG, разрешается прерывание по завершении преобразования ADC.

Разряды 2:0 – ADPS2:0: Биты управления предделителем ADC
Данные биты определяют на какое значение тактовая частота ЦПУ будет отличаться от частоты входной синхронизации ADC.

Таблица 85. Управление предделителем (прескалером) ADC

ADPS2 ADPS1 ADPS0 Коэффициент деления
2
1 2
1 4
1 1 8
1 16
1 1 32
1 1 64
1 1 1 128

ADLAR = 0:

Разряд 15 14 13 12 11 10 9 8
ADC9 ADC8 ADCH
ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0 ADCL
7 6 5 4 3 2 1
Чтение/запись R R R R R R R R
R R R R R R R R
Исх. значение

ADLAR = 1:

Разряд 15 14 13 12 11 10 9 8
ADC9 ADC8 ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADCH
ADC1 ADC0 ADCL
7 6 5 4 3 2 1
Чтение/запись R R R R R R R R
R R R R R R R R
Исх. значение

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

Если выполнено чтение ADCL, то доступ к этим регистрам для ADC будет заблокирован (т. е. ADC не сможет в дальнейшем модифицировать результат преобразования), пока не будет считан регистр ADCH.

Формат представления результата (левостороннее выравнивание или правостороннее выравнивание) зависит от состояния бита ADLAR и от состояния битов MUXn в регистре ADMUX. Левосторонний формат представления результата удобно использовать, если достаточно 8 разрядов. В этом случае 8-разрядный результат хранится в регистре ADCH и, следовательно, чтение регистра ADCL можно не выполнять. При правостороннем формате необходимо сначала считать ADCL, а затем ADCH.

ADC9:0: Результат преобразования ADC
Данные биты представляют результат преобразования. Подробнее см. раздел «Результат преобразования ADC».

Разряд 7 6 5 4 3 2 1
ADTS2 ADTS1 ADTS0 ACME PUD PSR2 PSR10 SFIOR
Чтение/запись R/W R/W R/W R R/W R/W R/W R/W
Исх. значение

Разряды 7:5 – ADTS2:0: Биты выбора источника автоматического запуска ADC
Если ADATE в регистре ADCSRA записан в лог. 1, значения бит ADTS определяют, какой будет использоваться источник для запуска преобразования. Если ADATE в регистре ADCSRA записан в лог. 0, значения бит ADTS никакого значения не имеют. Преобразование будет запускаться по положительному фронту (нарастание сигнала) выбранного сигнала. Внимание – событие переключения от очищенного источника запуска к источнику запуска, который установлен, будет генерировать положительный фронт сигнала запуска, и если бит ADEN в регистре ADCSRA установлен, то запустится преобразование. Переключение в режим постоянного преобразования (Free Running mode, ADTS[2:0]=0) не генерирует событие запуска, даже если установлен флаг прерывания ADC (ADC Interrupt Flag).

ADTS2 ADTS1 ADTS0 Источник запуска преобразования ADC
Постоянное преобразование (Free Running mode)
1 Аналоговый компаратор
1 Внешний запрос на прерывание 0
1 1 Timer/Counter0 Compare Match
1 Timer/Counter0 Overflow
1 1 Timer/Counter1 Compare Match B
1 1 Timer/Counter1 Overflow
1 1 1 Timer/Counter1 Capture Event

Разряд 4 – Res: Зарезервированный бит
Этот бит зарезервирован для использования в будущем. Для обеспечения совместимости с микроконтроллерами, которые будут разработаны в будущем, при записи в регистр SFIOR этот бит должен быть установлен в лог. 0.

[Устранение проблем, FAQ]

Q001. Мне нужно, чтобы ADC выполнял преобразование максимально быстро. Почему когда я устанавливаю маленькое значение делителя битами ADPS2..0 (ADPS2:ADPS0=000 или ADPS2:ADPS0=001), то ADC у меня не работает?
A001. ADC имеет минимально допустимое время преобразования, поэтому если у Вас рабочая частота ядра CPU слишком большая (16 МГц и выше), то при маленьких коэффициентах деления прескалера тактовая частота для ADC может оказаться слишком высокой. Поэтому просто подберите минимальное значение делителя, при котором ADC начинает работать. Например, у меня с ATmega32A рабочее значение делителя оказалось не меньше 4 (ADPS2:ADPS0=010).

Источник

Поделиться с друзьями
Как подключить и установить...
Adblock
detector