From 4b1759bba7a818668cda185d9c0ba0621495ccf2 Mon Sep 17 00:00:00 2001 From: PaoloP74 Date: Tue, 7 Jul 2015 18:25:47 +0200 Subject: [PATCH 1/6] Update Wire.h --- libraries/Wire/Wire.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Wire/Wire.h b/libraries/Wire/Wire.h index 844168e35..99d1265db 100644 --- a/libraries/Wire/Wire.h +++ b/libraries/Wire/Wire.h @@ -34,7 +34,7 @@ class TwoWire : public Stream TwoWire(SERCOM *s); void begin(); void begin(uint8_t); - void setClock(uint32_t); // dummy function + void setClock(uint32_t); void beginTransmission(uint8_t); uint8_t endTransmission(bool stopBit); From 8f54cbe2ab65f5f0fa31f0c0ba934777c14d13c6 Mon Sep 17 00:00:00 2001 From: PaoloP74 Date: Tue, 7 Jul 2015 18:30:34 +0200 Subject: [PATCH 2/6] Update Wire.cpp --- libraries/Wire/Wire.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libraries/Wire/Wire.cpp b/libraries/Wire/Wire.cpp index aabc1eff6..db9c7a5cb 100644 --- a/libraries/Wire/Wire.cpp +++ b/libraries/Wire/Wire.cpp @@ -47,8 +47,10 @@ void TwoWire::begin(uint8_t address) { sercom->enableWIRE(); } -void TwoWire::setClock(uint32_t frequency) { - // dummy funtion +void TwoWire::setClock(uint32_t baudrate) { + sercom->disableWIRE(); + sercom->initMasterWIRE(frequency); + sercom->enableWIRE(); } uint8_t TwoWire::requestFrom(uint8_t address, size_t quantity, bool stopBit) From bcba11b8e7df38b99ae0778a7b001866ad979156 Mon Sep 17 00:00:00 2001 From: PaoloP74 Date: Tue, 7 Jul 2015 18:32:49 +0200 Subject: [PATCH 3/6] Update Wire.cpp --- libraries/Wire/Wire.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Wire/Wire.cpp b/libraries/Wire/Wire.cpp index db9c7a5cb..b3f8b4780 100644 --- a/libraries/Wire/Wire.cpp +++ b/libraries/Wire/Wire.cpp @@ -49,7 +49,7 @@ void TwoWire::begin(uint8_t address) { void TwoWire::setClock(uint32_t baudrate) { sercom->disableWIRE(); - sercom->initMasterWIRE(frequency); + sercom->initMasterWIRE(baudrate); sercom->enableWIRE(); } From f23848fa7f4b044ee4af8606950ca7d3e0e95c16 Mon Sep 17 00:00:00 2001 From: PaoloP74 Date: Tue, 7 Jul 2015 19:06:54 +0200 Subject: [PATCH 4/6] Update Wire.cpp Sam M0 support only 100kHz and 400kHz I2C frequency clock. --- libraries/Wire/Wire.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Wire/Wire.cpp b/libraries/Wire/Wire.cpp index b3f8b4780..9c91c13a9 100644 --- a/libraries/Wire/Wire.cpp +++ b/libraries/Wire/Wire.cpp @@ -49,7 +49,7 @@ void TwoWire::begin(uint8_t address) { void TwoWire::setClock(uint32_t baudrate) { sercom->disableWIRE(); - sercom->initMasterWIRE(baudrate); + if ( baudrate == 100000 || baudrate == 400000 ) sercom->initMasterWIRE(baudrate); // Validate input baudrate sercom->enableWIRE(); } From 70b20fc59e9eba84c80270edc6421ad4644ad587 Mon Sep 17 00:00:00 2001 From: Paolo Paolucci Date: Thu, 3 Sep 2015 17:52:52 +0200 Subject: [PATCH 5/6] Remove I2C baudrate limitation --- libraries/Wire/Wire.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Wire/Wire.cpp b/libraries/Wire/Wire.cpp index 9c91c13a9..b3f8b4780 100644 --- a/libraries/Wire/Wire.cpp +++ b/libraries/Wire/Wire.cpp @@ -49,7 +49,7 @@ void TwoWire::begin(uint8_t address) { void TwoWire::setClock(uint32_t baudrate) { sercom->disableWIRE(); - if ( baudrate == 100000 || baudrate == 400000 ) sercom->initMasterWIRE(baudrate); // Validate input baudrate + sercom->initMasterWIRE(baudrate); sercom->enableWIRE(); } From 0c4e5460a6960e79f6cea0eb81e6f6d259fddd12 Mon Sep 17 00:00:00 2001 From: Paolo Paolucci Date: Sun, 20 Sep 2015 18:48:04 +0200 Subject: [PATCH 6/6] Type correction peekNextDigit() return a int value. Char type cause warnings: > Stream.cpp:167:10: warning: comparison is always false due to limited range of data type [-Wtype-limits] --- cores/arduino/Stream.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cores/arduino/Stream.cpp b/cores/arduino/Stream.cpp index b31942f29..3e5235744 100644 --- a/cores/arduino/Stream.cpp +++ b/cores/arduino/Stream.cpp @@ -159,7 +159,7 @@ float Stream::parseFloat(char skipChar){ bool isNegative = false; bool isFraction = false; long value = 0; - char c; + int c; float fraction = 1.0; c = peekNextDigit();