Hi all, I am using a RTCZero library to put the board into standby mode every 10 seconds and when the board wakes up, the LED will blink. Now I want to add an external interrupt to wake up the board even during the standby mode. How should I do? I have looked many posts online and tried some codes but it seems that the external interrupt only works when the board is wake up from standby mode. Following is my code. Any suggestions are appreciated!!
#include <RTCZero.h>
RTCZero rtc;
const byte seconds = 0;
const byte minutes = 00;
const byte hours = 00;
const byte day = 15;
const byte month = 7;
const byte year = 19;
bool matched = false;
void setup()
{
pinMode(2, OUTPUT); //set LED pin to output
pinMode(0, INPUT_PULLUP);
digitalWrite(2, LOW); //turn LED off
Serial.begin(9600);
Serial1.begin(9600);
rtc.begin(); //Start RTC library, this is where the clock source is initialized
rtc.setTime(hours, minutes, seconds); //set time
rtc.setDate(day, month, year); //set date
rtc.setAlarmTime(00, 00, 10); //set alarm time to go off in 10 seconds
//following two lines enable alarm, comment both out if you want to do external interrupt
rtc.enableAlarm(rtc.MATCH_HHMMSS); //set alarm
rtc.attachInterrupt(alarmMatch); //creates an interrupt that wakes the SAMD21
[b]attachInterrupt(0, Inter, FALLING);[/b]
}
void loop() {
if (matched)
matched = false;
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(2, LOW);
delay(1000);
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(2, LOW);
delay(1000);
int alarmSeconds = rtc.getEpoch();
alarmSeconds += 10;
rtc.setAlarmEpoch(alarmSeconds);
rtc.standbyMode(); // Sleep until next alarm match
}
void alarmMatch() {
matched = true;
}
void Inter() {
Serial1.write("Hello world\n");
}