I prepared a sketch with SoftwareTimer and used sd_app_evt_wait() function to put my XIAO to LOWPWR mode
How can I check if this is working ?
The sketch is compiling, it is running …but I do not have a proper power meter to check if this sketch really make my XIAO running at low power.
this is my sketch
#include <Arduino.h>
#include <Adafruit_TinyUSB.h> // for Serial
#include <bluefruit.h>
/* SoftwareTimer is a helper class that uses FreeRTOS software timer
* to invoke callback. Its periodic timing is flexible as opposed to
* hardware timer and cannot be faster than rtos's tick which is configured
* at ~1 ms interval.
*
* If you need an strict interval timing, or faster frequency, check out
* the hw_systick sketch example that use hardware systick timer.
*
* http://www.freertos.org/RTOS-software-timer.html
*/
SoftwareTimer blinkTimer;
void setup()
{
Serial.begin(115200);
Bluefruit.begin(); // Sleep functions need the softdevice to be active.
sd_power_mode_set(NRF_POWER_MODE_LOWPWR);
pinMode(LED_BUILTIN, OUTPUT); // initialize digital pin LED_BUILTIN as an output.
blinkTimer.begin(1000, blink_timer_callback); // Configure the timer with 1000 ms interval, with our callback
blinkTimer.start(); // Start the timer
}
void loop()
{
// do nothing here
}
/**
* Software Timer callback is invoked via a built-in FreeRTOS thread with
* minimal stack size. Therefore it should be as simple as possible. If
* a periodically heavy task is needed, please use Scheduler.startLoop() to
* create a dedicated task for it.
*
* More information http://www.freertos.org/RTOS-software-timer.html
*/
void blink_timer_callback(TimerHandle_t xTimerID)
{
// freeRTOS timer ID, ignored if not used
(void) xTimerID;
Serial.println("timer callback");
digitalToggle(LED_BUILTIN);
sd_app_evt_wait(); // puts the nrf52 to sleep when there is nothing to do
}
Thanks for help.