Sep-21-2017, 01:21 PM
I have several threads needing to use the Raspberry Pi3 single I2C bus. The threads aren't called all that frequently, the fastest being one per second and the slowest once every 10 minutes. Since the Pi3 has four processors I believe that there will be times when two (or more) threads will try to access I2C at the same time and mess things up.
What I've done is created a global variable: i2c_busy and in each called thread I do the following before actually attempting to use the bus.
Second question: Does this seem like a reasonable way of dealing with said contention?
Thanks!
What I've done is created a global variable: i2c_busy and in each called thread I do the following before actually attempting to use the bus.
while i2c_busy time.sleep(.1) i2c_busy = True some_value = some_i2c_call() i2c_busy = FalseFirst question: Is there actually going to be a bus contention problem? I think yes but I could be wrong - not an expert.
Second question: Does this seem like a reasonable way of dealing with said contention?
Thanks!