Coder Social home page Coder Social logo

arduino-wire.h's Introduction

Arduino-Wire.h

Wire.h with timeout for Arduino.

Tests:

Tested using generic DS3231 module with 32kbit EEPROM.

Case SDA SCL Power Situation
1 disconnected disconnected connected as if no device
2 disconnected connected connected address NACK detected
3 connected disconnected connected address NACK detected
4 connected connected connected ideal case
5 disconnected disconnected disconnected as if no device
6 disconnected connected disconnected BLOCKS/HANGS
7 connected disconnected disconnected BLOCKS/HANGS
8 connected connected disconnected BLOCKS/HANGS

If the SDA/SCL lines are accidentally disconnected the original Wire.h is able to detect the error. However if the power is cut, it blocks on the call to Wire.endTransmission().

This version will instead return an error after a specified timeout.

To use just replace the #include directive to point to it. Then set the timeout using:

  Wire.setTimeout( milliseconds );

Without setting the timeout it behaves exactly like the original version.

Changes:

All while loops were changed to monitor timeout.

Function Changes
twi_readFrom() returns 0 bytes read on timeout
twi_writeTo() returns 4 on timeout, which is described as "other twi error" in the original library
twi_stop() made to return a bool. returns false on timeout

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.