add I2C_RX_FIFO_OVF_INT_ST handling to i2c_isr_handler_default (#4342)

Fixes crash on ESP32 when I2C FiFo overflows and interrupt function is unable to handle crash and throws this error:
[E][esp32-hal-i2c.c:1013] i2c_isr_handler_default(): unknown int=4

Co-authored-by: 0xDEADBEEF <0xde4dbeef@gmail.com>
This commit is contained in:
lienbacher 2020-10-01 14:40:42 +02:00 committed by GitHub
parent 1f4491f4ee
commit 2243081f85
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -945,6 +945,14 @@ static void IRAM_ATTR i2c_isr_handler_default(void* arg)
activeInt &=~I2C_RXFIFO_FULL_INT_ST; activeInt &=~I2C_RXFIFO_FULL_INT_ST;
} }
if(activeInt & I2C_RXFIFO_OVF_INT_ST) {
emptyRxFifo(p_i2c);
p_i2c->dev->int_clr.rx_fifo_full=1;
p_i2c->dev->int_ena.rx_fifo_full=1; //why?
activeInt &=~I2C_RXFIFO_OVF_INT_ST;
}
if (activeInt & I2C_ACK_ERR_INT_ST_M) {//fatal error, abort i2c service if (activeInt & I2C_ACK_ERR_INT_ST_M) {//fatal error, abort i2c service
if (p_i2c->mode == I2C_MASTER) { if (p_i2c->mode == I2C_MASTER) {
i2c_update_error_byte_cnt(p_i2c); // calc which byte caused ack Error, check if address or data i2c_update_error_byte_cnt(p_i2c); // calc which byte caused ack Error, check if address or data