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

The Problem with SAADC Using RTC

Hi, everyone,

I am pretty new to nRF52 development. Right now, I have an issue with the SAADC trigger by RTC, which I follow this example. The issue that I have right now is that it only works when I use the programmer to power it, which is a DAP Link programmer. If I power it with CR2032, it draws 5 mA and not advertise itself. It only draws 0.5 mA if I do not initialize the SAADC. It is still not working even I plug it back to the programmer to power it. I have to uncomment the lfclk_config() and rtc_config. Also, in the example, it calls saadc_init() in the main function. In my case, it doesn't work if I do that.

  

// My main function
    bool erase_bonds;

    // Initialize.
    saadc_init();
    log_init();
    timers_init();
    gpio_config();
    //lfclk_config();                                  //Configure low frequency 32kHz clock
    //rtc_config();                                    //Configure RTC. The RTC will generate periodic interrupts. Requires 32kHz clock to operate.

    power_management_init();
    ble_stack_init();
    gap_params_init();
    gatt_init();
    services_init();
    advertising_init();

    //saadc_init();





//    #ifdef UART_PRINTING_ENABLED
//    uint32_t err_code = NRF_LOG_INIT(NULL);
//    APP_ERROR_CHECK(err_code);                       //Configure Logging. LOGGING is used to show the SAADC sampled result. Default is UART, but RTT can be configured in sdk_config.h
//    NRF_LOG_DEFAULT_BACKENDS_INIT();
//    NRF_LOG_INFO("\n\rSAADC Low Power Example.\r\n");	
//#endif //UART_PRINTING_ENABLED	
//    
//#ifdef UART_PRINTING_ENABLED
//                                       //Configure UART. UART is used to show the SAADC sampled result.
//    NRF_LOG_INFO("\n\rSAADC HAL simple example.\r\n");	
//#endif //UART_PRINTING_ENABLED	

    // Start execution.
    NRF_LOG_INFO("started.");
    application_timers_start();
    advertising_start(erase_bonds);

    // Enter main loop.
    for (;;)
    {
        idle_state_handle();
    }

Thank you in advance

Jack

Related