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

GPIOTE interrupt not triggered

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

Parents Reply Children
No Data
Related