Other Parts Discussed in Thread: SYSCONFIG
Tool/software:
On the Launchpad (LP-AM243x) I want to setup GPIO1_19 (ball G2 for ALX) as an input, with an interrupt on a rising edge.
In SYSCFG I set it up with the following:
Name | GPIO_IRQ0 | ||
PIN Direction | INPUT | ||
Trigger Type | Rising Edge | ||
Enable Interrupt Configuration | ✓ | ||
Fetch Board Configuration | GET RM DATA | ||
Interrupt ROuter Output | Router 7 | ||
Use MCU Domain Peripherals | *left unchecked* | ||
GPIO Peripheral | GPIO1 | ||
Preferred Voltage | Any | ||
Signals | Pins | PU/PD | RX |
GPIO Pin (GPIO1_19) | PRG0_PRU0_GPO19/G2 | PD | ✓ |
I used the following API guide to try and setup - per pin - interrupts.
https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/08_01_00_36/exports/docs/api_guide_am64x/DRIVERS_GPIO_PAGE.html
The code from the above link:
static void GPIO_pinIsrFxn(void *args) { /* * Handle pin interrupt - This is pulse interrupt. No need to clear status */ } void gpio_pin_interrupt_init(void) { int32_t retVal; uint32_t pinNum = gGpioPinNum, bankNum; HwiP_Params hwiPrms; bankNum = GPIO_GET_BANK_INDEX(pinNum); /* Interrupt setup */ GPIO_setDirMode(gGpioBaseAddr, pinNum, GPIO_DIRECTION_INPUT); GPIO_setTrigType(gGpioBaseAddr, pinNum, GPIO_TRIG_TYPE_RISE_EDGE); GPIO_bankIntrEnable(gGpioBaseAddr, bankNum); /* Register pin interrupt */ HwiP_Params_init(&hwiPrms); hwiPrms.intNum = gGpioPinIntrNum; hwiPrms.callback = &GPIO_pinIsrFxn; hwiPrms.args = (void *) pinNum; retVal = HwiP_construct(&gGpioHwiObject, &hwiPrms); if(SystemP_SUCCESS != retVal) { DebugP_assert(FALSE); } }
For variable definitions I do the following:
gGpioBaseAddr = (uint32_t)AddrTranslateP_getLocalAddr(GPIO_IRQ0_BASE_ADDR); gGpioPinNum = GPIO_IRQ0_PIN; // /syscfg/ti_drivers_config.h declares this as (19) gGpioPinIntrNum = GPIO_IRQ0_INTR_NUM; // According to the file ../syscfg/ti_drivers_config.h // GPIO_IRQ0_PIN is (19) // GPIO_IRQ0_INTR_NUM is (CSLR_R5FFSS0_CORE0_INTR_MAIN_GPIOMUX_INTROUTER0_OUTP_7)
However, doing this I am unable to trigger the GPIO_pinIsrFxn().
What am I doing wrong...?