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

nrf52 very low power counter

Hi

I am trying to make an activity tracker with very low power conumption with the nrf52. The Idea is to count interrupts from an accelerometer thtat are generated if the acceleration rises above a certain level.

I found only a specification of the consumption with the timer running. What is the power conumption of the Timer/Counter block when in counter mode?

  • Hi Leandro

    Yes, as you have already observed, the nRF52832 OPS 0.6 does not include any current consumption specification for Low Power Counter. It is not specified yet. There are number of peripherals that do not yet have proper specifications, as the measurements have not been carried out yet. The PCA10036 board for the nRF52832 contains anyway a preview kit and the specification is still not final, with version 0.6.

    Soon there will be released an engineering version of the chip and production version is scheduled for january 2016. We can expect the specification to improve in this regards when the engineering release is out, scheduled for october 2015.

    Update 14.4.2016 Unfortunately, there is still no current consumption data available for the low power counter. I have made a request for it but nothing is available yet. However, I made an example which sets TIMER0 into counter mode and lets RTC0 tick event count up the TIMER counter. The results are as follows:

    • TIMER counter disabled: ~4uA
    • TIMER counter enabled, no TASKS_COUNT event triggered: ~11uA
    • TIMER counter enabled, TASKS_COUNT event triggered 8 times per second: ~11uA
    • TIMER counter enabled, TASKS_COUNT event triggered 100 times per second: ~23uA

    So it seems the TIMER in counter mode consumes ~7uA on my PCA10040 v1.1.0 board with nRF52832 QFAAB0 rev 1. That is the best information I can provide at this point for low power counter current consumption. I attach the test code below which I made for nRF5 SDK 11.0.0.

    timer_counter_mode_low_power.zip

  • Stefan, version 1.0 of the product specification for the nRF52 still does not include a current consumption specification for the LowPowerCounter mode. Can you get any clarification from the characterization engineers?

  • Hello Stefan, I am trying to achieve the same kind of low consumption counter with nRF52 and SDK 12.1. I tried to port your sample code and adapt the SDK_config file with what was in the nrf_drv_config but with no luck. None of the counter modes (low power or not) are doing anything with this sample on SDK 12.1 Is it expected behavior? How could I achieve a low power counter on SDK12?

    Here are my SDK_config defines:

    // <e> TIMER_ENABLED - nrf_drv_timer - TIMER periperal driver
    //==========================================================
    #ifndef TIMER_ENABLED
    #define TIMER_ENABLED 1
    #endif
    #if  TIMER_ENABLED
    // <o> TIMER_DEFAULT_CONFIG_FREQUENCY  - Timer frequency if in Timer mode
    
    // <0=> 16 MHz
    // <1=> 8 MHz
    // <2=> 4 MHz
    // <3=> 2 MHz
    // <4=> 1 MHz
    // <5=> 500 kHz
    // <6=> 250 kHz
    // <7=> 125 kHz
    // <8=> 62.5 kHz
    // <9=> 31.25 kHz
    
    #ifndef TIMER_DEFAULT_CONFIG_FREQUENCY
    #define TIMER_DEFAULT_CONFIG_FREQUENCY 0
    #endif
    
    // <o> TIMER_DEFAULT_CONFIG_MODE  - Timer mode or operation
    
    // <0=> Timer
    // <1=> Counter
    #ifndef TIMER_DEFAULT_CONFIG_MODE
    #define TIMER_DEFAULT_CONFIG_MODE NRF_TIMER_MODE_LOW_POWER_COUNTER
    #endif
    
    // <o> TIMER_DEFAULT_CONFIG_BIT_WIDTH  - Timer counter bit width
    
    // <0=> 16 bit
    // <1=> 8 bit
    // <2=> 24 bit
    // <3=> 32 bit
    
    #ifndef TIMER_DEFAULT_CONFIG_BIT_WIDTH
    #define TIMER_DEFAULT_CONFIG_BIT_WIDTH 3
    #endif
    
    // <o> TIMER_DEFAULT_CONFIG_IRQ_PRIORITY  - Interrupt priority
    
    
    // <i> Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice
    // <0=> 0 (highest)
    // <1=> 1
    // <2=> 2
    // <3=> 3
    // <4=> 4
    // <5=> 5
    // <6=> 6
    // <7=> 7
    
    #ifndef TIMER_DEFAULT_CONFIG_IRQ_PRIORITY
    #define TIMER_DEFAULT_CONFIG_IRQ_PRIORITY 6
    #endif
    
    // <q> TIMER0_ENABLED  - Enable TIMER0 instance
    
    
    #ifndef TIMER0_ENABLED
    #define TIMER0_ENABLED 1
    #endif
    
Related