complex GPIO interrupt

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

I configured a complex GPIO for interrupt mode CY_U3P_GPIO_INTR_NEG_EDGE but never see the interrupt callback getting called.  The firmware does load fine.  I tested the same code on a simple GPIO configuration -- just changed complex to simple config and io matrix -- and the interrupt works fine.  Any idea why the complex GPIO configuration won't work?  Does something else need to be called/configured?  The callback function is registered in GpioInit(). 

   

    // complex configuration

   

    gpioComplexConfig.outValue = CyTrue;
    gpioComplexConfig.inputEn = CyTrue;
    gpioComplexConfig.driveLowEn = CyFalse;
    gpioComplexConfig.driveHighEn = CyFalse;
    gpioComplexConfig.intrMode = CY_U3P_GPIO_INTR_NEG_EDGE;
    gpioComplexConfig.pinMode = CY_U3P_GPIO_MODE_STATIC;
    gpioComplexConfig.timerMode = CY_U3P_GPIO_TIMER_SHUTDOWN;
    gpioComplexConfig.threshold = 0;
    gpioComplexConfig.timer = 0;
    gpioComplexConfig.period = 0;
    status = CyU3PGpioSetComplexConfig(34, &gpioComplexConfig);

   

   // register interrupt

   

    status = CyU3PGpioInit(&gpioClock, GpioInterruptCallback);

   

   // IO  matrix

   

    io_cfg.isDQ32Bit = CyFalse;
    io_cfg.s0Mode = CY_U3P_SPORT_INACTIVE;
    io_cfg.s1Mode = CY_U3P_SPORT_INACTIVE;
    io_cfg.useUart   = CyTrue;
    io_cfg.useI2C    = CyFalse;
    io_cfg.useI2S    = CyFalse;
    io_cfg.useSpi    = CyTrue;
    io_cfg.lppMode   = CY_U3P_IO_MATRIX_LPP_DEFAULT;
    io_cfg.gpioSimpleEn[0]  = 0;
    io_cfg.gpioSimpleEn[1]  = 0;
    io_cfg.gpioComplexEn[0] = 0;
    io_cfg.gpioComplexEn[1] = 0x6;
    status = CyU3PDeviceConfigureIOMatrix (&io_cfg);

0 Likes
3 Replies
Anonymous
Not applicable

Hi,

   

We will check this internally and update you.

   

Regards,

   

-Madhu Sudhan

0 Likes
Anonymous
Not applicable

Hi Madhu,

   

Any update on this issue?

   

Thanks.

0 Likes
Anonymous
Not applicable

Hi,

   

Sorry for the delay. We tested and inferred that interrupts only work on simple gpios.

   

Regards,

   

-Madhu Sudhan

0 Likes