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