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();