Число в цифровой форме определяется на основании отношения входного напряжения к полному номиналу напряжения аналого-цифрового преобразователя (АЦП). Например, если на вход АЦП с номинальным напряжением 5 В подать напряжение 1 В„ то на цифровом выходе появится число, соответствующее 1/5=0,2 разрешающей способности преобразователя. Так, если используется АЦП с разрешением 8 бит, то максимальное возможное значение на его выходе 2 - 1 = 255. Таким образом, напряжению 1 В на аналоговом входе соответствует 0,2 - 255 = 51 на цифровом выходе.
Встроенные АЦП микроконтроллеров AVR имеют разрешение 10 бит и позволяют считывать напряжение на одном из восьми (в некоторых моделях – пяти) аналоговых входов (обычно – порт А).
В микроконтроллерах AVR для управления режимом АЦП используются два регистра: регистр управления ADCSR (рис. 8.1) и регистр мультиплексирования ADMUX (определяет, какие из восьми входов порта А являются аналоговыми).
ADEN
ADSC
ADFR
ADIF
ADIE
ADPS2
ADPS1
ADPS0
Рис. 8.1. Регистр ADCSR микроконтроллеров AVR
Назначение разрядов регистра ADCSR:
ADPS0 – ADPS2 – выбор коэффициента деления тактовой частоты (табл. 8.1); чем выше частота работы АЦП (производная от частоты системной синхронизации), тем ниже эффективное разрешение, поэтому следует устанавливать коэффициент деления;
ADIE – разряд маскирования прерывания от АЦП (1 – по окончанию преобразования разрешено прерывание);
ADIF – флаг прерывания от АЦП (устанавливается аппаратно по окончанию цикла преобразования);
ADFR – лог. 1 в этом разряде переводит АЦП в несинхронизированный режим работы – обычно АЦП работает в режиме прерывания, чтобы процессор каждый раз не ожидал завершения медленно протекающего преобразования, однако в несинхронизированном режиме АЦП выполняет преобразование постоянно, как можно быстрее (на период такого преобразования должны быть запрещены все прерывания);
ADSC – флаг начала преобразования;
ADEN – флаг разрешения использования АЦП.
Таблица 8.1. Выбор коэффициента деления частоты системной синхронизации для тактирования АЦП микроконтроллеров AVR
ADPS2
ADPS1
ADPS0
Коэффициент деления
Таким образом, в общем случае процесс аналого-цифрового преобразования в микроконтроллерах AVR протекает следующим образом:
установить в лог. 1 разряды регистра ADMUX, соответствующие аналоговым входам;
установить разряды 0-2 регистра ADCSR для выбора коэффициента деления частоты системной синхронизации;
установить в лог. 1 разряд ADIE для разрешения режима прерывания;
установить в лог. 1 разряд ADEN, чтобы разрешить использование АЦП;
установить в лог. 1 разряд ADSC, чтобы начать преобразование;
результат преобразования сохраняется в регистровой паре ADCL, ADCH;