Вы здесь: Главная » Использование АЦП микроконтроллеров XMEGA

Использование АЦП микроконтроллеров XMEGA

1 Обзор модуля АЦП

Этот раздел содержит обзор функциональных возможностей и основных конфигурационных параметров АЦП. В разделе 3 рассмотрены базовые настройки и использование модуля АЦП на уровне регистров.

2.1 Конвейерная архитектура и виртуальные каналы

Модуль АЦП имеет 12-ступенчатую конвейерную архитектуру, позволяющую осуществлять выборку нескольких сигналов одновременно. Он снабжён четырьмя мультиплексорами, которые позволяют выбрать источник сигнала и имеют индивидуальные настройки. Индивидуальные настройки каждого из четырёх мультиплексоров позволяют рассматривать их как отдельные виртуальные каналы, имеющие одинаковый набор результирующих регистров и разделяющие между собой один блок преобразования АЦП. Это показано на рисунке 1-1.

Сигналы с выходов мультиплексоров захватываются один раз каждые четыре такта тактового сигнала модуля АЦП. Каждый захваченный сигнал проходит через весь конвейер (12 стадий), где на каждой стадии преобразуется один бит. Таким образом, АЦП способен осуществлять выборку одного сигнала каждые четыре такта тактового сигнала модуля АЦП даже несмотря на то, что каждый сигнал должен пройти все ступени конвейера до того, как результат преобразования будет помещен в регистр результата. Время преобразования конвейером АЦП одного сигнала при разрешении 12 бит составляет 7 тактов, а при разрешении 8 бит - 5 тактов. Если используется усилитель, время преобразования увеличивается на один такт. При полной загрузке АЦП способен формировать один результат каждый такт тактового сигнала АЦП. Отношение между частотой тактового сигнала периферийных модулей XMEGA и частотой тактового сигнала модуля АЦП описано в разделе 2.8.

На рисунке 2-1 показан упрощённый 4-ступенчатый конвейер, преобразующий два входных сигнала. На рисунке показано, что как только сигнал был захвачен конвейером, началась первая ступень преобразования, на которой обрабатывается самый старший бит первого сигнала. На второй ступени преобразования обрабатывается следующий бит первого сигнала, и одновременно с этим осуществляется первый этап конвертирования самого старшего бита второго сигнала.

Упрощенный конвейерный АЦП, преобразующий два сигнала

Рисунок 2-1. Упрощенный конвейерный АЦП, преобразующий два сигнала

Стоит отметить, что таким же образом можно неоднократно преобразовывать сигналы, захваченные одним и тем же каналом. Конвейер может захватить и преобразовать сигнал из одного и того же канала даже в том случае, если он уже обрабатывает ранее захваченный на этом канале сигнал.

Каждый из четырёх виртуальных каналов имеет регистр управления мультиплексором (CHnMUXCTRL), регистр управления каналом (CHnCTRL) и пару регистров результата преобразования (CHnRESL/ChnRESH). Кроме этих регистров существует несколько управляющих битов, которые расположены в регистрах общего назначения.

2.2 Каскад усиления

АЦП имеет в своём составе усилитель, который можно настроить на усиление напряжения с целью измерения маленьких напряжений в дифференциальном режиме.

Этот каскад является разделяемым и может быть использован всеми каналами. Если канал настроен на использование усилителя, усиление происходит между мультиплексором и блоком преобразования АЦП. Доступны следующие коэффициенты усиления: 1x, 2x, 4x, 8x, 16x, 32x и 64x. Для микроконтроллеров Atmel® AVR® XMEGA® серии D так же доступен коэффициент 1/2 (деление на два). Коэффициент усиления настраивается битовым полем GAINFACT регистра управления каналом (CHnCTRL). Это позволяет настроить степень усиления напряжения индивидуально для каждого виртуального канала.

Для микроконтроллеров XMEGA семейства A использование каскада усиления увеличивает время распространения сигнала через АЦП на один такт. Для микроконтроллеров XMEGA подсемейства D дополнительная задержка зависит от настроенного коэффициента усиления:

  • Задержка увеличивается на 1 такт для коэффициентов усиления 1/2x, 1x, 2x и 4x.
  • Задержка увеличивается на 2 такта для коэффициентов усиления 8x и 16x.
  • Задержка увеличивается на 3 такта для коэффициентов усиления 32x и 64x.

При установке коэффициента усиления равным 1x усиление сигнала не происходит, но это может быть использовано для формирования такой же задержки распространения сигнала, как и для канала, использующего каскад усиления. Вместе с тем, чтобы свести к минимуму время обработки аналогового сигнала рекомендуется настроить канал АЦП вообще без усиления, если, конечно, Вам не требуется одинаковая задержка распространения сигнала через все каналы безотносительно к тому, включен ли на одном из каналов каскад усиления или нет.

2.3 Режимы преобразования

Блок преобразования может работать в беззнаковом или знаковом режиме преобразования.

Знаковый режим может быть использован в качестве входного режима как для дифференциальных, так и для несимметричных входов. Беззнаковый режим доступен только для несимметричных и внутренних входов.

В беззнаковом режиме диапазон преобразований начинается от земли и заканчивается значением опорного напряжения. Чтобы иметь возможность определять переход через ноль, вычитается ΔV. ΔV приблизительно равна 0,05 * Vref, поэтому уровень земли будет соответствовать примерно 0,05 от общего диапазона значений (0,05 * 4095 с разрешением 12-бит). Это также ограничивает максимальное входное напряжение, которое становится меньше на 0,05 * Vref, то есть максимальное входное напряжение будет Vref - ΔV. Это проиллюстрировано на рисунке 2-2.

Беззнаковый и знаковый режимы преобразования

Рисунок 2-2. Беззнаковый и знаковый режимы преобразования

Из рисунка становится ясно, что беззнаковый режим дает более высокое разрешение для положительных значений, чем знаковый режим, но в этом режиме не могут быть преобразованы отрицательные значения. В знаковом режиме могут быть преобразованы и отрицательные значения, но за счет более низкого разрешения.

Когда АЦП использует дифференциальные входы, должен использоваться знаковый режим. С входами других типов можно использовать оба режима, как знаковый, так и беззнаковый.

Обратите внимание на то, что режим преобразования устанавливается на весь АЦП, а не индивидуально для каждого канала. Это означает, что даже если только один из каналов использует дифференциальный вход, АЦП должен быть введен в знаковый режим.

Режим преобразования устанавливается с помощью бита CONVMODE управляющего регистра CTRLB.

Стоит заметить, что несмотря на то, что разность уровней между двумя входами может быть отрицательной, напряжение на любой из линий ввода/вывода ни при каких обстоятельствах не должно быть ниже уровня GND или выше уровня VCC.

2.4 Параметры мультиплексора

Мультиплексоры используются для выбора источников входного сигнала для виртуальных каналов. Есть четыре различных варианта конфигурации, которые могут быть выбраны с помощью битового поля INPUTMODE регистра управления каналом (CHnCTRL):

  • дифференциальный вход без усиления;
  • дифференциальный вход с усилением;
  • несимметричный вход;
  • внутренний вход.

Положительные и отрицательные входы выбираются с помощью битовых полей MUXPOS и MUXNEG регистра управления мультиплексором канала (MUXCTRL). При измерении сигналов на внутренних входах для выбора положительного входа применяется альтернативное имя битового поля, определённое в заголовочном файле как MUXINT.

В микроконтроллерах с двумя модулями АЦП в качестве входных линий могут быть использованы только линии соответствующего порта. Это означает, что АЦП A может быть подключен только к порту A, а АЦП B может быть подключен только к порту B. Положительный вход может быть подключен к любой из восьми входных линий соответствующего порта. Если используется дифференциальный вход без усиления, отрицательный вход может быть подключен к одной из первых четырех входных линий (PIN0 - PIN3) соответствующего порта, если же задействован каскад усиления, для отрицательного входа следует использовать линию из второй четверки входных линий (PIN4 - PIN7) соответствующего порта.

В устройствах с одним АЦП и несколькими аналоговыми портами положительный вход может быть подключен к любой доступной входной линии порта A или порта В. Если используется дифференциальный вход без усиления, отрицательный вход может быть подключен к одной из первых четырёх входных линий (PIN0 - PIN3) соответствующего порта, если же задействован каскад усиления, для отрицательного входа следует использовать линию из второй четвёрки входных линий (PIN4 - PIN7) соответствующего порта.

Узнать количество модулей АЦП и аналоговых портов можно из документации на микроконтроллер.

Стоит заметить, что несмотря на то, что разность уровней между двумя входами может быть отрицательной, напряжение на любой из линий ввода/вывода ни при каких обстоятельствах не должно быть ниже уровня GND или выше уровня VCC.

Обратите внимание на то, что конденсатор в цепи выборки разряжается после каждой выборками для входов во всех режимах, кроме дифференциального режима с усилением. В дифференциальном режиме с усилением заряд на конденсаторе между выборками сохраняется, и это может быть использовано для получения более высокой частоты дискретизации для медленно изменяющихся сигналов. Это может быть использовано для получения более высокой частоты дискретизации (в сравнении с каналами в несимметричном или дифференциальном режиме без усиления) для источников сигнала с высоким сопротивлением.

2.4.1 Дифференциальный вход без усиления

В такой конфигурации входа компаратор измеряет разницу между двумя входными сигналами. В дифференциальном режиме без усиления в качестве положительного входа АЦП может быть использован любой из входов АЦП, а вот в качестве отрицательного входа могут использоваться только последние 4 линии порта. При использовании дифференциального режима можно довольно легко измерить смещение относительно нуля, если настроить в качестве положительного и отрицательного входов одну и ту же линию ввода/вывода. При этом будет измерено смещение, так как модулю АЦП не нужно знать уровень земли.

Одним из распространённых заблуждений является то, что АЦП способен измерять отрицательные уровни напряжения. Дело в том, что АЦП не может измерять уровни напряжения ниже уровня земли и выше уровня опорного напряжения. Это фактически означает, что получаемые отрицательные результаты измерений свидетельствуют о том, что напряжение на отрицательном входе АЦП больше, чем на положительном.

Дифференциальный вход без усиления

Рисунок 2-3. Дифференциальный вход без усиления

2.4.2 Дифференциальный вход с усилением

В этом режиме вход ведёт себя практически так же, как и дифференциальный вход без усиления. Основное отличие заключается в активизации каскада усиления, который усиливает сигнал, проходящий через этот канал с коэффициентом усиления до 64. При использовании каскада усиления задержка распространения сигнала через блок АЦП увеличивается на 1 такт модуля АЦП.

Дифференциальный вход с усилением

Рисунок 2-4. Дифференциальный вход с усилением

Стоит отметить, что каскад усиления не нагружает вход и источник внешнего сигнала, так как сопротивление входа каналов с активированным каскадом усиления очень высоко. Это полезно для измерения сигнала от слабых источников. Более подробные сведения можно найти в спецификации устройства.

Уровень напряжения на любом из двух входов может быть в диапазоне между GND и Vref, но разность между ними не должна превышать Vref/GAIN, иначе это приведет к насыщению АЦП, а результатом преобразования будет значение, равное верхнему значению АЦП.

2.4.3 Несимметричный вход

В такой конфигурации входа АЦП измеряет значение одного входного сигнала. Разница между этим режимом и дифференциальным режимом входа заключается в том, что отрицательный вход всегда внутренне связан с определенным уровнем напряжения, который зависит от того, в каком режиме измерений работает АЦП - знаковом или беззнаковом. В знаковом режиме отрицательный вход привязан к земле, в то время как в беззнаковом режиме он связан с Vref/2 - ΔV.

Несимметричный вход в знаковом режиме измерений

Рисунок 2-5. Несимметричный вход в знаковом режиме измерений

ΔV это фиксированное внутренне генерируемое напряжение, равное приблизительно 0,05*Vref. Это смещение можно измерить путем подключения положительного входа к земле (GND). Как правило, смещение соответствует значению около 200.

Преимуществом применения напряжения смещения (ΔV) является то, что можно измерить отрицательное смещение напряжения в блоке АЦП, так как ΔV будет больше, чем любое другое смещение. ΔV позволяет приложениям, использующим АЦП XMEGA, вычислить и компенсировать ошибки, связанные со смещением напряжения в блоке АЦП (если это необходимо). Недостатком же является то, что некоторые значения из верхнего диапазона выпадают, так как любое измеренное значение напряжения выше Vref-ΔV насытит АЦП, а результатом измерения будет верхнее значение АЦП.

В беззнаковом режиме помимо автоматического подключения отрицательного входа АЦП к земле автоматически увеличивается точность измерений. Диапазон значений результата составляет от 0 до 4096, в то время как для знакового режима диапазон результатов от -2048 до 2047.

Несимметричный вход в беззнаковом режиме измерений

Рисунок 2-6. Несимметричный вход в беззнаковом режиме измерений

2.4.4 Внутренний вход

В такой конфигурации мультиплексора блоком АЦП измеряется один из нескольких внутренних сигналов. Отрицательный вход всегда связан с GND, в то время как положительный вход может быть подключен к одному из следующих внутренних источников: датчик температуры, внутренний выход ЦАП, VCC/10 (для измерения напряжения питания) или прецизионный ИОН. Разные каналы могут быть подключены к разным внутренним источникам напряжения.

Внутренний вход ЦАП может быть использован для калибровки ЦАП. Получить дополнительную информацию о настройке ЦАП Вы можете из статьи по применению «AVR1301: Использование ЦАП микроконтроллеров XMEGA».

Напряжение прецизионного ИОН может быть использовано в качестве опорного при определении значения внешнего опорного напряжения, если это напряжение неизвестно. При измерении известного напряжения (напряжение прецизионного источника опорного напряжения равно 1,1 В) с использованием неизвестного опорного напряжения фактическое значение внешнего опорного напряжения легко вычислить.

Внутренний вход в знаковом режиме

Рисунок 2-7. Внутренний вход в знаковом режиме

Внутренний вход в беззнаковом режиме

Рисунок 2-8. Внутренний вход в беззнаковом режиме

Стоит заметить, что нет других модулей, способных использовать прецизионный ИОН. Его следует включать с помощью бита BANDGAP регистра управления опорным напряжением (REFCTRL).

То же самое касается датчика температуры, который не может использоваться никаким другим модулем. Опорное напряжение с датчика температуры включается установкой бита TEMPREF. Следует помнить, что на стабилизацию опорного напряжения прецизионного ИОН и датчика температуры требуется определенное время, поэтому активировать эти источники следует заблаговременно, до начала любых преобразований.

Обратите внимание на то, что максимальная скорость выборки для внутренних входов может быть ниже, чем максимальная скорость преобразования модуля АЦП (например, 125 кбит/с против 2 мбит/с). Для получения дополнительной информации обратитесь к документации на микроконтроллер.

2.4.5 Датчик температуры

Зависимость напряжения от температуры встроенного датчика температуры носит линейный характер. В идеале, измеренное значение при 0°К будет равно «0» . Прямая линейной аппроксимации может быть построена через две точки, одна из которых соответствует значению при 0 °К, а вторая, это измеренное при изготовлении микроконтроллера значение. Это измеренное при изготовлении микроконтроллера значение хранится в массиве технологических значений и соответствует измерению, сделанному при 85 °C (358 °К) с погрешностью ±5 °C. Погрешность приводит к некоторому смещению результата при измерении температуры.

Сохранённый в массиве технологических значений результат измерения получен в беззнаковом режиме работы АЦП с разрешением 12-бит и внутренним источником опорного напряжения 1 В. Если это значение планируется использовать в приложении, параметры настройки АЦП должны быть такими же. Сохранённое значение может быть использовано для 2-точечной калибровки, где второй точкой будет температура 0 °К (при этом результат АЦП равен 0).

Лучший способ получить точный результат - это сделать 2-точечную калибровку, чтобы вычислить коэффициент кривой. Для 2-точечной калибровки необходимо выбрать две температуры, при которых Вы сможете сделать измерения, и при этом температура будет известная и точная. Сделать замер при обеих температурах с требуемыми настройками АЦП (режим, частота дискретизации, разрешение). Если Вы получили эти значения, можно вычислить коэффициент кривой, который Вы можете в дальнейшем использовать в своих приложениях. Приведенная ниже формула может быть использована для расчёта изменения температуры на один бит результата:

Формула градус на бит

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

2.5.1 Знаковый режим преобразования

В знаковом режиме результат преобразования АЦП равен:

Формула для знакового режима

VINP это напряжение на положительном входе, а VINN напряжение на отрицательном входе АЦП. GAIN - это используемый коэффициент усиления. Если каскад усиления не используется, значение GAIN равно 1. TOP - это максимальное значение результата, определяемое установленным разрешением АЦП. Для разрешения 12 бит это значение равно 2048, для разрешения 8 бит - 128.

В знаковом режиме результат представлен в виде знакового числа, представленного в дополнительном коде (дополнение до двух), где самый старший бит определяет знак числа. Для непосредственного получения 16-разрядного числа при разрешении АЦП 12 бит знаковый бит (бит 11) также отражается на биты 12-15. При разрешении 8 бит знаковый бит (бит 7) отражается (заполняет) на весь старший байт.

При разрешении 12 бит при измерении напряжения от -VREF до +VREF результат преобразования будет от -2048 до +2047 (0xF800 - 0x07FF).

2.5.2 Беззнаковый режим преобразования

В беззнаковом режиме результат преобразования АЦП равен:

Формула для беззнакового режима

VINP это напряжение на несимметричном входе АЦП. GAIN - это используемый коэффициент усиления. Если каскад усиления не используется, значение GAIN равно 1. TOP - это максимальное значение результата, определяемое установленным разрешением АЦП. Для разрешения 12 бит это значение равно 4096, для разрешения 8 бит - 256.

Положительное смещение определяется значением ΔV. Как правило, оно равно 0,05 * VREF. Напряжение смещения можно измерить, соединив входной контакт с землей. Обычно результатом измерения этого напряжения является значение около 200. Для того чтобы измерить это смещение более точно, следует настроить модуль АЦП на тот режим, в котором он будет в дальнейшем работать (опорное напряжение, скорость и другие параметры) и подключить внешний входной контакт к земле.

Это смещение не компенсируется автоматически. Программное обеспечение должно вычитать измеренное смещение из результатов преобразования.

При разрешении 12 бит при измерении напряжения в диапазоне от GND до VREF - ΔV результат преобразования будет от ≈200 до +4095 (0x00C8 - 0x0FFF).

2.6 Представление результата

АЦП может быть настроен на формирование результатов измерений в следующих форматах:

  • 12 бит, выровнен вправо
  • 8 бит, выровнен вправо
  • 12 бит, выровнен влево

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

Разрешение АЦП настраивается с помощью битового поля RESOLUTION управляющего регистра B (CTRLB).

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

Контроллер DMA может быть настроен на копирование результата из регистра результата в SRAM по завершению преобразования. Это можно настроить для всех каналов по завершению развёртки, что позволит сохранять результаты преобразования всех четырёх каналов за одну транзакцию.

2.7 Источники опорного напряжения

Приложение может выбрать один из следующих источников опорного напряжения (VREF):

  • INT1V – Внутренний источник с напряжением 1,0 В
  • INTVCC – Внутренний источник с напряжением VCC/1,6 В
  • AREFA – Вывод внешнего источника напряжения порта PORTA
  • AREFB – Вывод внешнего источника напряжения порта PORTB
  • AVCC/2 – Внутренний источник напряжения с уровнем AVCC/2. Доступен только в микроконтроллерах Atmel® AVR® XMEGA® семейства D.

Внутренний источник опорного напряжения INT1V имеет напряжение 1,00 В, которое формируется из напряжения прецизионного ИОН. Напряжение прецизионного ИОН составляет 1,10 В, а напряжение внутреннего источника INT1V определяется как 10/11 от напряжения ИОН, что и даёт значение опорного напряжения 1,00 В. Точность источника INT1V зависит от точности ИОН. Точность ИОН приведена в документации на микроконтроллер.

Напряжение источника опорного напряжения INTVCC определяется как напряжение питания микроконтроллера VCC, поделённое на 1,6. Точность источника INTVCC зависит от точности и стабильности напряжения питания аналоговой части микроконтроллера (AVCC). Если контакты AVCC подключены к питанию цифровой части (VCC), требуется фильтрация питания аналоговой части.

Обратите внимание на то, что внешние контакты для подключения источников опорного напряжения (AREFA и AREFB) используются модулями АЦП и ЦАП совместно. Выбор источника опорного напряжения осуществляется с помощью битового поля REFSEL регистра REFCTRL. Внешний источник опорного напряжения подключается к линиям 0 (AREFA и AREFB) соответствующих аналоговых портов (PORTA и PORTB) .

Заметим, что напряжение внешнего источника опорного напряжения не должно превышать VСС - 0,6 В и не должно быть менее 1 В. Точность внешнего источника опорного напряжения зависит от его схемы, которая должна быть спроектирована в соответствии с требованиями к точности измерений модуля АЦП.

2.8 Скорость преобразования

В качестве тактового сигнала модуля АЦП служит периферийный тактовый сигнал, пропущенный через предварительный делитель. Предварительный делитель может быть настроен на следующие множители: 1/4, 1/8, 1/16, 1/32, 1/64, 1/128, 1/256 и 1/512. Чтобы гарантировать правильную работу модуля АЦП, частоту тактового сигнала модуля следует выбирать с учетом минимальной и максимальной рекомендуемой скорости для модуля АЦП. Частота тактового сигнала модуля АЦП настраивается с помощью регистра PRESCALER.

Значения рекомендуемой минимальной и максимальной частоты тактового сигнала модуля АЦП можно уточнить в документации на микроконтроллер.

Следует отметить, что высокая частота тактового сигнала модуля АЦП сокращает время преобразования каждой выборки, но это не значит, что Вы не сможете захватывать сигнал на гораздо более низкой скорости. Например, приложение может захватывать сигнал со скоростью 10 кГц даже в том случае, когда частота тактового сигнала модуля АЦП составляет 2 МГц. При этом частота захвата не может быть выше, чем четверть частоты системного тактового сигнала, так как частота тактового сигнала модуля АЦП не может превышать 1/4 частоты периферийного тактового сигнала. Для микроконтроллеров XMEGA A максимальная частота тактового сигнала модуля АЦП не должна превышать 2 МГц. Для микроконтроллеров XMEGA D это значение составляет 1,4 МГц. Минимальная частота тактового сигнала модуля АЦП для обоих семейств микроконтроллеров составляет 100 КГц. Для получения дополнительной информации обратитесь к документации на микроконтроллер.

Обратите внимание то, что при захвате сигналов от внутренних источников частота тактового сигнала модуля АЦП должна быть равна 125 кГц.

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

Формула максимальной частоты дискретизации

Значения Csample, Rchannel и Rswitch следует брать из документации на микроконтроллер. N - это разрядность результата преобразования, которая может быть 8 или 12 бит. Rsource - это сопротивление аналогового источника сигнала, которое может быть рассчитано исходя из его схемы или, если это встроенный датчик, найдено в документации на микроконтроллер.

Чтобы показать на примере, как влияет сопротивление источника сигнала на частоту дискретизации, мы возьмём наихудший случай для значений Rchannel, Rsource и Csample. Это 5 кОм для значений Rchannel и Rsource, и 4,4 пФ для Csample. Взаимосвязь между сопротивлением источника сигнала и максимальной частотой дискретизации показана на рисунке 2-9.

Взаимосвязь между сопротивлением источника сигнала и максимальной частотой дискретизации

Рисунок 2-9. Взаимосвязь между сопротивлением источника сигнала и максимальной частотой дискретизации

2.9 Автономный режим

Вместо того, чтобы запускать преобразование вручную (путём установки одного или нескольких бит CHnSTART регистра CTRLA) или по событию, АЦП можно настроить на работу в автономном режиме. Это означает, что сигналы с одного или нескольких каналов будут захватываться и преобразовываться в цикле до тех пор, пока активен этот режим.

Выбрать, какие каналы должны работать в автономном режиме, можно с помощью битового поля SWEEP регистра EVCTRL. Вы можете выбрать один из следующих вариантов: только канал 0, каналы 0 и 1, каналы от 0 до 2, или все четыре канала.

Обратите внимание на то, что те же самые биты используются для выбора каналов, включенных в развертку преобразований, инициируемую по событию. Но обсуждение этого вопроса выходит за рамки данного документа.

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

2.10 Прерывания

Модуль АЦП можно настроить таким образом, чтобы он генерировал запрос на прерывание при завершении преобразования сигнала. Такой подход позволяет избежать постоянного опроса регистров с целью определения завершения преобразования. Этот механизм может быть использован для обработки результатов преобразований с использованием обработчика прерывания, при этом процессор способен большую часть времени выполнять другие задачи.

Для получения более подробной информации о прерываниях и их обработке обратитесь к статье  

Использование прерываний и программируемого многоуровнего контроллера прерываний микроконтроллеров Xmega

2.11 Прерывание результата компаратора

Вместо того чтобы просто преобразовывать входное напряжение, модуль АЦП может быть сконфигурирован на сравнение результата с определенным значением и генерировать запрос на прерывание или событие только в том случае, если результат преобразования выше или ниже этого значения. Прерывания по совпадению (выше/ниже) могут быть настроены индивидуально для каждого канала, но регистр сравнения один на все четыре виртуальных канала.

Типичный пример использования этой функции - разрешить одному или нескольким каналам АЦП работать в автономном режиме и настроить модуль АЦП на генерацию запроса на прерывание в том случае, когда один из входных сигналов достигнет определенного порога.

2.12 Калибровка

Модули АЦП калибруются при производстве микроконтроллера. Калибровочное значение хранится в массиве технологических сигнатур устройства. Калибровочное значение компенсирует разброс параметров отдельных ступеней конвейера АЦП и улучшает линейность АЦП.

Калибровочное значение не загружается автоматически. Для улучшения характеристик АЦП это значение требуется загрузить из массива технологических сигнатур (ADCxCAL0/1) и записать в соответствующий калибровочный регистр АЦП (CALL/CALH) до включения модуля АЦП.

На рисунке 2-10 показана блок-схема процедуры загрузки сохраненного калибровочного значения.

Блок-схема процедуры загрузки калибровочного значения

Рисунок 2-10. Блок-схема процедуры загрузки калибровочного значения

Калибровочное значение подбирается на фабрике при производстве микроконтроллера для получения точности преобразований, заявленной в документации. Этот механизм не предназначен для пользовательской калибровки модуля.

Статья по применению «AVR120: Характеристики и калибровка модуля АЦП» содержит дополнительную информацию о характеристиках АЦП и методах компенсации ошибок усиления и смещения.

2.12.1 Ошибка смещения

Ошибка смещения определяется как отклонение фактической передаточной функции модуля АЦП от идеальной прямой при нулевом входном напряжении.

Если при входном значении ½ LSB переход выходного значения из 0 в 1 не происходит, то можно говорить о наличии ошибки смещения. Если при входном напряжении менее ½ LSB выходное значение больше нуля, мы имеем положительную ошибку смещения. Если первый переход выходного значения происходит при входном напряжении более ½ LSB, мы имеем отрицательную ошибку смещения. Другими словами, если фактическая передаточная функция лежит ниже идеальной прямой, присутствует отрицательное смещение, и наоборот. Отрицательные и положительные ошибки смещения показаны на рисунке 2-11.

Примеры положительной (A) и отрицательной (B) ошибок смещения

Рисунок 2-11. Примеры положительной (A) и отрицательной (B) ошибок смещения

Так как при использовании каналов в несимметричном режиме результатом преобразования может быть только положительное значение, процедуры определения смещения для несимметричных и дифференциальных каналов различны.

2.12.2 Ошибка смещения для несимметричных каналов

Для измерения ошибки смещения следует повышать входное напряжение от GND до тех пор, пока не произойдет первое изменение значения результата. Далее следует вычислить разницу между входным напряжением, при котором идеальный АЦП должен совершить этот переход и входным напряжением, присутствующим на входе реального АЦП. Эта разность, приведенная к LSB, и равна ошибке смещения.

На рисунке 2-12A первый переход происходит при 1 LSB. Результат переходит из значения 2 в 3, что соответствует входному напряжению 2½ LSB для идеального АЦП. Разница составляет +1½ LSB, это значение и является ошибкой смещения. Двухконечная стрелка на рисунке показывает эту разность.

Тоже самое можно проделать и для рисунка 2-12B. Первый переход происходит при 2 LSB. Результат переходит из значения 0 в 1, что соответствует входному напряжению ½ LSB для идеального АЦП. Разница составляет -1½ LSB, это значение и является ошибкой смещения.

Положительная и отрицательная ошибки смещения в несимметричном режиме

Рисунок 2-12. Положительная и отрицательная ошибки смещения в несимметричном режиме

Чтобы компенсировать ошибку смещения при использовании каналов в несимметричном режиме нужно вычитать значение ошибки смещения из каждого измеренного значения. Помните, что ошибка смещения ограничивает доступный диапазон измеряемых модулем АЦП напряжений. Большое значение положительной ошибки смещения является причиной насыщения выходного значения до того, как входное напряжение достигает максимально допустимого. Большое значение отрицательной ошибки смещения дает выходное значение 0 для небольших (а не только для нулевого) значений входного напряжения.

2.12.3 Ошибка смещения для дифференциальных каналов

Измерение смещения для дифференциальных каналов можно выполнить гораздо легче, так как для этого не требуется никаких внешних входных напряжений. Нужно оба дифференциальных входа подключить к одному внутреннему источнику напряжения, а значение результата измерения и будет ошибкой смещения. Данный метод дает погрешность от ½ до 1 LSB (в худшем случае), так как используя его невозможно получить точную информацию о том, при каком уровне напряжения происходит первый переход.

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

В знаковом режиме с помощью двух каналов можно легко компенсировать погрешность смещения в результате колебаний температуры, напряжения питания или дрейфа опорного напряжения. Для этого подключите положительный вход канала 0 к контакту 0, а отрицательный к контакту 1. Для канала 1 сделайте наоборот, то есть подключите положительный вход к контакту 1, а отрицательный к контакту 0. Канал 0 должен вернуть вам положительное значение, а канал 1 отрицательное. Для получения компенсированного результата измерения в режиме реального времени Вам необходимо воспользоваться этой формулой: (CH0 + CH1 - 1) / 2. Номера контактов даны для примера.

2.12.4 Ошибка усиления

Ошибка усиления определяется как отклонение середины последнего шага на выходе от идеально прямой линии после компенсации ошибки смещения.

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

Для компенсации во время выполнения часто используется целочисленная арифметика, так как расчеты с плавающей точкой занимают слишком много времени. Поэтому, чтобы получить наилучшую точность, отклонение должно быть измерено для выходного значения настолько далекого от 0, насколько это возможно. Чем больше значение будет использовано, тем более высокую точность Вы получите. Далее это описано более подробно.

На рисунке 2-13 показан пример передаточной функций 3-разрядного АЦП с ошибкой усиления. Ниже следующее описание справедливо как для несимметричного, так и для дифференцированного режима.

Пример положительной (A) и отрицательной (B) ошибок усиления

-->