Hi,
I'm running an app with softdevice v2.0.0 with SDK 11 on an nrf52832.
the app is using gpiote to handle incoming interrupt from another device.
to start handling the interrupt I run the following:
if (!nrf_drv_gpiote_is_init()) { APP_ERROR_CHECK(nrf_drv_gpiote_init()); } nrf_drv_gpiote_in_config_t config = GPIOTE_CONFIG_IN_SENSE_LOTOHI(false); nrf_drv_gpiote_in_init(ADXL362_INT2_PIN_OFFSET, &config, handler); nrf_drv_gpiote_in_event_enable(ADXL362_INT2_PIN_OFFSET, true);
and when I want to stop handling the interrupt I run the following:
if (nrf_drv_gpiote_is_init()) { nrf_drv_gpiote_in_event_disable(INT2_PIN_OFFSET); nrf_drv_gpiote_in_uninit(INT2_PIN_OFFSET); nrf_drv_gpiote_uninit(); }
in the main loop I check for pending IRQs using sd_nvic_GetPendingIRQ and I see sometimes that the GPIOTE_IRQ is pending.
to my understanding, disabling the gpiote_in_event on a given pin should clear the interrupt and thus if I always disable first before gpiote uninit I shouldn't get a pending GPIOTE_IRQ.
Am I missing something?
can someone help me understand how could this happen?
Thanks.