Hi,
I have a Tiva C project working on 2.10.1.38 TI RTOS version. I just migrated it to TI RTOS 2.16.1.14; following the migration guides. Pasted below is the GPIO init part from my board file...
It appears that configuring GPIO pins as input with interrupt type FALLING_EDGE or BOTH_EDGES is not working correctly. Adding the following lines (from my old version of board file) after GPIO_init() fixes the problem. This tell me that there is an issue in GPIO_init() function in initializing interrupt type correctly or there is something wrong in the way I have specified the parameters in gpioPinConfigs[].
MAP_GPIOIntTypeSet( GPIO_PORTQ_BASE, GPIO_PIN_3 | GPIO_PIN_4, GPIO_BOTH_EDGES | GPIO_DISCRETE_INT );
MAP_GPIOIntTypeSet( GPIO_PORTP_BASE, GPIO_PIN_2 | GPIO_PIN_1 | GPIO_PIN_6 | GPIO_PIN_7, GPIO_FALLING_EDGE | GPIO_DISCRETE_INT );
Could you please look into and advise if the error is on my part?
Thanks,
Sreeram
/*
* =============================== GPIO ===============================
*/
/* Place into subsections to allow the TI linker to remove items properly */
#if defined(__TI_COMPILER_VERSION__)
#pragma DATA_SECTION(GPIOTiva_config, ".const:GPIOTiva_config")
#endif
#include <ti/drivers/GPIO.h>
/* GPIO configuration structure */
GPIO_PinConfig gpioPinConfigs[] = {
{GPIOTiva_PB_2 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_LOW | GPIO_CFG_OUT_LOW}, /* Schematic Name - P1P8V_EN; Connection - TPS22904 */
{GPIOTiva_PD_2 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_LOW | GPIO_CFG_OUT_LOW}, /* TIVA_EXP_I2C_SCL; Lamp Power */
{GPIOTiva_PD_3 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_LOW | GPIO_CFG_OUT_LOW}, /* TIVA_EXP_I2C_SDA; DLPC150 TRIG_INr */
{GPIOTiva_PD_5 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_LOW | GPIO_CFG_OUT_LOW}, /* BAT_VSENSE_EN; DMC2990 */
{GPIOTiva_PD_7 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_LOW | GPIO_CFG_OUT_HIGH}, /* TIVA_TRIG_SEL; J5 Connector */
{GPIOTiva_PE_0 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_LOW | GPIO_CFG_OUT_HIGH}, /* TIVA_DATAEN_MASK; SN74ALVC08 */
{GPIOTiva_PE_1 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_LOW | GPIO_CFG_OUT_HIGH}, /* TIVA_VSYNC_MASK; SN74ALVC08 */
{GPIOTiva_PE_2 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_LOW | GPIO_CFG_OUT_LOW}, /* TIVA_TRIG_IN_0 */
{GPIOTiva_PE_3 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_LOW | GPIO_CFG_OUT_LOW}, /* TIVA_TRIG_IN_1 */
{GPIOTiva_PH_5 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_LOW | GPIO_CFG_OUT_LOW}, /* BT_nSHUTD; CC2564 */
{GPIOTiva_PH_6 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_LOW | GPIO_CFG_OUT_LOW}, /* SYNCZ; ADS1255 */
{GPIOTiva_PJ_7 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_LOW | GPIO_CFG_OUT_LOW}, /* PROJ ON */
{GPIOTiva_PQ_0 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_LOW | GPIO_CFG_OUT_LOW}, /* BC_EN2 */
{GPIOTiva_PQ_1 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_LOW | GPIO_CFG_OUT_HIGH}, /* BC_EN1 */
{GPIOTiva_PQ_2 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_LOW | GPIO_CFG_OUT_LOW}, /* BC_CSZ */
{GPIOTiva_PP_0 | GPIO_CFG_INPUT | GPIO_CFG_IN_INT_RISING }, /* DLPC_XLAT0_TIVA DLPC150 GPIO_4 (FRAME) */
{GPIOTiva_PP_1 | GPIO_CFG_INPUT | GPIO_CFG_IN_INT_FALLING }, /* DLPC_XLAT1_TIVA DLPC150 GPIO_16 (PATTERN) */
{GPIOTiva_PP_2 | GPIO_CFG_INPUT | GPIO_CFG_IN_INT_FALLING }, /* DRDY; ADS1255 */
{GPIOTiva_PP_6 | GPIO_CFG_INPUT | GPIO_CFG_IN_INT_FALLING }, /* TDRDYZ; TMP006 */
{GPIOTiva_PP_7 | GPIO_CFG_INPUT | GPIO_CFG_IN_INT_FALLING }, /* HUM_DRDYz; HDC1000 */
{GPIOTiva_PQ_4 | GPIO_CFG_INPUT | GPIO_CFG_IN_INT_BOTH_EDGES }, /* mSD_CARD_DET */
{GPIOTiva_PQ_5 | GPIO_CFG_INPUT | GPIO_CFG_IN_INT_FALLING }, /* BC_INT */
{GPIOTiva_PQ_6 | GPIO_CFG_INPUT | GPIO_CFG_IN_INT_FALLING }, /* PAD_RSTz */
{GPIOTiva_PQ_7 | GPIO_CFG_INPUT | GPIO_CFG_IN_INT_RISING }, /* DLPC_HOST_IRQ */
{GPIOTiva_PQ_3 | GPIO_CFG_INPUT | GPIO_CFG_IN_INT_BOTH_EDGES }, /* NIRscanNano_BUTTON_Scan */
};
GPIO_CallbackFxn NIRscanNano_gpioCallbackFxns[] = {
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
};
const GPIOTiva_Config GPIOTiva_config = {
.pinConfigs = (GPIO_PinConfig *) gpioPinConfigs,
.callbacks = (GPIO_CallbackFxn *) NIRscanNano_gpioCallbackFxns,
.numberOfPinConfigs = sizeof(gpioPinConfigs) / sizeof(GPIO_PinConfig),
.numberOfCallbacks = sizeof(NIRscanNano_gpioCallbackFxns) / sizeof(GPIO_CallbackFxn),
.intPriority = (~0)
};
/*
* ======== NIRscanNano_initGPIO ========
*/
void NIRscanNano_initGPIO(void)
{
// Enable Hybernation Peripheral
MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_HIBERNATE);
/* Once GPIO_init is called, GPIO_config cannot be changed */
GPIO_init();
#ifdef SCAN_BUTTON_TIVA_BOARD
MAP_GPIOIntEnable( GPIO_PORTQ_BASE, GPIO_PIN_3);
#endif
#ifdef SCAN_BUTTON_EXP_CONN
MAP_GPIOIntEnable( GPIO_PORTK_BASE, GPIO_PIN_3);
#endif
}