My device (nrf52832) has two signals triggering GPIOTE interrupts. I need to be as low power as possible, so both are setup to not use hi accuracy, making them share the PORT event. One signal is a button, and one is an accelerometer. After a few button presses, but not a fixed number of presses, the gpiote interrupt stops firing. I put a breakpoint at the top of nrfx_gpiote_irq_handler, and it never hits after the problem starts. I'm guessing that both signals are changing at the same time, since the button has tactile feedback when pressed, and the accelerometer is fairly sensitive. I've checked the NVIC, GPIOTE, and GPIO registers for any changes, and nothing is different after the interrupt stops working. The RTC interrupt continues to fire, however.
If I set the accelerometer's motion threshold high enough, the issue goes away, telling me that its likely a problem with both signals changing together. If I change the button's interrupt to be hi accuracy, and the problem also goes away. Neither of these are acceptable long term fixes though. The button is set to fire the interrupt on either edge (toggle), and the accelerometer is set to fire on a falling edge. When I changed the accelerometer's interrupt configuration to also toggle, and then poll the level in my handler, the issue seems to have gone away. This is acceptable, but it doesn't make sense.
Why does the interrupt stop firing, and why did this change fix the problem?