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

NRF_EVT_POWER_FAILURE_WARNING event issue

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;
}
Related