WiPy LoPy I2C with ATMEGA

  • I tried to to connect my LoPy with an Arduino Pro Mini @ 8MHz 3.3V via I2C. The results were not the expected.

    The reason I want to do this, is that I must count pulses from various devices. ESP8266 and ESP32 are not stable with ISR so I decided to keep the ATMEGA with the bug free hardware interrupts at PINS 2,3. Currently I use Software Serial with UART and it works just fine. But I would like to go further using I2C.

    I tested the solution but it didn't work. I was getting wrong bytes from time to time and that's why the setup is considered as not reliable.

    Does anybody managed to achieve this?


  • @jmarcelino Cables are really very short. Can't be shorter... Baud rate is 100000. I tried different baud rates but this value seems to be the correct.

    I will try the pullup resistors today

  • Are you using the Arduino libraries with your ATMEGA? If so those enable AVR's internal pull-ups too, so you have two devices enabling weak, not really up to the job, pull-ups at both ends. I guess it's very possible the bus isn't really running on spec doing that.

    I don't know if you can disable the pull-ups on the Arduino or Pycom side, but maybe worth investigating.

    Edit : On the Arduino side you should be able to

      digitalWrite(SDA, 0);
      digitalWrite(SCL, 0);

    After calling Wire.begin to disable the pull-ups? Maybe that could help.

  • @constantinos
    Have you tried lowering your I2C speed (baurate= init parameter)?

    Also how long is your cable? You can try adding external pull-up (to 3.3V) resistors too (maybe 4.7K)

  • @constantinos
    Maybe because I2C is still software implementation...

Log in to reply

Pycom on Twitter