arduino / arduino/ArduinoCore-avr

Wire should have ability to not enable internal pull-ups [imported]

Open
#243 4 comments 1 reaction 1 assignee Claimed by @cmaglie View on GitHub
Dominant language
C
Stars
1.5k
Forks
1.1k
PR merge metrics
No merged PRs in 30d

Description

This is [Issue 506](http://code.google.com/p/arduino/issues/detail?id=506) moved from a Google Code project.
Added by 2011-03-19T17:41:49.000Z by [fabio.va...@gmail.com](http://code.google.com/u/103920360618126955164/).
Please review that bug for more context and additional comments, but update this bug.

Original labels: Type-Defect, Priority-Medium, Component-Core
### Original description

Hi there,

currently Wire (through twi_init()) enables by default the internal pullups of the uC.

As all 16MHz runs at 5V this means that with pullups enabled signals will have a 5 volt on logic level. Unfortunately, as many I2C devices runs at 3 Volts and aren't 5Volts tolerant, sending 5V signals to them is clearly a very bad idea.

I would propose making the pullpus enabling optional and off by default. In my experience, people overlook the fact that Wire does enable the pullups causing possible problems on the I2C devices used.

Moreover, tests (http://www.dsscircuits.com/articles/effects-of-varying-i2c-pull-up-resistors.html) have shown that internal pullups performs extremely bad in terms of signal quality and bus speed. So, they shouldn't been used anyway.

In case this is accepted, I'll gladly submit a patch for this.

Thanks,

Fabio Varesano

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.