Tool/software: TI-RTOS
• PDK 1.0.9
• My project is based on the Profinet example code.
I have a TC74 I²C temperature sensor connected to the AMIC board. I query that device every second. When i plug and unplug it repeatedly (simulating a loose contact), most times I just get an I²C status code `-3` (or rarely `-1`) and my loop goes on with the next try. But sometimes, the driver completely blocks forever.
The debugger tells me that the device mostly hangs in `I2CMasterBusBusy ()` and sometimes in `I2CMasterIntRawStatus ()`.
I also played around with `I2C_Transaction.timeout` (which usually was default `I2C_WAIT_FOREVER`).
• First, I cannot find any documentation about which time unit this should represent – is it ms or μs or CPU ticks or whatever?
• Setting the timeout below about 500, I²C doesn’t work anymore at all.
• Setting the timeout at about 5000, I²C seems to work in principle, but I get communication errors.
• Setting it at about 50000 seems to not influence my peripheral communication, but the driver still blocks forever – although a timeout is present.
The AMIC processor and the example project are targeted for industrial communication usage. About every week I work on that project, I find new issues. Please tell me how we are supposed to use such buggy software in production…?! What’s TI’s opinion on that?