Attini816 Резервный компаратор, пробуждение по прерываниюC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Attini816 Резервный компаратор, пробуждение по прерыванию

Сообщение Anonymous »

Ищу совет о том, как лучше всего переходить в режим сна и пробуждать ATtiny816 с запуском megatinycore в Arduino.
У меня встроенный компаратор настроен следующим образом:

Код: Выделить всё

  #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();
Это прекрасно работает и запускает TapInterrupt нормально. Проблема в том, что теперь я хочу перевести чип в режим ожидания, чтобы сэкономить заряд батареи, вот так:

Код: Выделить всё

  wdt_disable();
set_sleep_mode(SLEEP_MODE_STANDBY);
sleep_enable();
sleep_cpu();
sleep_disable();
Проблема в том, что, хотя я настроил компаратор на продолжение работы в режиме ожидания, прерывание не срабатывает, что, как я предполагаю, связано с этим разделом в руководстве ATtiny816:

В режиме ожидания кондиционер по умолчанию отключен. Если бит «Работа в режиме ожидания» (RUNSTDBY) в регистре управления A
(ACn.CTRLA) записан в 1, AC продолжит работать, но регистр состояния не будет обновлен, и
прерывания не генерируются, если другие модули не запрашивают CLK_PER, но события и вывод пэда будут
обновлены.

Итак Исходя из этого, я предполагаю, что мне нужно разрешить какому-то другому модулю/периферийному устройству оставаться активным в режиме ожидания, но мой вопрос в том, что еще мне следует включить в режиме ожидания, чтобы выполнить это требование, а также использовать наименьшее количество батареи? Включить его в Arduino?
Я видел, что режим простоя также будет работать, но в идеале я хочу, чтобы он потреблял как можно меньше заряда батареи.

Подробнее здесь: https://stackoverflow.com/questions/786 ... n-interupt
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Attini816 Резервный компаратор, пробуждение по прерыванию
    Anonymous » » в форуме C++
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Вызов Trace.Fail() всегда приводит к прерыванию выполнения кода.
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Вызов Trace.Fail() всегда приводит к прерыванию выполнения кода.
    Anonymous » » в форуме C#
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Вызов Trace.Fail() всегда приводит к прерыванию выполнения кода.
    Anonymous » » в форуме C#
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Как избавиться от предупреждения «Не все байты были прочитаны из S3ObjectInputStream, что приводит к прерыванию HTTP-сое
    Anonymous » » в форуме JAVA
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»