I'm having trouble getting the GPIO ISR to fire.
I'm following the gpio_input_interrupt_am243x example code, except I want to use pin GPIO0_76
Is there something I'm not configuring? Do I have the correct intNum?
This is what my code looks like
void callback(void *args);
void gpio_hal_configure_interrupt(void) {
int32_t retVal;
uint32_t gGpioBaseAddr = (uint32_t) AddrTranslateP_getLocalAddr(CSL_GPIO0_BASE)
uint32_t pinNum = 76;
HwiP_Params hwiPrms;
static HwiP_Object gGpioHwiObject;
GPIO_setDirMode(gGpioBaseAddr, pinNum, GPIO_DIRECTION_INPUT);
GPIO_setTrigType(gGpioBaseAddr, pinNum, GPIO_TRIG_TYPE_FALL_EDGE);
GPIO_bankIntrEnable(gGpioBaseAddr, GPIO_GET_BANK_INDEX(pinNum));
/* Register pin interrupt */
HwiP_Params_init(&hwiPrms);
hwiPrms.intNum = CSLR_R5FSS0_CORE0_INTR_MAIN_GPIOMUX_INTROUTER0_OUTP_8;
hwiPrms.callback = &callback;
hwiPrms.args = (void *) pinNum;
retVal = HwiP_construct(&gGpioHwiObject, &hwiPrms);
assert(retVal == SystemP_SUCCESS);
}
void callback(void *args)
{
uint32_t pinNum = (uint32_t)args;
uint32_t intrStatus, pinMask;
pinMask = GPIO_GET_BANK_BIT_MASK(pinNum);
uint32_t gGpioBaseAddr = (uint32_t) AddrTranslateP_getLocalAddr(CSL_GPIO0_BASE)
/* Get and clear bank interrupt status */
intrStatus = GPIO_getBankIntrStatus(gGpioBaseAddr, GPIO_GET_BANK_INDEX(pinNum));
GPIO_clearBankIntrStatus(gGpioBaseAddr, GPIO_GET_BANK_INDEX(pinNum), intrStatus);
printf("Interrupt");
}