Go Down

Topic: lowering I2C speed with arduino UNO (Read 1 time) previous topic - next topic


i am not an arduino guy, and i have a poor electronic background. i use arduino only for fun in the spare. and this is my first project with multiple arduino communications. so sorry me if i write stupid things (and sorry for my bad english, too).

i have some boards that are communicating with i2c. but for reduce the noise signal i have set the velocity of the communication slower (following this: http://arduino.cc/forum/index.php/topic,12518.0.html ). the noise is caused by the long wire (more then 2 meters).

Yeah ok i know i should use some bus extender and this is a dirty hack, but for now it seems to works. I have tested it with the new Arduino Leonardo and it works right. One master (the master is an arduino MEGA), 2 leonardo childs, no problem. But it seems to have problem with older arduino (Arduino UNO).

I have tested it with a simple sketch, with one master and one slave: the master request one byte of status (0 or 1, ready or busy) each 500 milliseconds and if master recive something from serial, it send a number from 0 to 9999 to the slave (and the slave stay busy for that number of milliseconds).

Same code, same wiring (3 wires from master to slave: gnd, slc, sda), with a leonardo as slave, no problems, with UNO as slave, after the first request the communication crashes (and cause also the master to crash because there is no timeout in standard wiring library - untill i unplug the slave).

Some advice or any consideration of any kind?

Nick Gammon

Some examples on this page of lowering the speed (you can get it quite low):


What size pull-up resistors do you have on SDA/SCL?


Nov 18, 2012, 12:20 pm Last Edit: Nov 18, 2012, 12:22 pm by mantissa00 Reason: 1
i doesn't have pullup resistor.. i thought the internal one was ok..

EDIT: great page anyway, thanks!

Nick Gammon

I strongly suggest the pull-up resistors. Then see how it goes.

Go Up