XIAO BLE Sense in deep sleep mode

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.

1 Like