You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

162 lines
3.9 KiB

6 years ago
6 years ago
6 years ago
  1. #ifndef DS3231_h
  2. #define DS3231_h
  3. #include <Arduino.h>
  4. /**
  5. TODO: alarms
  6. */
  7. class DS3231
  8. {
  9. public:
  10. // begin function
  11. void begin();
  12. // get seconds
  13. uint8_t getSeconds();
  14. // set seconds
  15. void setSeconds(uint8_t seconds);
  16. // increment seconds
  17. void incrementSeconds();
  18. // decrement seconds
  19. void decrementSeconds();
  20. // get minutes
  21. uint8_t getMinutes();
  22. // set minutes
  23. void setMinutes(uint8_t minutes);
  24. // increment minutes
  25. void incrementMinutes();
  26. // decrement minutes
  27. void decrementMinutes();
  28. // get hours
  29. uint8_t getHours();
  30. // set hours
  31. void setHours(uint8_t hours);
  32. // increment hours
  33. void incrementHours();
  34. // decrement hours
  35. void decrementHours();
  36. // get day
  37. uint8_t getDay();
  38. // set day
  39. void setDay(uint8_t day);
  40. // get date
  41. uint8_t getDate();
  42. // set date
  43. void setDate(uint8_t date);
  44. // increment date
  45. void incrementDate();
  46. // decrement date
  47. void decrementDate();
  48. // get month
  49. uint8_t getMonth();
  50. // set month
  51. void setMonth(uint8_t month);
  52. // increment month
  53. void incrementMonth();
  54. // decrement month
  55. void decrementMonth();
  56. // get year
  57. int16_t getYear();
  58. // set year
  59. void setYear(int16_t year);
  60. // increment year
  61. void incrementYear();
  62. // decrement year
  63. void decrementYear();
  64. // get alarm1 seconds
  65. uint8_t getAlarm1Seconds();
  66. // set alarm1 seconds
  67. void setAlarm1Seconds(uint8_t seonds);
  68. // get alarm1 minutes
  69. uint8_t getAlarm1Minutes();
  70. // set alarm1 Minutes
  71. void setAlarm1Minutes(uint8_t minutes);
  72. // get alarm1 hours
  73. uint8_t getAlarm1Hours();
  74. // set alarm1 hours
  75. void setAlarm1Hours(uint8_t hours);
  76. // get alarm1 date
  77. uint8_t getAlarm1Date();
  78. // set alarm1 data
  79. void setAlarm1Date(uint8_t date);
  80. // set alarm1 mask
  81. void setAlarm1Mask(uint8_t mask);
  82. // get alarm2 minutes
  83. uint8_t getAlarm2Minutes();
  84. // set alarm2 Minutes
  85. void setAlarm2Minutes(uint8_t minutes);
  86. // get alarm2 hours
  87. uint8_t getAlarm2Hours();
  88. // set alarm2 hours
  89. void setAlarm2Hours(uint8_t hours);
  90. // get alarm2 date
  91. uint8_t getAlarm2Date();
  92. // set alarm2 data
  93. void setAlarm2Date(uint8_t date);
  94. // set alarm2 mask
  95. void setAlarm2Mask(uint8_t mask);
  96. // get control register
  97. uint8_t getControlRegister();
  98. // set control register
  99. void setControlRegister(uint8_t value);
  100. // set status register
  101. uint8_t getStatusRegister();
  102. // set status register
  103. void setStatusRegister(uint8_t value);
  104. // get temperature
  105. uint8_t getTemperature();
  106. // get register
  107. uint8_t getRegister(uint8_t address);
  108. // set register
  109. void setRegister(uint8_t address, uint8_t value);
  110. // decimal to binary coded decimal
  111. uint8_t dectobcd(uint8_t value);
  112. // binary coded decimal to decimal
  113. uint8_t bcdtodec(uint8_t value);
  114. // get century value
  115. uint8_t getCentury();
  116. // set century value
  117. void setCentury(uint8_t century);
  118. };
  119. // I2C address
  120. #define DS3231_I2C_ADDRESS 0x68
  121. // I2C registers
  122. #define DS3231_SECONDS 0x00
  123. #define DS3231_MINUTES 0x01
  124. #define DS3231_HOURS 0x02
  125. #define DS3231_DAY 0x03
  126. #define DS3231_DATE 0x04
  127. #define DS3231_MONTH 0x05
  128. #define DS3231_YEAR 0x06
  129. #define DS3231_ALARM1_SECONDS 0x07
  130. #define DS3231_ALARM1_MINUTES 0x08
  131. #define DS3231_ALARM1_HOURS 0x09
  132. #define DS3231_ALARM1_DATE 0x0A
  133. #define DS3231_ALARM2_MINUTES 0x0B
  134. #define DS3231_ALARM2_HOURS 0x0C
  135. #define DS3231_ALARM2_DATE 0x0D
  136. #define DS3231_CONTROL 0x0E
  137. #define DS3231_STATUS 0x0F
  138. #define DS3231_AGING_OFFSET 0x10
  139. #define DS3231_MSB_TEMP 0x11
  140. #define DS3231_LSB_TEMP 0x12
  141. // control registers
  142. #define DS3231_CONTROL_A1IE 0x01
  143. #define DS3231_CONTROL_A2IE 0x02
  144. #define DS3231_CONTROL_INTCN 0x04
  145. #define DS3231_CONTROL_RS1 0x08
  146. #define DS3231_CONTROL_RS2 0x10
  147. #define DS3231_CONTROL_CONV 0x20
  148. #define DS3231_CONTROL_BBSQW 0x40
  149. #define DS3231_CONTROL_EOSC 0x80
  150. // status registers
  151. #define DS3231_STATUSL_A1F 0x01
  152. #define DS3231_STATUSL_A2F 0x02
  153. #define DS3231_STATUSL_BSY 0x04
  154. #define DS3231_STATUSL_EN32KHZ 0x08
  155. #define DS3231_STATUSL_OSF 0x80
  156. #endif