From 75dc4129c66410bb83eb42c62ae54e3b1001d093 Mon Sep 17 00:00:00 2001 From: zevenwolf Date: Wed, 26 Oct 2011 23:26:43 -0400 Subject: [PATCH 1/5] changed reads and writes --- RTClib.cpp | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/RTClib.cpp b/RTClib.cpp index 824419d5..abf36297 100644 --- a/RTClib.cpp +++ b/RTClib.cpp @@ -10,7 +10,7 @@ #define SECONDS_PER_DAY 86400L #define SECONDS_FROM_1970_TO_2000 946684800 - +#define i 0 //////////////////////////////////////////////////////////////////////////////// // utility code, some of this could be exposed in the DateTime API if needed @@ -130,41 +130,41 @@ uint8_t RTC_DS1307::begin(void) { uint8_t RTC_DS1307::isrunning(void) { Wire.beginTransmission(DS1307_ADDRESS); - Wire.send(0); + Wire.write(i); Wire.endTransmission(); Wire.requestFrom(DS1307_ADDRESS, 1); - uint8_t ss = Wire.receive(); + uint8_t ss = Wire.read(); return !(ss>>7); } void RTC_DS1307::adjust(const DateTime& dt) { Wire.beginTransmission(DS1307_ADDRESS); - Wire.send(0); - Wire.send(bin2bcd(dt.second())); - Wire.send(bin2bcd(dt.minute())); - Wire.send(bin2bcd(dt.hour())); - Wire.send(bin2bcd(0)); - Wire.send(bin2bcd(dt.day())); - Wire.send(bin2bcd(dt.month())); - Wire.send(bin2bcd(dt.year() - 2000)); - Wire.send(0); + Wire.write(i); + Wire.write(bin2bcd(dt.second())); + Wire.write(bin2bcd(dt.minute())); + Wire.write(bin2bcd(dt.hour())); + Wire.write(bin2bcd(0)); + Wire.write(bin2bcd(dt.day())); + Wire.write(bin2bcd(dt.month())); + Wire.write(bin2bcd(dt.year() - 2000)); + Wire.write(i); Wire.endTransmission(); } DateTime RTC_DS1307::now() { Wire.beginTransmission(DS1307_ADDRESS); - Wire.send(0); + Wire.write(i); Wire.endTransmission(); Wire.requestFrom(DS1307_ADDRESS, 7); - uint8_t ss = bcd2bin(Wire.receive() & 0x7F); - uint8_t mm = bcd2bin(Wire.receive()); - uint8_t hh = bcd2bin(Wire.receive()); - Wire.receive(); - uint8_t d = bcd2bin(Wire.receive()); - uint8_t m = bcd2bin(Wire.receive()); - uint16_t y = bcd2bin(Wire.receive()) + 2000; + uint8_t ss = bcd2bin(Wire.read() & 0x7F); + uint8_t mm = bcd2bin(Wire.read()); + uint8_t hh = bcd2bin(Wire.read()); + Wire.read(); + uint8_t d = bcd2bin(Wire.read()); + uint8_t m = bcd2bin(Wire.read()); + uint16_t y = bcd2bin(Wire.read()) + 2000; return DateTime (y, m, d, hh, mm, ss); } From bc647b6faf1e6bb552c5962598ced715d8555357 Mon Sep 17 00:00:00 2001 From: zevenwolf Date: Wed, 26 Oct 2011 23:47:53 -0400 Subject: [PATCH 2/5] int i --- RTClib.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RTClib.cpp b/RTClib.cpp index abf36297..280686f6 100644 --- a/RTClib.cpp +++ b/RTClib.cpp @@ -10,7 +10,7 @@ #define SECONDS_PER_DAY 86400L #define SECONDS_FROM_1970_TO_2000 946684800 -#define i 0 +int i = 0; //////////////////////////////////////////////////////////////////////////////// // utility code, some of this could be exposed in the DateTime API if needed From 6c4e34bb3a6c703121f020d4ce1a25e5e17c9354 Mon Sep 17 00:00:00 2001 From: zevenwolf Date: Mon, 31 Oct 2011 12:05:23 -0400 Subject: [PATCH 3/5] changed arduino.h Wprogram.h was changed to arduino.h which is the new convention --- RTClib.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RTClib.cpp b/RTClib.cpp index 280686f6..725c4b0c 100644 --- a/RTClib.cpp +++ b/RTClib.cpp @@ -4,7 +4,7 @@ #include #include #include "RTClib.h" -#include +#include #define DS1307_ADDRESS 0x68 #define SECONDS_PER_DAY 86400L From db17f22582e2f8780e13a852c11d28c8cc36932d Mon Sep 17 00:00:00 2001 From: zevenwolf Date: Tue, 1 Nov 2011 10:04:34 -0400 Subject: [PATCH 4/5] added 022 --- RTClib.cpp | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 63 insertions(+), 2 deletions(-) diff --git a/RTClib.cpp b/RTClib.cpp index 725c4b0c..b6c5da04 100644 --- a/RTClib.cpp +++ b/RTClib.cpp @@ -4,13 +4,22 @@ #include #include #include "RTClib.h" -#include #define DS1307_ADDRESS 0x68 #define SECONDS_PER_DAY 86400L #define SECONDS_FROM_1970_TO_2000 946684800 -int i = 0; + +#if ARDUINO > 22 +#include +#endif + +#if ARDUINO <= 22 +#include +#endif + + +int i = 0; //The new wire library needs to take an int when you are sending for the zero register //////////////////////////////////////////////////////////////////////////////// // utility code, some of this could be exposed in the DateTime API if needed @@ -128,6 +137,10 @@ uint8_t RTC_DS1307::begin(void) { return 1; } + +#if ARDUINO > 22 + + uint8_t RTC_DS1307::isrunning(void) { Wire.beginTransmission(DS1307_ADDRESS); Wire.write(i); @@ -169,6 +182,54 @@ DateTime RTC_DS1307::now() { return DateTime (y, m, d, hh, mm, ss); } +#endif + +#if ARDUINO < 22 + +uint8_t RTC_DS1307::isrunning(void) { + Wire.beginTransmission(DS1307_ADDRESS); + Wire.send(i); + Wire.endTransmission(); + + Wire.requestFrom(DS1307_ADDRESS, 1); + uint8_t ss = Wire.read(); + return !(ss>>7); +} + +void RTC_DS1307::adjust(const DateTime& dt) { + Wire.beginTransmission(DS1307_ADDRESS); + Wire.send(i); + Wire.send(bin2bcd(dt.second())); + Wire.send(bin2bcd(dt.minute())); + Wire.send(bin2bcd(dt.hour())); + Wire.send(bin2bcd(0)); + Wire.send(bin2bcd(dt.day())); + Wire.send(bin2bcd(dt.month())); + Wire.send(bin2bcd(dt.year() - 2000)); + Wire.send(i); + Wire.endTransmission(); +} + +DateTime RTC_DS1307::now() { + Wire.beginTransmission(DS1307_ADDRESS); + Wire.send(i); + Wire.endTransmission(); + + Wire.requestFrom(DS1307_ADDRESS, 7); + uint8_t ss = bcd2bin(Wire.receive() & 0x7F); + uint8_t mm = bcd2bin(Wire.receive()); + uint8_t hh = bcd2bin(Wire.receive()); + Wire.read(); + uint8_t d = bcd2bin(Wire.receive()); + uint8_t m = bcd2bin(Wire.receive()); + uint16_t y = bcd2bin(Wire.receive()) + 2000; + + return DateTime (y, m, d, hh, mm, ss); +} + +#endif + + //////////////////////////////////////////////////////////////////////////////// // RTC_Millis implementation From 4ce3c8bf69341f7088661ae5c2d8f99e4a0d7fbf Mon Sep 17 00:00:00 2001 From: zevenwolf Date: Wed, 2 Nov 2011 13:47:51 -0400 Subject: [PATCH 5/5] works with 22 and 1 with all examples --- RTClib.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/RTClib.cpp b/RTClib.cpp index b6c5da04..050e647a 100644 --- a/RTClib.cpp +++ b/RTClib.cpp @@ -184,7 +184,7 @@ DateTime RTC_DS1307::now() { #endif -#if ARDUINO < 22 +#if ARDUINO <= 22 uint8_t RTC_DS1307::isrunning(void) { Wire.beginTransmission(DS1307_ADDRESS); @@ -192,7 +192,7 @@ uint8_t RTC_DS1307::isrunning(void) { Wire.endTransmission(); Wire.requestFrom(DS1307_ADDRESS, 1); - uint8_t ss = Wire.read(); + uint8_t ss = Wire.receive(); return !(ss>>7); } @@ -219,7 +219,7 @@ DateTime RTC_DS1307::now() { uint8_t ss = bcd2bin(Wire.receive() & 0x7F); uint8_t mm = bcd2bin(Wire.receive()); uint8_t hh = bcd2bin(Wire.receive()); - Wire.read(); + Wire.receive(); uint8_t d = bcd2bin(Wire.receive()); uint8_t m = bcd2bin(Wire.receive()); uint16_t y = bcd2bin(Wire.receive()) + 2000;