ADC имеет свое собственное прерывание, которое может быть активировано по завершению преобразования. Когда обращение ADC к регистрам запрещено, в процессе считывания регистров ADCL и ADCH, прерывание будет активироваться, даже если результат будет потерян.
3.2.1 Предварительное деление
ADC работает с тактовой частотой в диапазоне от 50 до 200 кГц. В режиме циклического преобразования для преобразования необходимо 14 тактовых циклов, т.е. преобразование выполняется за время от 70 до 280 мс. В режиме однократного преобразования преобразование выполняется за 15 тактовых циклов. Если тактовая частота выйдет за указанные пределы, то правильность результата не гарантируется. Биты ADPS0 – ADPS2 используются для обеспечения необходимого диапазона тактовой частоты ADC при частоте XTAL свыше 100 кГц.
3.2.2 Сканирование аналоговых каналов
Поскольку смена аналоговых каналов происходит после завершения цикла преобразования в циклическом режиме смена каналов (сканирование каналов) может происходить без прерывания преобразователя. Обычно для выполнения смены канала выполняется прерывание по завершению преобразования. Однако пользователю необходимо принять к сведению следующее соображение: прерывание активируется сразу по готовности результата к считыванию. В циклическом режиме следующее преобразование начинается через один тактовый цикл ADC после активации прерывания. Если содержимое ADMUX будет изменено в течение этого одного тактового цикла, то новые установки будут задействованы при начале нового преобразования. Если же изменение состояния ADMUX произойдет позднее этого тактового цикла, то при активированном преобразовании будут использоваться предшествовавшие установки.
3.2.3 Технология подавления шума ADC
Цифровые схемы самого микроконтроллера и внешние цифровые схемы генерируют электромагнитное излучение, которое может влиять на точность измерения аналоговых сигналов. Если точность преобразования является определяющей, то можно использовать следующие приемы:
Аналоговая часть и все аналоговые компоненты устройства должны иметь на печатной плате отдельную аналоговую землю. Эта аналоговая земля должна иметь соединение с цифровой землей в одной точке печатной платы.
Проводники аналоговых сигналов необходимо делать как можно короче, стремиться проводить их поверх аналоговой земли и, по возможности, как можно дальше от дорожек высокоскоростных цифровых сигналов.
Вывод AVCC микроконтроллеров должен подключаться к напряжению питания VCC через RC цепочку, как показано на рисунке 3.2.
Для подавления шума CPU можно использовать функцию подавления шума ADC.
Если какие-то выводы PORTF используются в качестве цифровых входов, то важно, чтобы в процессе преобразования на этих выводах не происходили переключения [5].
Рисунок 3.2 – Подключение напряжения питания ADC
Аналого-цифровой преобразователь входит в состав периферийных устройств микроконтроллеров типа t15, 4433, 8535, m163 и m103. Аналого-цифровой преобразователь содержит базовый преобразователь, выполняющий преобразование аналогового сигнала в десятиразрядный двоичный код методом последовательных приближений, аналоговый мультиплексор для подключения одного из входов микроконтроллера к входу базового преобразователя, регистр управления ADMUX, регистр управления-состояния ADCSR и шестнадцатиразрядный регистр результата ADCH, L.
На рисунке 3.3 изображена структурная схема аналого-цифрового преобразователя.
Рисунок 3.3 – Структурная схема аналого-цифрового преобразователя
Для подачи напряжения питания и опорного напряжения используются отдельные выводы микроконтроллера AVCC, AGND и AREF.
Вывод AGND соединяется с выводом GND микроконтроллера. Напряжение на выводе AVCC не должно отличаться от напряжения на выводе VCC микроконтроллера более, чем на ±0,3В. Напряжение на выводе AREF должно находиться в пределах от уровня на выводе AGND до уровня на выводе AVCC.
Аналоговые сигналы принимаются на выводы микроконтроллера ADC0, ADC1... ADC7. Величина напряжения аналогового сигнала может находиться в пределах от уровня на шине AGND до уровня на шине AVCC. Аналоговый мультиплексор AM подключает один из входов микроконтроллера к входу базового преобразователя CONV. Двоичный код номера подключаемого входа задается комбинацией состояний раз рядов MUX2, MUX1, MUX0 регистра ADMUX.
Преобразование аналогового сигнала в цифровой код в преобразователе CONV выполняется под управлением тактового сигнала, частота которого должна находиться в пределах от 50 кГц до 200 кГц.
Тактовый сигнал формируется в пересчетной схеме ПС путем деления частоты тактового сигнала микроконтроллера СК. Пересчетная схема работает при единичном состоянии разряда ADEN регистра ADCSR. Коэффициент деления частоты (К) определяется комбинацией состоянии разрядов ADPS2, ADPS1, ADPS0 регистра ADCSR в соответствии с таблицей 3.1.
Таблица 3.1 – Комбинации состоянии разрядов ADPS2, ADPS1, ADPS0 регистра ADCSR
ADPS2 | ADPS1 | ADPSO | К |
00001111 | 00110011 | 01010101 | 2248163264128 |
Преобразование начинается при установке в единичное состояние разряда ADSC регистра ADCSR. Разряд ADSC сохраняет единичное состояние до завершения преобразования и затем аппаратно переводится в нулевое состояние. Сформированный десятиразрядный код переписывается в регистр результата ADCH, L, при этом устанавливается в единичное состояние разряд ADIF регистра ADCSR и при единичном состоянии разряда ADIE регистра ADCSR в блок прерываний поступает запрос прерывания ADC CC (ADC Conversion Complete).
Разряд ADIF регистра ADCSR сбрасывается в нулевое состояние аппаратно при переходе микроконтроллера к выполнению прерывающей программы или при выполнении команды установки бита в единичное состояние.
Чтение результата из шестнадцатиразрядного регистра ADCH, L должно начинаться с чтения младшего байта. При этом блокируется занесение нового результата из базового преобразователя в регистр результата и считанный затем старший байт принадлежит тому же результату, что и считанный ранее младший байт.
Преобразователь может работать в одиночном режиме и в циклическом режиме. Выбор режима определяется состоянием разряда ADFR регистра ADCSR. При ADFR = 0 преобразователь работает в одиночном режиме.
Преобразование начинается при установке в единичное состояние разряда ADSC и выполняется за 14 тактов. Для выполнения следующего преобразования необходимо вновь установить в единичное состояние разряд ADSC.
При ADFR = 1 преобразователь работает в циклическом режиме работа начинается при установке в единичное состояние разряда ADSC. Преобразование выполняется за 13 тактов, после чего сразу начинается следующее преобразование. Работа в циклическом режиме прекращается после сброса в нулевое состояние результата ADFR.
В обоих режимах на выполнение первого преобразования после пуска пересчетной схемы затрачивается на 12 тактов больше, чем на выполнение последующих преобразований. Эти такты обеспечивают инициализацию преобразователя.
Для уменьшения помех, вызываемых работой процессора, предусмотрена возможность выполнения преобразования с переводом контроллера в режим холостого хода. Преобразователь должен находиться в одиночном режиме (ADFR = 0), пересчетная схема работает (ADEN = 1), прерывания разрешено (ADIE = 1), запуск преобразования отсутствует (ADSC = 0). Контроллер переводится в режим холостого хода, при этом аппаратно запускается преобразователь. При завершении преобразования поступает запрос прерывания ADC CC, контроллер выходит из режима холостого хода, выполняет прерывающую программу и возвращается к выполнению программы с точки перехода в режим холостого хода.
Аналого-цифровые преобразователи микроконтроллеров других типов имеют некоторые отличия от рассмотренного преобразователя. В микроконтроллере типа 4433 имеется возможность подключения к входу базового преобразователя внутреннего источника эталонного напряжения 1,22±0,05 В. Подключение выполняется при установке в единичное состояние дополнительного разряда ADCBG в регистре ADMUX.
В микроконтроллере типа t15 в качестве опорного напряжения кроме напряжения от внешнего источника, подаваемого на вывод AREF, может использоваться напряжение на выводе VCC или напряжение от внутреннего источника. Выбор источника осуществляется путем установки определенной комбинации состояний дополнительных разрядов REFS1, REFS0 регистра ADMUX. В качестве входного сигнала может использоваться разность напряжений на входах ADC2 и ADC3. В этом случае напряжение на этих входах должно изменяться в пределах от 0 до 2,56 В, а разностный сигнал перед преобразованием может усиливаться в 20 раз. Разностный сигнал без усиления используется при комбинации состояний 110 в разрядах MUX2, MUX1, MUX0, а разностный сигнал усилением – при комбинации 111.
В регистре ADMUX, кроме того, имеется дополнительный разряд ADLAR. При ADLAR=0 код результата размещается в младших десяти разрядах пары регистров ADCH, L, а при ADLAR = 1 – в старших десяти разрядах этой пары регистров. В микроконтроллере типа m103 аналого-цифровой преобразователь не работает в циклическом режиме и в регистре ADCSR отсутствует разряд ADFR. Комбинация 000 разрядов ADPS2, ADPS1, ADPS0 регистра ADCSR не используется.
В микроконтроллере типа m163 в качестве опорного напряжения может использоваться напряжение 2,56 В от внутреннего источника пли напряжения на выводе VCC. Выбор опорного напряжения определяется комбинацией состояний дополнительных разрядов REFS1 и REFS0 регистра ADMUX. Кроме того, в регистре ADMUX имеется дополнительный разряд ADLAR. При ADLAR = 1 десятиразрядный код результата помещается в старшие десять разрядов регистра ADCH, L. При чтении старшего байта получают восьмиразрядный код результата.