Hello all,
I am developing an application from the ble_cgms example on the nrf5_sdk 17 using the Softdevice S132.
I have implemented a gpiote interrupt whenever the state of the input goes low it generates a event, the state of the pin is controlled by a external chip. I initialized and started the interrupt in the main and could see it on the debugger.
When I connect the BLE the interrupt stops working until I enable a specific service via the BLE. I can see that before the service enables, the interrupt never fires because I placed a counter in the event handler.
I am trying to understand what is happening, in the Softdevices specification says that all interrupts are directed to the softdevices, but how? Does the softdevices block or disable the interrupts? If so when it enables it again?
Event handler and initialization:
static void int0_event_handler(nrf_drv_gpiote_pin_t pin, nrf_gpiote_polarity_t action)
{
ucInterrupted = 1;
InterruptCount++;
NRF_LOG_DEBUG("Interrupt count =%d", InterruptCount);
printf("\nInterrupt count =%d", InterruptCount);
}
err_code = nrf_drv_gpiote_in_init(INT0_PIN, &in_config, int0_event_handler);
VERIFY_SUCCESS(err_code);
nrf_drv_gpiote_in_event_enable(INT0_PIN, true);
Debugger before the connection, interrupt firing normally

Debugger after the connection, the interrupt never fires in this situation:

Debugger after the service enable, the interrupt fires again:
