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

End Device reports bad behavior on low power device

Hi,

We have been working with an end device based on nRF52840 with nRF5_SDK_for_Thread_and_Zigbee_v4.0.0_dc7186b, Softdevice and FreeRTOS.

We built 2 configurations for this device: normal and low power. The last one contains some considerations like:

- At FreeRTOSConfig.h we set configUSE_TICKLESS_IDLE to 1

-We enabled SoftDevice Low power mode and enabled DCDC mode

-Also set SCB_SCR_SLEEPDEEP_Msk flag

Once joined to a Zigbee network, some cluster bindings are performed automatically to the coordinator and some reports are automatically being sent. The max time for each one is 60 seconds while the min timeout is 0.

On normal configuration, attribute reporting is accomplished without problem every 60 seconds. But in the low power configuration, times get longer and seem to increase with the time.

Is there any special consideration or appropiate setting for low power mode?

Regards,

Santiago

Parents
  • Hi Santiago,

    Is the problem that attribute reporting takes longer than 60 seconds when in low power mode? Is the time it takes the same every time or is it a random delay, so the time it takes changes every time?

    How are you implementing the low power mode on the end-device?

    Best regards,

    Marte

  • Hi Marte,

    The attribute reporting takes more than max time (60 seconds) and seems to increase on further reports (not random)

    The low power mode is implemented with the changes detailed above. Also we are implementing this in the Zigbee Task (FreeRTOS):

    zb_void_t zb_osif_go_idle(zb_void_t)
    {
        /* Intentionally empty implementation */
    #ifdef LOW_POWER
        nrf_802154_sleep_if_idle();
        /*do not set long timeout if joining*/
        if(ZIGBEE_STATE_JOINING != zigbee.state)
        {
          zigbee.cmd_queue_timeout = ZIGBEE_QUEUE_LONG_TIMEOUT;
        }
    #endif
    }

    And also calling nrf_802154_sleep_if_idle() function on ZB_COMMON_SIGNAL_CAN_SLEEP signal handler.

    Regards,

    Santiago

      

Reply
  • Hi Marte,

    The attribute reporting takes more than max time (60 seconds) and seems to increase on further reports (not random)

    The low power mode is implemented with the changes detailed above. Also we are implementing this in the Zigbee Task (FreeRTOS):

    zb_void_t zb_osif_go_idle(zb_void_t)
    {
        /* Intentionally empty implementation */
    #ifdef LOW_POWER
        nrf_802154_sleep_if_idle();
        /*do not set long timeout if joining*/
        if(ZIGBEE_STATE_JOINING != zigbee.state)
        {
          zigbee.cmd_queue_timeout = ZIGBEE_QUEUE_LONG_TIMEOUT;
        }
    #endif
    }

    And also calling nrf_802154_sleep_if_idle() function on ZB_COMMON_SIGNAL_CAN_SLEEP signal handler.

    Regards,

    Santiago

      

Children
Related