I am using the Sys Events to monitor the POFWARN but it appear that I get a POFWARN event repeatedly when the voltage is below the threshold is this normal or do I need to clear the POFWARN system event?
static uint8_t counter = 0;
static void sys_evt_dispatch(uint32_t sys_evt)
{
if (sys_evt == NRF_EVT_POWER_FAILURE_WARNING)
{
switch (counter)
{
case 0:
{
LEDS_ON(BSP_LED_0_MASK);
LEDS_OFF(BSP_LED_1_MASK|BSP_LED_2_MASK|BSP_LED_3_MASK);
counter++;
break;
}
case 1:
{
LEDS_ON(BSP_LED_1_MASK);
LEDS_OFF(BSP_LED_0_MASK|BSP_LED_2_MASK|BSP_LED_3_MASK);
counter++;
break;
}
case 2:
{
LEDS_ON(BSP_LED_0_MASK|BSP_LED_1_MASK);
LEDS_OFF(BSP_LED_2_MASK|BSP_LED_3_MASK);
counter++;
break;
}
case 3:
{
LEDS_ON(BSP_LED_2_MASK);
LEDS_OFF(BSP_LED_0_MASK|BSP_LED_1_MASK|BSP_LED_3_MASK);
counter++;
break;
}
case 4:
{
LEDS_ON(BSP_LED_0_MASK|BSP_LED_2_MASK);
LEDS_OFF(BSP_LED_1_MASK|BSP_LED_3_MASK);
counter++;
break;
}
case 5:
{
LEDS_ON(BSP_LED_1_MASK|BSP_LED_2_MASK);
LEDS_OFF(BSP_LED_0_MASK|BSP_LED_3_MASK);
counter++;
break;
}
case 6:
{
LEDS_ON(BSP_LED_1_MASK|BSP_LED_2_MASK);
LEDS_OFF(BSP_LED_0_MASK|BSP_LED_3_MASK);
counter++;
break;
}
case 7:
{
LEDS_ON( BSP_LED_3_MASK);
LEDS_OFF(BSP_LED_0_MASK|BSP_LED_1_MASK|BSP_LED_2_MASK);
counter= 0;
break;
}
default:
counter = 0;
break;
}
}
}
ERRRTN gBatteryInit(void)
{
uint32_t err_code;
err_code = sd_power_pof_enable(POWER_POFCON_POF_Enabled);
APP_ERROR_CHECK(err_code);
err_code = sd_power_pof_threshold_set(POWER_POFCON_THRESHOLD_V25);
APP_ERROR_CHECK(err_code);
// Subscribe for Sys events.
err_code = softdevice_sys_evt_handler_set(sys_evt_dispatch);
APP_ERROR_CHECK(err_code);
LEDS_CONFIGURE(LEDS_MASK);
counter = 0;
LEDS_OFF(LEDS_MASK);
return ERR_OK;
}