Hi Nordic,
On SDK10.0 with QFACA nrf51, I find a GPIOTE problem. With sdk6.1 and app_gpiote module, I got no such problem. I make use of SPI0,low accuracy GPIOTE on 4 custom pins and softdevice 8.1. My application works ok for hours, but would receive no GPIOTE event callbacks forever, which is registered by nrf_drv_gpiote_in_init. I need low accuracy to keep low power consumption. And I set the pullup mode of my pins correctly.
static void intpin_init(void)
{
// Note: Array must be static because a pointer to it will be saved in the Intpin handler
// module.
static hal_intpin_cfg_t intpins[] =
{
#if !ACCEL_USE_TIMER_POLL
{ACCEL_INT_PIN, HAL_INTPIN_EDGE_HI2LO, NRF_GPIO_PIN_NOPULL, NRF_GPIO_PIN_NOPULL, intpin_event_handler},
#endif
{TP_KEY0_PIN, HAL_INTPIN_EDGE_HI2LO, NRF_GPIO_PIN_PULLUP, NRF_GPIO_PIN_NOPULL, intpin_event_handler},
{TP_KEY1_PIN, HAL_INTPIN_EDGE_HI2LO, NRF_GPIO_PIN_PULLUP, NRF_GPIO_PIN_NOPULL, intpin_event_handler},
{HR_INT_PIN, HAL_INTPIN_EDGE_HI2LO, NRF_GPIO_PIN_PULLUP, NRF_GPIO_PIN_PULLDOWN, intpin_event_handler},
/* change GPIOTE_CONFIG_NUM_OF_LOW_POWER_EVENTS if exceeds 4 */
{USB_DET_PIN, HAL_INTPIN_EDGE_BOTH, NRF_GPIO_PIN_PULLUP, NRF_GPIO_PIN_NOPULL, intpin_event_handler},
};
HAL_INTPIN_INIT(intpins, sizeof(intpins) / sizeof(intpins[0]));
hal_intpin_enable_pin(TP_KEY0_PIN);
hal_intpin_enable_pin(TP_KEY1_PIN);
hal_intpin_enable_pin(USB_DET_PIN);
}
And I would call hal_intpin_(enable&disable)_pin on HR_INT_PIN periodly (1 minute). Please check my code for details. hal_intpin.c hal_intpin.h nrf_drv_config.h