Memorial day is 05/25/2015 – Orders will ship out on May 26th. There will not be any deliveries or shipping on Monday. Any order placed after 11am ET on Friday May 22nd will not start to ship out until Tuesday May 26th.

I2C LCD Issues
Moderators: adafruit_support_bill, adafruit

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 4: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 4:38 pm

Re: I2C LCD Issues

by adafruit_support_bill on Mon Feb 04, 2013 7: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.

adafruit_support_bill
 
Posts: 37477
Joined: Sat Feb 07, 2009 10:11 am