Аналого-цифровое преобразование (АЦП)

Документация

Число на цифровом выходе АЦП рассчитывается на основании отношения входного напряжения к полному номиналу напряжения аналого-цифрового преобразователя. Если на вход АЦП с номинальным напряжением 5 В подаётся напряжение 3 В, то на цифровом выходе установится число, соответствующее 3/5 разрешающей способности преобразователя. В микроконтроллере ATMega8  применяется АЦП разрядностью в 10 бит, соответственно максимальное возможное значение на его выходе 2^10 - 1 = 1023. Таким образом, напряжению 3 В на аналоговом входе соответствует 3/5 * 1023 = 614 на цифровом выходе.

АЦП  микроконтроллера  mega8 позволяет подавать напряжение на один из 5 аналоговых входов (порт С). Результат  преобразования  сохраняется  в регистровой паре  ADCH(старший байт):ADCL(младший байт) в виде 10-битного числа

В микроконтроллерах AVR для управления режимом АЦП используются два регистра: регистр управления ADCSR  и регистр мультиплексирования ADMUX (определяет, какие из 5 входов порта С являются аналоговым).

Регистр ADCSR

7 6 5 4 3 2 1 0
ADEN ADSC ADFR ADIF ADIR ADPS2 ADPS1 ADPS0

ADPS0 - ADPS2 - биты выбора тактовой частоты АЦП; чем выше частота работы АЦП, тем ниже эффективное разрешение и выше скорость преобразования. Для достижения полной 10-битной точности рекомендуется использовать тактовую частоту АЦП ниже 200 кГц. При частоте 1 МГц точность преобразования составит 8 бит.

ADPS0 ADPS1 ADPS2 Значение частоты АЦП
0 0 0 Частота АЦП = такту микроконтроллера
0 0 1 Частота АЦП = такту микроконтроллера / 2
0 1 0 Частота АЦП = такту микроконтроллера / 4
0 1 1 Частота АЦП = такту микроконтроллера / 8
1
0 0 Частота АЦП = такту микроконтроллера / 16
1 0 1 Частота АЦП = такту микроконтроллера / 32
1 1 0 Частота АЦП = такту микроконтроллера / 64
1 1 1 Частота АЦП = такту микроконтроллера / 128

ADIE - разряд маскирования прерывания от АЦП (1 - по окончанию преобразования разрешено прерывание);

ADIF - флаг прерывания от АЦП (устанавливается аппаратно по окончанию цикла преобразования);

ADFR - лог. 1 в этом разряде переводит АЦП в несинхронизированный режим работы - обычно АЦП работает в режиме прерывания, чтобы процессор каждый раз не ожидал завершения медленно протекающего преобразования, однако в несинхронизированном режиме АЦП выполняет преобразование постоянно, как можно быстрее (на период такого преобразования должны быть запрещены все прерывания);

ADSC - флаг начала преобразования;

ADEN - флаг разрешения использования АЦП.

Регистр ADMUX

7 6 5 4 3 2 1 0
REFS1 REFS0 ADLAR  - MUX3 MUX2 MUX1 MUX0

RESF1,RESF0 - биты выбора опорного напряжения

RESF1 RESF0 Источник опорного напряжения
0 0  AREF
0 1
AVcc с внешним конденсатором  (чтобы не было искажений)
1 0 Зарезервировано
1 1  Внутренний 2.56В  источник, с внешним конденсатором на AREF

Бит ADLAR определяет каким образом результат преобразования будет записан в регистровую пару ADCH:ADCL. Если ADLAR=0 в ADCH записываются 2 старших бита, остальные 8 в ADCL; если ADLAR=1 в ADCH записываются 8 старших битов и 2 бита записываются в ADCL.

Конфигурация битов выбора аналогого канала

MUX0 MUX1 MUX2 MUX3 Аналоговый вход
0
0
0
0 ADC0
0 0 0 1 ADC1
0 0 1 0 ADC2
0 0 1 1 ADC3
0 1
0 0
ADC4
0 1 0
1 ADC5
0 1 1
0 ADC6
0 1 1
1 АDC7

Если у вас есть какие-то замечания по этому документу или что-то осталось непонятно, то вы можете оставить свой отзыв или вопрос

Комментарии (4)

avatar

+Andry+

  • 13 Июнь 2011, 14:51

ответить

У ATMega8 6 аналоговых входов (или 8, зависит от корпуса). Исправьте.
avatar

Volodia

  • 27 Июнь 2011, 07:39

ответить

Это всё конечно замечательно, но все таблицы в этой статье сделаны с ошибками и довольно грубыми, а именно в шапках поменять ADPS0 ADPS1 ADPS2 на ADPS2 ADPS1 ADPS0 и MUX0 MUX1 MUX2 MUX3 на MUX3 MUX2 MUX1 MUX0. Впредь будьте внимательней.
avatar

Volodia

  • 27 Июнь 2011, 07:41

ответить

При значениях ADPS2=0 ADPS1=0 ADPS0=0 коэффициент деления 2, а не 1
avatar

Volodia

  • 27 Июнь 2011, 07:48

ответить

рисунок регистра ADCSR бит3 не ADIR, а ADIE

Анонимная отправка сообщений запрещена! Пожалуйста зарегистрируйтесь