Hello, I am using the OMAP-L138, and have encountered a problem with the interrupt generated by GPIO bank 6, bit 13. The input pin R17 is tied to a cap sense push-button. Often, I will receive an interrupt, but upon inspection of the Interrupt Status Register, I find it at 0x0000. So, although I have received an interrupt from GPIO bank 6, it reads that no pin caused it.
This behavior does not happen consistently...sometimes, I will receive an interrupt and will find the expected value 0x2000 in the Interrupt Status Register.
Here are the GPIO settings that are in use:
const int CAP_EVENTS_BANKSET = 3; // interrupt is routed to bank 6
const rv_uint32 CAP_SNS_INT_BIT_MASK = (1 << 13); // GP6[13], Capsense interrupt: Input
_GPIO_Regs_ptr->BANKSET[CAP_EVENTS_BANKSET].DIR |= CAP_SNS_INT_BIT_MASK; //input
_GPIO_Regs_ptr->BANKSET[CAP_EVENTS_BANKSET].SET_FAL_TRIG |= CAP_SNS_INT_BIT_MASK;
_GPIO_Regs_ptr->BANKSET[CAP_EVENTS_BANKSET].CLR_RIS_TRIG |= CAP_SNS_INT_BIT_MASK;
_GPIO_Regs_ptr->BINTEN |= 1 << 6; //bank 6 enabled
I do not set CLR_FAL_TRIG67 or SET_RIS_TRIG67, so they are at power up defaults.
const rv_uint32 _PINMUX13_VALUE = 0x00088800;
const rv_uint32 _PINMUX13_MASK = 0x000FFF00;
_PINMUX_regs_ptr->PINMUX13 &= ~_PINMUX13_MASK;
_PINMUX_regs_ptr->PINMUX13 |= _PINMUX13_VALUE;
Capsense Interrupt input is routed to: PRU0_R30[31]/UHPI_HRDY/PRU1_R30[12]/GP6[13] (R17).
I have verified this on the schematic.
Any suggestions where we should be looking for the problem?