diff --git a/html/_r_t_clib_8h.html b/html/_r_t_clib_8h.html index 58b6b16..5e78c8c 100644 --- a/html/_r_t_clib_8h.html +++ b/html/_r_t_clib_8h.html @@ -219,7 +219,7 @@ Enumerations }   enum  Ds3231SqwPinMode {
-  DS3231_OFF = 0x01, +  DS3231_OFF = 0x1C, DS3231_SquareWave1Hz = 0x00, DS3231_SquareWave1kHz = 0x08, DS3231_SquareWave4kHz = 0x10, diff --git a/html/_r_t_clib_8h_source.html b/html/_r_t_clib_8h_source.html index 5f09322..43d9994 100644 --- a/html/_r_t_clib_8h_source.html +++ b/html/_r_t_clib_8h_source.html @@ -62,7 +62,7 @@ $(function() {
RTClib.h
-Go to the documentation of this file.
1 /**************************************************************************/
20 /**************************************************************************/
21 
22 #ifndef _RTCLIB_H_
23 #define _RTCLIB_H_
24 
25 #include <Arduino.h>
26 class TimeSpan;
27 
29 #define PCF8523_ADDRESS 0x68
30 #define PCF8523_CLKOUTCONTROL 0x0F
31 #define PCF8523_CONTROL_1 0x00
32 #define PCF8523_CONTROL_2 0x01
33 #define PCF8523_CONTROL_3 0x02
34 #define PCF8523_TIMER_B_FRCTL 0x12
35 #define PCF8523_TIMER_B_VALUE 0x13
36 #define PCF8523_OFFSET 0x0E
37 #define PCF8523_STATUSREG 0x03
38 
39 #define PCF8563_ADDRESS 0x51
40 #define PCF8563_CLKOUTCONTROL 0x0D
41 #define PCF8563_CONTROL_1 0x00
42 #define PCF8563_CONTROL_2 0x01
43 #define PCF8563_VL_SECONDS 0x02
44 #define PCF8563_CLKOUT_MASK 0x83
45 
46 #define DS1307_ADDRESS 0x68
47 #define DS1307_CONTROL 0x07
48 #define DS1307_NVRAM 0x08
49 
50 #define DS3231_ADDRESS 0x68
51 #define DS3231_TIME 0x00
52 #define DS3231_ALARM1 0x07
53 #define DS3231_ALARM2 0x0B
54 #define DS3231_CONTROL 0x0E
55 #define DS3231_STATUSREG 0x0F
56 #define DS3231_TEMPERATUREREG \
57  0x11
58 
60 
61 #define SECONDS_PER_DAY 86400L
62 #define SECONDS_FROM_1970_TO_2000 \
63  946684800
64 
65 /**************************************************************************/
80 /**************************************************************************/
81 class DateTime {
82 public:
83  DateTime(uint32_t t = SECONDS_FROM_1970_TO_2000);
84  DateTime(uint16_t year, uint8_t month, uint8_t day, uint8_t hour = 0,
85  uint8_t min = 0, uint8_t sec = 0);
86  DateTime(const DateTime &copy);
87  DateTime(const char *date, const char *time);
88  DateTime(const __FlashStringHelper *date, const __FlashStringHelper *time);
89  DateTime(const char *iso8601date);
90  bool isValid() const;
91  char *toString(char *buffer);
92 
97  uint16_t year() const { return 2000U + yOff; }
102  uint8_t month() const { return m; }
107  uint8_t day() const { return d; }
112  uint8_t hour() const { return hh; }
113 
114  uint8_t twelveHour() const;
119  uint8_t isPM() const { return hh >= 12; }
124  uint8_t minute() const { return mm; }
129  uint8_t second() const { return ss; }
130 
131  uint8_t dayOfTheWeek() const;
132 
133  /* 32-bit times as seconds since 2000-01-01. */
134  uint32_t secondstime() const;
135 
136  /* 32-bit times as seconds since 1970-01-01. */
137  uint32_t unixtime(void) const;
138 
147  };
148  String timestamp(timestampOpt opt = TIMESTAMP_FULL);
149 
150  DateTime operator+(const TimeSpan &span);
151  DateTime operator-(const TimeSpan &span);
152  TimeSpan operator-(const DateTime &right);
153  bool operator<(const DateTime &right) const;
154 
164  bool operator>(const DateTime &right) const { return right < *this; }
165 
175  bool operator<=(const DateTime &right) const { return !(*this > right); }
176 
186  bool operator>=(const DateTime &right) const { return !(*this < right); }
187  bool operator==(const DateTime &right) const;
188 
197  bool operator!=(const DateTime &right) const { return !(*this == right); }
198 
199 protected:
200  uint8_t yOff;
201  uint8_t m;
202  uint8_t d;
203  uint8_t hh;
204  uint8_t mm;
205  uint8_t ss;
206 };
207 
208 /**************************************************************************/
212 /**************************************************************************/
213 class TimeSpan {
214 public:
215  TimeSpan(int32_t seconds = 0);
216  TimeSpan(int16_t days, int8_t hours, int8_t minutes, int8_t seconds);
217  TimeSpan(const TimeSpan &copy);
218 
224  int16_t days() const { return _seconds / 86400L; }
231  int8_t hours() const { return _seconds / 3600 % 24; }
238  int8_t minutes() const { return _seconds / 60 % 60; }
245  int8_t seconds() const { return _seconds % 60; }
250  int32_t totalseconds() const { return _seconds; }
251 
252  TimeSpan operator+(const TimeSpan &right);
253  TimeSpan operator-(const TimeSpan &right);
254 
255 protected:
256  int32_t _seconds;
257 };
258 
261  DS1307_OFF = 0x00, // Low
262  DS1307_ON = 0x80, // High
263  DS1307_SquareWave1HZ = 0x10, // 1Hz square wave
264  DS1307_SquareWave4kHz = 0x11, // 4kHz square wave
265  DS1307_SquareWave8kHz = 0x12, // 8kHz square wave
266  DS1307_SquareWave32kHz = 0x13 // 32kHz square wave
267 };
268 
269 /**************************************************************************/
273 /**************************************************************************/
274 class RTC_DS1307 {
275 public:
276  boolean begin(void);
277  static void adjust(const DateTime &dt);
278  uint8_t isrunning(void);
279  static DateTime now();
280  static Ds1307SqwPinMode readSqwPinMode();
281  static void writeSqwPinMode(Ds1307SqwPinMode mode);
282  uint8_t readnvram(uint8_t address);
283  void readnvram(uint8_t *buf, uint8_t size, uint8_t address);
284  void writenvram(uint8_t address, uint8_t data);
285  void writenvram(uint8_t address, uint8_t *buf, uint8_t size);
286 };
287 
290  DS3231_OFF = 0x01,
295 };
296 
302  DS3231_A1_Hour = 0x08,
304  DS3231_A1_Date = 0x00,
308 };
319 };
320 
321 /**************************************************************************/
325 /**************************************************************************/
326 class RTC_DS3231 {
327 public:
328  boolean begin(void);
329  static void adjust(const DateTime &dt);
330  bool lostPower(void);
331  static DateTime now();
332  static Ds3231SqwPinMode readSqwPinMode();
333  static void writeSqwPinMode(Ds3231SqwPinMode mode);
334  bool setAlarm1(const DateTime &dt, Ds3231Alarm1Mode alarm_mode);
335  bool setAlarm2(const DateTime &dt, Ds3231Alarm2Mode alarm_mode);
336  void disableAlarm(uint8_t alarm_num);
337  void clearAlarm(uint8_t alarm_num);
338  bool alarmFired(uint8_t alarm_num);
339  void enable32K(void);
340  void disable32K(void);
341  bool isEnabled32K(void);
342  static float getTemperature(); // in Celcius degree
343 };
344 
355 };
356 
366 };
367 
378 };
379 
384 };
385 
386 /**************************************************************************/
390 /**************************************************************************/
391 class RTC_PCF8523 {
392 public:
393  boolean begin(void);
394  void adjust(const DateTime &dt);
395  boolean lostPower(void);
396  boolean initialized(void);
397  static DateTime now();
398  void start(void);
399  void stop(void);
400  uint8_t isrunning();
401  Pcf8523SqwPinMode readSqwPinMode();
402  void writeSqwPinMode(Pcf8523SqwPinMode mode);
403  void enableSecondTimer(void);
404  void disableSecondTimer(void);
405  void enableCountdownTimer(PCF8523TimerClockFreq clkFreq, uint8_t numPeriods,
406  uint8_t lowPulseWidth);
407  void enableCountdownTimer(PCF8523TimerClockFreq clkFreq, uint8_t numPeriods);
408  void disableCountdownTimer(void);
409  void deconfigureAllTimers(void);
410  void calibrate(Pcf8523OffsetMode mode, int8_t offset);
411 };
412 
420 };
421 
422 /**************************************************************************/
426 /**************************************************************************/
427 
428 class RTC_PCF8563 {
429 public:
430  boolean begin(void);
431  boolean lostPower(void);
432  void adjust(const DateTime &dt);
433  static DateTime now();
434  void start(void);
435  void stop(void);
436  uint8_t isrunning();
437  Pcf8563SqwPinMode readSqwPinMode();
438  void writeSqwPinMode(Pcf8563SqwPinMode mode);
439 };
440 
441 /**************************************************************************/
446 /**************************************************************************/
447 class RTC_Millis {
448 public:
453  static void begin(const DateTime &dt) { adjust(dt); }
454  static void adjust(const DateTime &dt);
455  static DateTime now();
456 
457 protected:
458  static uint32_t lastUnix;
459  static uint32_t lastMillis;
461 };
463 
464 /**************************************************************************/
472 /**************************************************************************/
473 class RTC_Micros {
474 public:
479  static void begin(const DateTime &dt) { adjust(dt); }
480  static void adjust(const DateTime &dt);
481  static void adjustDrift(int ppm);
482  static DateTime now();
483 
484 protected:
485  static uint32_t microsPerSecond;
486  static uint32_t lastUnix;
488  static uint32_t lastMicros;
490 };
492 
493 #endif // _RTCLIB_H_
Definition: RTClib.h:290
+Go to the documentation of this file.
1 /**************************************************************************/
20 /**************************************************************************/
21 
22 #ifndef _RTCLIB_H_
23 #define _RTCLIB_H_
24 
25 #include <Arduino.h>
26 class TimeSpan;
27 
29 #define PCF8523_ADDRESS 0x68
30 #define PCF8523_CLKOUTCONTROL 0x0F
31 #define PCF8523_CONTROL_1 0x00
32 #define PCF8523_CONTROL_2 0x01
33 #define PCF8523_CONTROL_3 0x02
34 #define PCF8523_TIMER_B_FRCTL 0x12
35 #define PCF8523_TIMER_B_VALUE 0x13
36 #define PCF8523_OFFSET 0x0E
37 #define PCF8523_STATUSREG 0x03
38 
39 #define PCF8563_ADDRESS 0x51
40 #define PCF8563_CLKOUTCONTROL 0x0D
41 #define PCF8563_CONTROL_1 0x00
42 #define PCF8563_CONTROL_2 0x01
43 #define PCF8563_VL_SECONDS 0x02
44 #define PCF8563_CLKOUT_MASK 0x83
45 
46 #define DS1307_ADDRESS 0x68
47 #define DS1307_CONTROL 0x07
48 #define DS1307_NVRAM 0x08
49 
50 #define DS3231_ADDRESS 0x68
51 #define DS3231_TIME 0x00
52 #define DS3231_ALARM1 0x07
53 #define DS3231_ALARM2 0x0B
54 #define DS3231_CONTROL 0x0E
55 #define DS3231_STATUSREG 0x0F
56 #define DS3231_TEMPERATUREREG \
57  0x11
58 
60 
61 #define SECONDS_PER_DAY 86400L
62 #define SECONDS_FROM_1970_TO_2000 \
63  946684800
64 
65 /**************************************************************************/
80 /**************************************************************************/
81 class DateTime {
82 public:
83  DateTime(uint32_t t = SECONDS_FROM_1970_TO_2000);
84  DateTime(uint16_t year, uint8_t month, uint8_t day, uint8_t hour = 0,
85  uint8_t min = 0, uint8_t sec = 0);
86  DateTime(const DateTime &copy);
87  DateTime(const char *date, const char *time);
88  DateTime(const __FlashStringHelper *date, const __FlashStringHelper *time);
89  DateTime(const char *iso8601date);
90  bool isValid() const;
91  char *toString(char *buffer);
92 
97  uint16_t year() const { return 2000U + yOff; }
102  uint8_t month() const { return m; }
107  uint8_t day() const { return d; }
112  uint8_t hour() const { return hh; }
113 
114  uint8_t twelveHour() const;
119  uint8_t isPM() const { return hh >= 12; }
124  uint8_t minute() const { return mm; }
129  uint8_t second() const { return ss; }
130 
131  uint8_t dayOfTheWeek() const;
132 
133  /* 32-bit times as seconds since 2000-01-01. */
134  uint32_t secondstime() const;
135 
136  /* 32-bit times as seconds since 1970-01-01. */
137  uint32_t unixtime(void) const;
138 
147  };
148  String timestamp(timestampOpt opt = TIMESTAMP_FULL);
149 
150  DateTime operator+(const TimeSpan &span);
151  DateTime operator-(const TimeSpan &span);
152  TimeSpan operator-(const DateTime &right);
153  bool operator<(const DateTime &right) const;
154 
164  bool operator>(const DateTime &right) const { return right < *this; }
165 
175  bool operator<=(const DateTime &right) const { return !(*this > right); }
176 
186  bool operator>=(const DateTime &right) const { return !(*this < right); }
187  bool operator==(const DateTime &right) const;
188 
197  bool operator!=(const DateTime &right) const { return !(*this == right); }
198 
199 protected:
200  uint8_t yOff;
201  uint8_t m;
202  uint8_t d;
203  uint8_t hh;
204  uint8_t mm;
205  uint8_t ss;
206 };
207 
208 /**************************************************************************/
212 /**************************************************************************/
213 class TimeSpan {
214 public:
215  TimeSpan(int32_t seconds = 0);
216  TimeSpan(int16_t days, int8_t hours, int8_t minutes, int8_t seconds);
217  TimeSpan(const TimeSpan &copy);
218 
224  int16_t days() const { return _seconds / 86400L; }
231  int8_t hours() const { return _seconds / 3600 % 24; }
238  int8_t minutes() const { return _seconds / 60 % 60; }
245  int8_t seconds() const { return _seconds % 60; }
250  int32_t totalseconds() const { return _seconds; }
251 
252  TimeSpan operator+(const TimeSpan &right);
253  TimeSpan operator-(const TimeSpan &right);
254 
255 protected:
256  int32_t _seconds;
257 };
258 
261  DS1307_OFF = 0x00, // Low
262  DS1307_ON = 0x80, // High
263  DS1307_SquareWave1HZ = 0x10, // 1Hz square wave
264  DS1307_SquareWave4kHz = 0x11, // 4kHz square wave
265  DS1307_SquareWave8kHz = 0x12, // 8kHz square wave
266  DS1307_SquareWave32kHz = 0x13 // 32kHz square wave
267 };
268 
269 /**************************************************************************/
273 /**************************************************************************/
274 class RTC_DS1307 {
275 public:
276  boolean begin(void);
277  static void adjust(const DateTime &dt);
278  uint8_t isrunning(void);
279  static DateTime now();
280  static Ds1307SqwPinMode readSqwPinMode();
281  static void writeSqwPinMode(Ds1307SqwPinMode mode);
282  uint8_t readnvram(uint8_t address);
283  void readnvram(uint8_t *buf, uint8_t size, uint8_t address);
284  void writenvram(uint8_t address, uint8_t data);
285  void writenvram(uint8_t address, uint8_t *buf, uint8_t size);
286 };
287 
290  DS3231_OFF = 0x1C,
295 };
296 
302  DS3231_A1_Hour = 0x08,
304  DS3231_A1_Date = 0x00,
308 };
319 };
320 
321 /**************************************************************************/
325 /**************************************************************************/
326 class RTC_DS3231 {
327 public:
328  boolean begin(void);
329  static void adjust(const DateTime &dt);
330  bool lostPower(void);
331  static DateTime now();
332  static Ds3231SqwPinMode readSqwPinMode();
333  static void writeSqwPinMode(Ds3231SqwPinMode mode);
334  bool setAlarm1(const DateTime &dt, Ds3231Alarm1Mode alarm_mode);
335  bool setAlarm2(const DateTime &dt, Ds3231Alarm2Mode alarm_mode);
336  void disableAlarm(uint8_t alarm_num);
337  void clearAlarm(uint8_t alarm_num);
338  bool alarmFired(uint8_t alarm_num);
339  void enable32K(void);
340  void disable32K(void);
341  bool isEnabled32K(void);
342  static float getTemperature(); // in Celcius degree
343 };
344 
355 };
356 
366 };
367 
378 };
379 
384 };
385 
386 /**************************************************************************/
390 /**************************************************************************/
391 class RTC_PCF8523 {
392 public:
393  boolean begin(void);
394  void adjust(const DateTime &dt);
395  boolean lostPower(void);
396  boolean initialized(void);
397  static DateTime now();
398  void start(void);
399  void stop(void);
400  uint8_t isrunning();
401  Pcf8523SqwPinMode readSqwPinMode();
402  void writeSqwPinMode(Pcf8523SqwPinMode mode);
403  void enableSecondTimer(void);
404  void disableSecondTimer(void);
405  void enableCountdownTimer(PCF8523TimerClockFreq clkFreq, uint8_t numPeriods,
406  uint8_t lowPulseWidth);
407  void enableCountdownTimer(PCF8523TimerClockFreq clkFreq, uint8_t numPeriods);
408  void disableCountdownTimer(void);
409  void deconfigureAllTimers(void);
410  void calibrate(Pcf8523OffsetMode mode, int8_t offset);
411 };
412 
420 };
421 
422 /**************************************************************************/
426 /**************************************************************************/
427 
428 class RTC_PCF8563 {
429 public:
430  boolean begin(void);
431  boolean lostPower(void);
432  void adjust(const DateTime &dt);
433  static DateTime now();
434  void start(void);
435  void stop(void);
436  uint8_t isrunning();
437  Pcf8563SqwPinMode readSqwPinMode();
438  void writeSqwPinMode(Pcf8563SqwPinMode mode);
439 };
440 
441 /**************************************************************************/
446 /**************************************************************************/
447 class RTC_Millis {
448 public:
453  static void begin(const DateTime &dt) { adjust(dt); }
454  static void adjust(const DateTime &dt);
455  static DateTime now();
456 
457 protected:
458  static uint32_t lastUnix;
459  static uint32_t lastMillis;
461 };
463 
464 /**************************************************************************/
472 /**************************************************************************/
473 class RTC_Micros {
474 public:
479  static void begin(const DateTime &dt) { adjust(dt); }
480  static void adjust(const DateTime &dt);
481  static void adjustDrift(int ppm);
482  static DateTime now();
483 
484 protected:
485  static uint32_t microsPerSecond;
486  static uint32_t lastUnix;
488  static uint32_t lastMicros;
490 };
492 
493 #endif // _RTCLIB_H_
Definition: RTClib.h:290
DateTime(uint32_t t=SECONDS_FROM_1970_TO_2000)
Constructor from Unix time.
Definition: RTClib.cpp:185
bool operator<(const DateTime &right) const
Test if one DateTime is less (earlier) than another.
Definition: RTClib.cpp:671
bool operator<=(const DateTime &right) const
Test if one DateTime is less (earlier) than or equal to another.
Definition: RTClib.h:175