Аналоговый компаратор ATmega32U4 Печать
Добавил(а) microsin   

В микроконтроллере ATmega32U4 (а также в его урезанной версии ATmega16U4) присутствует аппаратный узел компаратора (Analog Comparator). Он сравнивает друг с другом входные (положительные относительно GND) напряжения сигналов AIN+ (не инверсный вход) и AIN- (инверсный вход). Когда уровень положительного напряжения на AIN+ выше, чем уровень напряжения на AIN-, устанавливается в лог. 1 уровень на выходе Analog Comparator (сигнал ACO).

Выход компаратора может быть настроен для срабатывания функции Input Capture таймера/счетчика 1 (Timer/Counter1). Дополнительно сигнал на выходе Analog Comparator может запускать срабатывание отдельного, специально выделенного вектора прерывания. Пользователь может выбрать момент срабатывания прерывания по фронту нарастания уровня ACO, по его спаду или по переключению в противоположное состояние. Блок-схема компаратора и его окружающей логики показана на рис. 23-1.

ATmega32U4 Analog Comparator Block Diagram

Рис. 23-1. Блок схема Analog Comparator(2).

Примечания:

1. См. таблицу 23-2 ниже.
2. См. разводку выводов на картинке ниже, и таблицу 10-3 из даташита [1], где показано размещение выводов Analog Comparator.

Сигнал AIN+ может быть подключен либо к внешнему выводу AIN0 (ножка порта PE6), или к внутреннему опорному напряжению Bandgap. Сигнал AIN- может быть подключен только к выходу мультиплексора ADC (АЦП).

Примечание: в микроконтроллере ATmega16U4/ATmega32U4 имеется внутренний источник опорного напряжения, так называемый эталонный уровень запрещенной зоны (bandgap). Этот источник используется для функции выхода напряжения питания за установленный предел (Brown-out Detection), и он также может использоваться как опорный входной уровень для аналогового компаратора или АЦП (ADC). Минимальный уровень опорного напряжения bandgap составляет 1.0V, номинальный 1.1V, максимальный 1.2V.

Расположение выводов, к которым может быть подключен Analog Comparator, на корпусе QFN44/TQFP44 ATmega32U4:

ATmega32U4 Analog Comparator pins

В этой врезке показаны выводы, которые имеют отношение к компаратору (могут для него использоваться).

[Порты PB]

Порт Альтернативные функции
PB6 OC1B/PCINT6/OC.4B/ADC13 (выход Output Compare и PWM B для Timer/Counter1, или Pin Change Interrupt 6, или выход Timer 4 Compare B / PWM, или канал 13 АЦП)
PB5 OC1A/PCINT5/~OC.4B/ADC12 (выход Output Compare и PWM A для Timer/Counter1, или Pin Change Interrupt 5, или комплементарный выход Timer 4 Compare B / PWM, или канал 12 АЦП)
PB4 PCINT4/ADC11 (Pin Change Interrupt 4 или канал 11 АЦП)

[Порты PD]

Порт Альтернативные функции
PD7 T0/OC.4D/ADC10 (вход тактов Timer/Counter0, или выход Timer 4 Compare D / PWM, или канал 10 АЦП)
PD6 T1/~OC.4D/ADC9 (вход тактов Timer/Counter1, или комплементарный выход Timer 4 Compare D / PWM, или канал 9 АЦП)
PD4 ICP1/ADC8 (триггер Timer/Counter1 Input Capture, или канал 8 АЦП)

Примечание: скорее всего, порты PB и PD для аналогового компаратора использовать нельзя, см. таблицу 23-2 и примечание после неё.

[Порт PE6]

Порт Альтернативные функции
PE6 INT6/AIN0 (вход External Interrupt 6, или положительный, не инверсный вход компаратора)

[Порты PF]

Порт Альтернативные функции
PF7 ADC7/TDI (канал 7 АЦП или JTAG TDI)
PF6 ADC6/TDO (канал 6 АЦП или JTAG TDO)
PF5 ADC5/TMS (канал 5 АЦП или JTAG TMS)
PF4 ADC4/TCK (канал 4 АЦП или JTAG TCK)
PF1 ADC1 (канал 1 АЦП)
PF0 ADC0 (канал 0 АЦП)

[Описание регистров и бит, относящихся к компаратору]

ADC Control and Status Register B – ADCSRB

Разряд 7 6 5 4 3 2 1 0  
  ADHSM ACME MUX5   -   ADTS3 ADTS2 ADTS1 ADTS0 ADCSRB
Чтение/запись R R/W R/W R R R/W R/W R/W  
Исх. значение 0 0 0 0 0 0 0 0  

Бит 6 ACME: Analog Comparator Multiplexer Enable

Когда в ACME записана лог. 1, и ADC выключен (ADEN в регистре ADCSRA установлен в лог. 0), выход мультиплексора ADC подключен к инверсному входу AIN- компаратора. Когда в ACME записан лог. 0, на этот вход AIN- компаратора подключена источник опорного напряжения Bandgap (см. раздел "Internal Voltage Reference" даташита [1]). Подробное описание этого бита см. ниже в разделе "Мультиплексированный вход Analog Comparator".

Analog Comparator Control and Status Register – ACSR

Разряд 7 6 5 4 3 2 1 0  
  ACD ACBG ACO ACI ACIE ACIC ACIS1 ACIS0 ADCSRB
Чтение/запись R/W R/W R R/W R/W R/W R/W R/W  
Исх. значение 0 0 N/A 0 0 0 0 0  

Бит 7 ACD: Analog Comparator Disable

Когда этот бит установлен в лог. 1, питание Analog Comparator выключено. Этот бит может быть установлен в любое время с целью выключения Analog Comparator, что снизит потребление мощности в режимах Active и Idle. Когда меняется значение бита ACD, прерывание Analog Comparator должно быть запрещено очисткой бита ACIE в регистре ACSR. В противном случае при изменении бита ACD может произойти прерывание компаратора.

Бит 6 ACBG: Analog Comparator Bandgap Select

Когда этот бит установлен, фиксированное опорное напряжение (fixed bandgap reference) заменяет уровень на положительном входе AIN+ компаратора. Когда этот бит очищен, AIN0 подключен к положительному входу AIN+ компаратора. См. раздел "Internal Voltage Reference" даташита [1].

Бит 5 ACO: Analog Comparator Output

Этот бит представляет синхронизированное значение на выходе компаратора. Задержка синхронизации составляет 1 или 2 такта ядра.

Бит 4 ACI: Analog Comparator Interrupt Flag

Этот бит устанавливается аппаратно, когда происходит событие изменение уровня на выходе компаратора в соответствии с режимом, определенным битами ACIS1 и ACIS0. Обработчик прерывания (ISR) Analog Comparator выполнится, если установлен бит ACIE и установлен I-бит (глобальное разрешение прерываний) в регистре SREG. ACI очищается аппаратно, когда выполняется соответствующий вектор ISR. Альтернативно ACI очищается записью в него лог. 1.

Бит 3 ACIE: Analog Comparator Interrupt Enable

Когда в бит ACIE записана лог. 1, и установлен I-бит в Status Register (SREG), активируется прерывание Analog Comparator. Когда в ACIE записан лог. 0, прерывание компаратора запрещается.

Бит 2 ACIC: Analog Comparator Input Capture Enable

Когда в этот бит записана лог. 1, то разрешается функция захвата по входу таймера 1 (input capture Timer/Counter1), запускаемая от аналогового компаратора. В этом случае выход компаратора напрямую подключается к логике input capture, с применением функций подавления шума (noise canceler) и выбора перепада (edge select) для Timer/Counter1 Input Capture interrupt. Когда в бит ACIC записан лог. 0, отсутствует соединение между выходом компаратора и функцией входа захвата. Чтобы компаратор вызывал срабатывание прерывания Timer/Counter1 Input Capture, должен быть установлен бит ICIE1 в Timer Interrupt Mask Register (TIMSK1).

Биты 1 и 0, ACIS1, ACIS0: Analog Comparator Interrupt Mode Select

Эти биты определяют, какое из событий изменения уровня на выходе компаратора приведет к срабатыванию прерывания Analog Comparator. В таблице ниже перечислены возможные настройки для этих бит.

Таблица 23-1. Биты ACIS1/ACIS0, определяющие событие прерывания на выходе компараторе.

ACIS1 ACIS0 Режим прерывания
0 0 Прерывание срабатывает при изменении лог. уровня на выходе компаратора.
0 1 Зарезервировано
1 0 Прерывание при спаде уровня на выходе компаратора (переход 1 -> 0).
1 1 Прерывание при нарастании уровня на выходе компаратора (переход 0 -> 1).

Когда меняются биты ACIS1/ACIS0, должно быть запрещено прерывание Analog Comparator путем очистки бита ACIE в регистре ACSR. В противном случае может произойти прерывание компаратора.

Digital Input Disable Register 1 – DIDR1

Разряд 7 6 5 4 3 2 1 0  
    -     -     -     -     -     -     -   AIN0D ADCSRB
Чтение/запись R R R R R R R R/W  
Исх. значение 0 0 0 0 0 0 0 0  

Бит 0 AIN0D: AIN0 Digital Input Disable

Когда в этот бит записана лог. 1, то запрещается входной цифровой буфер вывода AIN0. Соответствующий бит регистра PIN будет всегда читаться как 0, когда установлен бит AIN0D. Когда аналоговый сигнал прикладывается к выводу AIN0, и не требуется подача цифрового сигнала с этого вывода, в бит AIN0D следует записать лог. 1, чтобы уменьшить потребление мощности в цифровом входном буфере.

[Мультиплексированный вход Analog Comparator]

Можно выбрать любой из выводов ADC13..0 (кроме ADC2 и ADC4, этих входов нет на корпусе чипа), чтобы подать с них сигнал на инверсный вход компаратора AIN-. Мультиплексор ADC используется для выбора этого входа, так что для использования этой функции ADC должно быть выключено. Если бит Analog Comparator Multiplexer Enable (ACME в регистре ADCSRB) установлен, и ADC выключен (ADEN в регистре ADCSRA в лог. 0), то биты MUX2..0 в ADMUX выбирают входной вывод, чтобы заменить его уровнем сигнал на инверсном входе Analog Comparator, как показано в таблице ниже. Если бит ACME очищен, или установлен бит ADEN, то на инверсный вход Analog Comparator подается опорное напряжение (Bandgap reference).

Таблица 23-2. Мультиплексирование входа Analog Comparator.

ACME ADEN MUX2..0 Инверсный вход компаратора (AIN-)
0 x xxx Опорный уровень Bandgap.
1 1 xxx Опорный уровень Bandgap.
1 0 000 ADC0
001 ADC1
010 Не применимо
011
100 ADC4
101 ADC5
110 ADC6
111 ADC7

Примечание: в предыдущем предложении ошибка, потому что утверждение, что выбор входа осуществляется битами MUX2..0 (что также показано в таблице 23-2) противоречит с тем, что якобы можно выбрать любой из выводов ADC13..0.

[Ссылки]

1. ATmega16U4/ATmega32U4 DATASHEET site:microchip.com.
2. ATmega16 (32): аналого-цифровой преобразователь (ADC).