soft device:s132
sdk:15.3.0
board:nRF52832 board (taiyo yuden EYSHCNZWZ)
Unable to receive event 'NRF_EVT_POWER_FAILURE_WARNING'
I implemented the following, but the event does not occur even if the voltage is V2.8 or less.
The value of POFCON after calling sd_power_pof_threshold_set (NRF_POWER_THRESHOLD_V28) is 0x1F.
Do you know the reason?
Implementation code
NRF_SDH_SOC_OBSERVER(m_soc_observer, 0, pof_evt_dispatch, NULL);
void pof_evt_dispatch(uint32_t sys_evt, void * p_context)
{
if (sys_evt == NRF_EVT_POWER_FAILURE_WARNING)
{
sd_nvic_SystemReset();
}
}
static void power_pof_init(void)
{
ret_code_t err_code = sd_power_dcdc_mode_set(NRF_POWER_DCDC_ENABLE);
APP_ERROR_CHECK(err_code);
err_code = sd_power_pof_enable(1);
APP_ERROR_CHECK(err_code);
err_code = sd_power_pof_threshold_set(NRF_POWER_THRESHOLD_V28);
APP_ERROR_CHECK(err_code);
}
sdk_config.c
sdk_config.c // <e> NRF_SDH_SOC_ENABLED - nrf_sdh_soc - SoftDevice SoC event handler //========================================================== #ifndef NRF_SDH_SOC_ENABLED #define NRF_SDH_SOC_ENABLED 1 #endif // <h> SoC Observers - Observers and priority levels //========================================================== // <o> NRF_SDH_SOC_OBSERVER_PRIO_LEVELS - Total number of priority levels for SoC observers. // <i> This setting configures the number of priority levels available for the SoC event handlers. // <i> The priority level of a handler determines the order in which it receives events, with respect to other handlers. #ifndef NRF_SDH_SOC_OBSERVER_PRIO_LEVELS #define NRF_SDH_SOC_OBSERVER_PRIO_LEVELS 2 #endif // <h> SoC Observers priorities - Invididual priorities //========================================================== // <o> BLE_ADV_SOC_OBSERVER_PRIO // <i> Priority with which SoC events are dispatched to the Advertising module. #ifndef BLE_ADV_SOC_OBSERVER_PRIO #define BLE_ADV_SOC_OBSERVER_PRIO 1 #endif // <o> BLE_DFU_SOC_OBSERVER_PRIO // <i> Priority with which BLE events are dispatched to the DFU Service. #ifndef BLE_DFU_SOC_OBSERVER_PRIO #define BLE_DFU_SOC_OBSERVER_PRIO 1 #endif // <o> CLOCK_CONFIG_SOC_OBSERVER_PRIO // <i> Priority with which SoC events are dispatched to the Clock driver. #ifndef CLOCK_CONFIG_SOC_OBSERVER_PRIO #define CLOCK_CONFIG_SOC_OBSERVER_PRIO 0 #endif // <o> POWER_CONFIG_SOC_OBSERVER_PRIO // <i> Priority with which SoC events are dispatched to the Power driver. #ifndef POWER_CONFIG_SOC_OBSERVER_PRIO #define POWER_CONFIG_SOC_OBSERVER_PRIO 0 #endif