LowPower.idle не ждет

Я пытаюсь заставить Arduino ждать в режиме ожидания с низким энергопотреблением, заданном библиотекой LowPower, созданной Rocketscream на Uno. Однако, когда я пытаюсь заставить его ждать 8 секунд, кажется, что он вообще не останавливается. Кто-нибудь знает, как сделать так, чтобы он ждал целых 8 секунд перед запуском следующей строки кода?

Вот код:

#include "LowPower.h"

void setup() {
   Serial.begin(9600);
}

void loop() {
   delay(100);
   Serial.println("above");
   delay(100);

   LowPower.idle(SLEEP_8S, ADC_OFF, TIMER2_OFF, TIMER1_OFF, TIMER0_ON, SPI_OFF, USART0_OFF, TWI_OFF);

   delay(100);
   Serial.println("below");
}

Я ожидал бы, что это напечатает "выше", затем подождите 8 секунд, затем напечатает "ниже", а затем повторите это снова. Но что происходит, так это то, что он проходит прямо через LowPower.idle, ничего не делая, и вывод выглядит так:

1:12:14.547 --> выше

21:12:14.746 –> ниже

21:12:14,845 -> выше

21:12:15.044 --> ниже

21:12:15.144 --> выше

21:12:15.376 --> ниже

...и так далее.

Если у кого-нибудь есть идеи, как сделать ожидание бездействующим, было бы здорово.

Спасибо!

, 👍0

Обсуждение

Попробуйте поставить cli(); перед LowPower.idle(...). Я думаю, что timer0 (используемый для миллисекунд и задержки) прерывает ваше время простоя., @Gerben

Спасибо за ответ, но это, похоже, ничего не меняет., @Hayden


1 ответ


1

К вашему сведению, эта проблема была поднята почти 3 года назад, но ответа от автора не было: https://github.com/rocketscream/Low-Power/issues/36

,

Это печально, но спасибо за эту информацию!, @Hayden