nRF52833 Errata 78 and Writing to Deprecated TASKS_SHUTDOWN Register

Hello,

Looking at the errata entry [78] TIMER: High current consumption when using timer STOP task only, I see that it recommended to use TASKS_SHUTDOWN instead of TASKS_STOP to actually turn off the timer and reduce power consumption. However, the TASKS_SHUTDOWN register is deprecated. Is it still valid to write to this register and will it still turn off the timer and reduce current? Why is it deprecated?

Regards,

Akash Patel

  • Hi Akash,

    I looked at the history and the SHUTDOWN task is marked as deprecated because there is no short between it and STOP. Using the term is a bit confusing, particularly as it is required for the workaround, but the "deprecated" state has no practical consequences. 

  • Hello Einar,

    So how do we reduce the power consumption caused due to the timer not shutdown?

    In our project, we are using the nRF52833 chipset for 802.15.4 transmission. We would like to turn off the radio and all its supporting peripherals such that we are in the lowest possible current draw state. We noticed that the 802.15.4 driver (version.1.6.0/1) uses timers, while turning off the radio we found that the driver is making an inline call  for “nrf_timer_task_trigger(TIMER, NRF_TIMER_TASK_SHUTDOWN)”. After knowing that the the SHUTDOWN Register is deprecated. what is the best way to turn-off the timer?  

    I also notice when I don't use the Radio(802.15.4) functionality I receive about 300-350uA saving compared to the time I use my radio(This measurement is when the processor is running pwr_mgmt_run()).

    Is there a specific Register other than the SHUTDOWN Register what we can write to to shutdown the timer?
    Is there a specific process to turn off the timer so that we obtain best power savings? 

    Best Regard,

    Arjun Warty

  • HI Arjun,

    You should not put much emphasis on the "deprecated" statement. The feature is there and will not go way. The best way to turn off the timer is still to use SHUTDOWN.

    Arjun said:
    Is there a specific Register other than the SHUTDOWN Register what we can write to to shutdown the timer?

    No.

    Arjun said:
    Is there a specific process to turn off the timer so that we obtain best power savings? 

    Use SHUTDOWN.

  • Hello Einar,,

    Couple of Additional questions,

    1. How do we turn off the radio properly with all the Timers and Peripherals in SYSTEM _ON Mode?

    2. How to turn off the TIMER such that the current draw is at its minimum in SYSTEM _ON Mode? (When I say minimum I mean few uA not the value that we are seeing of about 300-350uA)

    3. Can we reach the current draw of few uA in SYSTEM_ON Mode if the timers have been used at any point of time? Can you provide a direct function from the SDK that does that?

    Best Regard,

    Arjun Warty

  • Hi Arjun,

    Arjun said:
    1. How do we turn off the radio properly with all the Timers and Peripherals in SYSTEM _ON Mode?

    As you are seeing 300-350 uA you you probably have the HF clock running for some reason. That could either be because you have started it from SW, or that some peripheral still request it because it is not properly stopped. The only general rule is that you need to stop all peripherals that have been used for them to consume as little power as possible, and importantly not request a clock. Which these are are application specific as it depends on what you have used. For the RADIO itself, you have the STOP and DISABLE tasks. You can also power it down completely using the POWER register, but then it must be re-configured after being powered on.

    Arjun said:
    2. How to turn off the TIMER such that the current draw is at its minimum in SYSTEM _ON Mode? (When I say minimum I mean few uA not the value that we are seeing of about 300-350uA)

    That is by first using the STOP task and then using the SHUTDOWN task. If you see 300-350 after shutting down the timer like this it is likely caused by something other than the timer.

    Arjun said:
    3. Can we reach the current draw of few uA in SYSTEM_ON Mode if the timers have been used at any point of time? Can you provide a direct function from the SDK that does that?

    Yes. Any Bluetooth example in the SDK will do this, though here you will not see the code, as the SoftDevice which uses TIMER0 is closed source. Note that you will need to disable logging to see low sleep currents in the example projects.

    Have you been able to narrow down that the timer is the cause of your high current consumption, or is it just an assumption? If the timer is the problem, can you show the code where you stop and shutdown the timer?

Related