I2C deblocking

Job ID: 32205699

Budget: $30 – $250 USD

We use in our application 99 slaves connected to the I2C bus via the same adress 22. During sending data sometimes one slave holds the SCL line to LOW, which then blocks the whole system. Our idea is to have an interrupt routine, running as another parallel task, which detects SCL going LOW and if the line does not go HIGH again within a certain time (e.g. 500ms) the slave shall raise a flag to reset the I2C and give it free then it shall reconnect the I2C for further I2C data. Do you think you could program this?

Please use attached program to modify with your deblocking subroutine.