Использование аналогового компаратора на ATmega32u4

Я (в настоящее время) анализирую аналоговый сигнал PPM, используя Arduino Uno R3, используя аналоговый компаратор ASCR и аналоговые аппаратные прерывания, используя AIN0 и AIN1. Я применяю определенное отрицательное напряжение сравнения, используя линейный регулятор напряжения на AIN0 и сигнал на AIN1.

Фрагменты кода:

настройка

 ACSR = B00011011;

вне других закрытий

  ACSR  = B00011011;

Я пытаюсь перенести этот проект на Arduino (совместимый) Pro Micro от SparkFun. техническое описание указывает AIN0 на контакте 1 ATmega32u4, но не содержит ссылки на AIN1.

Техническое описание описывает использование аналогового компаратора на странице 289:

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

Я подключил сигнал к контакту 7 Arduino, напряжение сравнения к контакту 20 Arduino (аналог 2) и установил следующие параметры регистра ADMUX:

ISR(ANALOG_COMP_vect) {
   CRCArduinoPPMChannels::INT0ISR();
}

Прерывания запускаются, но напряжение компаратора (AIN-) не соблюдается. Будем признательны за любую помощь.

, 👍1

Обсуждение

Вы забыли установить ACME?, @Ignacio Vazquez-Abrams

Да! Установка бита ACME в 1 и ADEN в 0 сделала это. Спасибо, @Jason

3 года и 9 месяцев спустя, у вас случайно не остался ваш код, не могли бы вы поделиться всей настройкой аналогового компаратора, пожалуйста? (Это, конечно, не ответ, извините, я не могу просто написать комментарий, я получаю «У вас должно быть 50 репутации, чтобы комментировать».), @Nicolas

На самом деле... да. https://github.com/jjluebke/PigeonPPM/blob/master/PigeonPPM.ino, @Jason


1 ответ


Лучший ответ:

1

AIN- не будет подключен к мультиплексору ADC, если не установлен ACME и не очищен ADEN. Не забудьте сделать это.

,