У меня встроенный компаратор настроен следующим образом:
Код: Выделить всё
#include
// Configure Piezo knock detection comparator parameters
Comparator.input_p = comparator::in_p::in0;
Comparator.reference = comparator::ref::vref_0v55;
Comparator.input_n = comparator::in_n::vref;
Comparator.hysteresis = comparator::hyst::large;
// Initialize comparator
Comparator.init();
Comparator.attachInterrupt(tapInterrupt, RISING);
// Enable the Analog Comparator to run in standby mode, and set to low power mode
AC_t& AC_struct = Comparator.getPeripheral();
AC_struct.CTRLA |= AC_LPMODE_bm | AC_RUNSTDBY_bm;
// Start comparator
Comparator.start();
Код: Выделить всё
wdt_disable();
set_sleep_mode(SLEEP_MODE_STANDBY);
sleep_enable();
sleep_cpu();
sleep_disable();
В режиме ожидания кондиционер по умолчанию отключен. Если бит «Работа в режиме ожидания» (RUNSTDBY) в регистре управления A
(ACn.CTRLA) записан в 1, AC продолжит работать, но регистр состояния не будет обновлен, и
прерывания не генерируются, если другие модули не запрашивают CLK_PER, но события и вывод пэда будут
обновлены.
Итак Исходя из этого, я предполагаю, что мне нужно разрешить какому-то другому модулю/периферийному устройству оставаться активным в режиме ожидания, но мой вопрос в том, что еще мне следует включить в режиме ожидания, чтобы выполнить это требование, а также использовать наименьшее количество батареи? Включить его в Arduino?
Я видел, что режим простоя также будет работать, но в идеале я хочу, чтобы он потреблял как можно меньше заряда батареи.
Подробнее здесь: https://stackoverflow.com/questions/786 ... n-interupt