Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Februari 2016, status of SoftwareWire.
In februari 2016, the version of SoftwareWire is 1.4. Because of the extra features the speed is lower, that has to be corrected. At the moment it is more important that the I2C will work.
The SoftwareWire is for the AVR microcontrollers, for example the Arduino Uno, Leonardo, Micro, Nano, Mega 2560, Pro Mini, and so on. The SoftwareWire is not for the Arduino with ARM processors, like the Arduino Due and the Arduino Zero. They could be added, by using normal digitalWrite() calls.
The current wave shapes for SoftwareWire compared to the Arduino Wire library: The wave shapes are for Wire.beginTransmission(1) and Wire.endTransmission() without a I2C slave connected.
It shows a number of things:
- The duty cycle of the clock is less than 50%.
- The SDA is pulled low just before the SCL is made low in the Wire library (very fast chips could detect that as a start condition). In the SoftwareWire the SDA is pulled low after SCL is made low.
- There is no distance between releasing the SDA and the rising edge of the last SCL pulse (the nineth pulse for the acknowledge). That should be added.
A new function has been added to the Wire library for some processors : setClockStretchLimit(). I think that function can be added to the SoftwareWire as well. Another function is Wire.pins(,). That could be added as well. The ESP8266 Wire compatible library uses: "Wire.begin(sda, scl)". That could be added as well. However the ESP8266 Wire compatible library is going in its own direction.