Я работаю над фрагментом кода, который считает импульсы, пока микроконтроллер находится в состоянии глубокого сна. Я хотел бы, чтобы внешнее прерывание просто запускало ISR, которое просто увеличивает счетчик. Однако я заметил, что данные передаются всякий раз, когда генерируются импульсы, если указанный в коде интервал c установлен. Ниже приведен мой код, иллюстрирующий то, что я хотел бы сделать.
#include "LowPower.h"
const uint8_t btn =2;
volatile int power = 0;
void setup() {
Serial.begin(9600);
pinMode(btn, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(btn), count, FALLING);
}
void loop() {
Serial.print("Power: ");
Serial.println(power);
delay(50);
for (int i = 0; i < 8; i++) {
LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF); // Put Arduino in Sleep mode 8 times 8 seconds
}
}
void count() {
power += 1;
}
Из приведенного выше кода я ожидал бы увидеть, что последовательный оператор печатается примерно чуть более минуты каждый раз, но не всякий раз, когда генерируется прерывание. , Есть что-то, чего мне не хватает, спасибо.