В ряде моделей микроконтроллеров AVR используется встроенный аналоговый компаратор напряжения, сравнивающий входное напряжение на двух входах. Как только напряжение на неинвентирующем входе станет больше, чем на инвентирующем, на выходе компаратора устанавливается лог. 1. Часто аналоговый компаратор используют для сравнения некоторого входного напряжения с опорным (рис. 8.4).
Для активизации компаратора требуется предварительно перевести соответствующие выводы микроконтроллера в режим входов. Время срабатывания компараторов небольшое, поэтому с их помощью можно быстро формировать ответные реакции на изменение соотношений входных напряжений.
В микроконтроллерах AVR входам компаратора AIN0 и AIN1 обычно соответствуют разряды 0/1 или 2/3 порта В. В микроконтроллерах PIC конфигурация входов компаратора (вывода порта А) настраивается с помощью разрядов регистра CMCON, о чем речь пойдет чуть позже.
В микроконтроллерах AVR для управления работой аналогового компаратора используется регистр ACSR (рис. 8.5), расположенный в области ввода/вывода по адресу 0x08 (адрес 0x28 в SRAM).
Рис. 8.4. Принцип работы аналогового компаратора напряжений
ACD
–
ACO
ACI
ACIE
ACIC
ACIS1
ACIS0
Рис. 8.5. Регистр ACSR микроконтроллеров AVR
Назначение разрядов регистра ACSR:
ACD – если установлен в лог. 1, то питание аналогового компаратора отключено;
АСО – напрямую связан с выходом аналогового компаратора;
ACI – флаг прерываний от аналогового компаратора – устанавливается в лог. 1, когда наступает событие, определенное разрядами ACIS1 и ACIS0;
ACIE – разряд разрешения прерывания от аналогового компаратора;
ACIC – разряд разрешения захвата на входе аналогового компаратора; для того чтобы можно было вызвать прерывание по захвату, оно должно быть разрешено разрядом TICIE1 в регистре TIMSK;
ACIS1, ACIS0 – устанавливают вид события на выходе аналогового компаратора, которое должно вызвать прерывание его работы (табл. 8.3).
Таблица 8.3. Вид событий для вызова прерывания от аналогового компаратора
ACIS1
AC1S0
Вид прерывания аналогового компаратора
Прерывание при изменении состояния выхода (разряда АСО)
Не используется
Прерывание по ниспадающему фронту на выходе аналогового компаратора (напряжение на AIN1 больше, чем на AIN0)
Прерывание по нарастающему фронту на выходе аналогового компаратора (напряжение на AIN0 больше, чем на AIN1)