Практически в каждом микроконтроллере есть аналоговый компаратор. В нашем микроконтроллере находится он на ножках AIN1 (негативный вход) и AIN0 (положительный вход).
Вход AIN0 можно подключить к выводу общего назначения PB2, а так же к внутреннему источнику опорного напряжения на 1.2 В.
Вход AIN1 — можно подключить к выводу PB3, а так же к одному из 8-и входов модуля АЦП.
Основной регистр управления компаратором — это ACSR (Analog ComparatorControl and Status Register).
ACD — включение компаратора:
1 — запрещает работу аналогового компаратора
0 — разрешает.
По умолчанию компаратор всегда включен. Для уменьшения энергопотребления компаратор желательно отключать. При изменении бита ACD нужно запрещать прерывания компаратора, сбрасывая бит ACIE. Иначе произойдет прерывание.
ACBG — подключение внутреннего источника опорного напряжения на 1.23В к положительному входу компаратора (AIN0):
1 — подключает опорное напряжение
0 — отключает опорное напряжение
ACO — данный бит хранит состояние выхода аналогового компаратора, то есть результат сравнения входных напряжений.
ACI — флаг прерывания. Он устанавливается аппаратно, когда происходит событие определенное битами ACIS1 и ACIS0. Если прерывания компаратора разрешены, то вызывается обработчик. Флаг ACI сбрасывается аппаратно при выполнении обработчика. Также он может быть очищен программно, если записать в него 1.
ACIE — разрешение прерываний компаратора:
1 — разрешено прерывание при изменении состояния его выхода
0 — прерывание запрещены
ACIC — подключает выход компаратора к схеме захвата таймера Т1:
1 — выход компаратора подключен к схеме захват
0 — не подключен.
ACIS1, ACIS0 — данные биты определяют событие, по которому будет вызываться прерывание компаратора:
При необходимости подключится к выходу мультиплексора АЦП, то задействуются еще два регистра — SFIOR и ADMUX
При установке бита ACME регистра SFIOR в 1 ( АЦП должен быть выключен — бит ADEN регистра ADCSRA сброшен), отрицательный вход компаратора подключается к выходу мультиплексора АЦП. При установке бита ACME в ноль — вход компаратора подключается к выводу AIN1.
С помощью регистра ADMUX можно выбирать, какой из восьми выводов ADC7 — ADC0 будет подключен к отрицательному входу компаратора:
В качестве примера использования мы напишем программный код для части схемы, которая следит за состоянием резервной батарейки.
***картинка
AIN0 мы подключаем к внутреннему источнику напряжения 1.2В, а AIN1 подключаем к РВ3. Реостат R1 будет имитировать напряжение на аккумуляторе.
Учитывая очень низкую скорость разрядки батарейки нет надобности постоянно ее проверять и тратить на это ресурсы микроконтроллера, но когда напряжение батарейки достигнет критического значения — сработает прерывание и выдаст нам предупреждение.