This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Let the nrf51822 wake up after 3 hours

Hi, I beginning now to program nrf51822. I would like to let the nrf51822 wake up after 3 hours by using a software timer interrupt. Should I use power_manage()? Before each power_manage() call, I stop all timer running. Current consumption is always more that 10 uA so the uC seems to wake up immediately after power_manage() call. How can I let the uC wake up ONLY through a 3_hours_timer_handler call? I'm using softdevice s130. Thanks!

  • Hi,

    There are two different system modes on the nRF. System ON and System OFF. In System ON mode the CPU can either be active or sleeping. The CPU enters sleep by executing the WFI or WFE instruction ( or power_manage() when using the SoftDevice). Here the the CPU will wake up as a result of an interrupt.

    For nRF51 the expected base current consumption for the System ON mode is about 2.6uA. If you have other peripherals active, this will add additional current consumption.


    In System OFF mode, all clock sources and peripherals on the chip are turned off. Since the all clocks are turned off, you will not be able to wake up from this mode using a timer on the nRF51.

    When in System OFF mode, the device can be woken up through one of the following signals:

    • The DETECT signal, optionally generated by the GPIO peripheral
    • The ANADETECT signal, optionally generated by the LPCOMP module
    • The SENSE signal, optionally generated by the NFC module to “wake-on-field”
    • A reset

    When the system wakes up from System OFF mode, it gets reset.


    For more information see this post about nRF51 Low power modes and power profiles

  • The immediately wake-up after power_manage() means that a interrupt/event is triggered. power_manage() is only a function that will make CPU to go to sleep and wait for events. Check the power settings of the peripherals that you are using in your application.

  • Thank for your answer! Before calling power_manage(), I stop advertising and all timers running. So the triggered event isn't related to timers or advertising. Is there a way to know which event caused the wake up?

Related