Программирование микроконтроллеров. Часть 3-2

05.01.2018

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

Биты REFS0-REFS1 отвечают за выбор опорного напряжения.

REFS[1..0] = 00 - подключен внешний источник опорного напряжения, внутренний ИОН отключен
REFS[1..0] = 01 – AVCC с внешним конденсатором на ножке AREF
REFS[1..0] = 10 – Зарезервировано
REFS[1..0] = 11 - Внутренний ИОН на 1,1V, с внешним конденсатором на ножке AREF

Биты MUX0-MUX3 отвечают за выбор входного канала.

Выбор входа осуществляется регистром ADMUX, а точнее его битами MUX3…MUX0. Записанное туда число определяет выбранный вход. Например, если MUX3..0 = 0100, то подключен вывод ADC4.
Также существует несколько служебных комбинаций битов MUX, использующихся для калибровки.
Например, 1110 подключает к АЦП внутренний источник опорного напряжения на 1.1 вольта. А если записать в MUX3..0 все единицы, то АЦП будет изнутри посажено на землю. Это полезно для выявления разных шумов и помех.

При помощи этого бита ADLAR можно выбрать способ записи измеренного значения в регистры ADCL и ADCH

Регистр ADCSRA:

Бит ADEN (7) регистра ADCSRA включает или выключает АЦП (1-включен).
Бит ADSC (6) регистра ADCSRA запускает преобразование если в него записать 1 (для многоразового режима запуск первого преобразования).
Бит ADATE (5) регистра ADCSRA позволяет запускать преобразование по прерыванию от переферийных устройств микроконтроллера если установить в 1.
Бит ADIF (4) регистра ADCSRA - флаг прерывания от АЦП.
Бит ADIE (3) регистра ADCSRA - разрешает прерывания от АЦП если установлен в 1.
Биты ADPS2 - ADPS0 (2 - 0) регистра ADCSRA выбирают режим работы предделителя тактовой частоты:

Регистр ADCSRB:

Бит ACME (6) регистра ADCSRB позволяет использовать мультиплексор АЦП в качестве входов аналогового компаратора при установке 1 (при этом АЦП должен быть выключен).
Биты ADTS2 - ADTS0 (2 - 0) регистра ADCSRB выбирают источник сигнала, по которому будет начинаться преобразование АЦП:

000 - непрерывное преобразование
001 - прерывание от аналогового компаратора
010 - внешнее прерывание INT0
011 - прерывание по совпадению таймера/счетчика T0 с A
100 - прерывание по переполнению таймера/счетчика T0
101 - прерывание по совпадению таймера/счетчика T1 с B
110 - прерывание по переполнению таймера/счетчика T1
111 - прерывание по захвату таймера/счетчика T1