Forum rules
Talk about Adafruit Raspberry Pi® accessories! Please do not ask for Linux support, this is for Adafruit products only! For Raspberry Pi help please visit: http://www.raspberrypi.org/phpBB3/

I2C LCD Issues

by k1i on Sun Feb 03, 2013 3:40 pm

I purchased the negative LCD + I2C board kit from Adafruit, and had some general questions about the operation of the I2C bus and the MCP23017.

The LCD works perfectly, the buttons work well, but, I run into an issue when I use multithreading to read button state and write to the LCD at the same time.

Is anyone else doing this successfully? When I have button states being checked in their own thread and make write ops (message, backlight, clear, etc), the screen fills with gibberish and the LCD becomes non-responsive until I re-initialize it.

Is there some kind of a trick to enable I2C transactions? Is there no way to have multiple threading with this? Do I need a queue?

All help is appreciated
K
k1i
 
Posts: 1
Joined: Sun Feb 03, 2013 3:38 pm

Re: I2C LCD Issues

by adafruit_support_bill on Mon Feb 04, 2013 6:05 am

i2c is a serial interface. If you have multiple threads talking to it, the commands will get interleaved and the results are scrambled. There are many strategies for dealing with device I/O in a multi-threaded system. If you already have the code written, the simplest thing would be to add a mutex to gate access to the device.
User avatar
adafruit_support_bill
 
Posts: 25568
Joined: Sat Feb 07, 2009 9:11 am