Code: Select all
// input IN0
PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO4_U, FUNC_GPIO4);
GPIO_DIS_OUTPUT(4);
PIN_PULLDWN_DIS(PERIPHS_IO_MUX_GPIO4_U); // disable pullodwn
PIN_PULLUP_EN(PERIPHS_IO_MUX_GPIO4_U); // pull - up pin
// input IN1
PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO5_U, FUNC_GPIO5);
GPIO_DIS_OUTPUT(5);
PIN_PULLDWN_DIS(PERIPHS_IO_MUX_GPIO5_U); // disable pullodwn
PIN_PULLUP_EN(PERIPHS_IO_MUX_GPIO5_U); // pull - up pin
// input IN2
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTMS_U, FUNC_GPIO14);
GPIO_DIS_OUTPUT(14);
PIN_PULLDWN_DIS(PERIPHS_IO_MUX_MTMS_U); // disable pullodwn
PIN_PULLUP_EN(PERIPHS_IO_MUX_MTMS_U); // pull - up pin
triggering event definition is:
Code: Select all
gpio_pin_intr_state_set(GPIO_ID_PIN(4), GPIO_PIN_INTR_NEGEDGE);
gpio_pin_intr_state_set(GPIO_ID_PIN(5), GPIO_PIN_INTR_NEGEDGE);
gpio_pin_intr_state_set(GPIO_ID_PIN(14), GPIO_PIN_INTR_NEGEDGE);
ESP pins are GPIO 4, 5, and 14. All pins have 10k resistors are connected to VCC as external pull-ups. Optocoupler is PC817C. When signal arrives, optocoupler connects ground with pin (state on GPIO pin is changed from VCC to 0).
For GPIO4 and 5, interrupt is triggered in positive and negative edge(2 interrupts per signal change). GPIO14 works as expected(1 interrupt). I also made second board and behave the same.
Can you check for interrupt routines in SDK for GPIOs 4 and 5 and "GPIO_PIN_INTR_NEGEDGE" definition, please?
Rgds,
Frenk