Manuel Caballero / DS1307
Committer:
mcm
Date:
Tue Jul 31 14:22:39 2018 +0000
Revision:
1:a85a4a5e44b2
Parent:
0:73dc094709f0
Child:
2:190cad1b683d
Header file is ready to be tested

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mcm 1:a85a4a5e44b2 1 /**
mcm 1:a85a4a5e44b2 2 * @brief DS1307.h
mcm 1:a85a4a5e44b2 3 * @details 64 x 8, Serial, I2C Real-Time Clock.
mcm 1:a85a4a5e44b2 4 * Header file.
mcm 1:a85a4a5e44b2 5 *
mcm 1:a85a4a5e44b2 6 *
mcm 1:a85a4a5e44b2 7 * @return N/A
mcm 1:a85a4a5e44b2 8 *
mcm 1:a85a4a5e44b2 9 * @author Manuel Caballero
mcm 1:a85a4a5e44b2 10 * @date 31/July/2018
mcm 1:a85a4a5e44b2 11 * @version 31/July/2018 The ORIGIN
mcm 1:a85a4a5e44b2 12 * @pre N/A
mcm 1:a85a4a5e44b2 13 * @warning N/A
mcm 1:a85a4a5e44b2 14 * @pre This code belongs to AqueronteBlog ( http://unbarquero.blogspot.com ).
mcm 1:a85a4a5e44b2 15 */
mcm 1:a85a4a5e44b2 16 #ifndef DS1307_H
mcm 1:a85a4a5e44b2 17 #define DS1307_H
mcm 1:a85a4a5e44b2 18
mcm 1:a85a4a5e44b2 19 #include "mbed.h"
mcm 1:a85a4a5e44b2 20
mcm 1:a85a4a5e44b2 21
mcm 1:a85a4a5e44b2 22 /**
mcm 1:a85a4a5e44b2 23 Example:
mcm 1:a85a4a5e44b2 24 @code
mcm 1:a85a4a5e44b2 25 [todo]
mcm 1:a85a4a5e44b2 26 @endcode
mcm 1:a85a4a5e44b2 27 */
mcm 1:a85a4a5e44b2 28
mcm 1:a85a4a5e44b2 29
mcm 1:a85a4a5e44b2 30 /*!
mcm 1:a85a4a5e44b2 31 Library for the DS1307 64 x 8, Serial, I2C Real-Time Clock.
mcm 1:a85a4a5e44b2 32 */
mcm 1:a85a4a5e44b2 33 class DS1307
mcm 1:a85a4a5e44b2 34 {
mcm 1:a85a4a5e44b2 35 public:
mcm 1:a85a4a5e44b2 36 /**
mcm 1:a85a4a5e44b2 37 * @brief DEFAULT ADDRESSES
mcm 1:a85a4a5e44b2 38 */
mcm 1:a85a4a5e44b2 39 typedef enum {
mcm 1:a85a4a5e44b2 40 DS1307_ADDRESS = ( 0b1101000 << 1 ) /*!< DS1307 I2C Address */
mcm 1:a85a4a5e44b2 41 } DS1307_addresses_t;
mcm 1:a85a4a5e44b2 42
mcm 1:a85a4a5e44b2 43
mcm 1:a85a4a5e44b2 44 // REGISTER MAP
mcm 1:a85a4a5e44b2 45 /**
mcm 1:a85a4a5e44b2 46 * @brief TIMEKEEPER REGISTERS
mcm 1:a85a4a5e44b2 47 */
mcm 1:a85a4a5e44b2 48 typedef enum {
mcm 1:a85a4a5e44b2 49 DS1307_SECONDS = 0x00, /*!< Seconds ( Read/Write ) */
mcm 1:a85a4a5e44b2 50 DS1307_MINUTES = 0x01, /*!< Minutes ( Read/Write ) */
mcm 1:a85a4a5e44b2 51 DS1307_HOURS = 0x02, /*!< Hours ( Read/Write ) */
mcm 1:a85a4a5e44b2 52 DS1307_DAY = 0x03, /*!< Day ( Read/Write ) */
mcm 1:a85a4a5e44b2 53 DS1307_DATE = 0x04, /*!< Date ( Read/Write ) */
mcm 1:a85a4a5e44b2 54 DS1307_MONTH = 0x05, /*!< Month ( Read/Write ) */
mcm 1:a85a4a5e44b2 55 DS1307_YEAR = 0x06, /*!< Year ( Read/Write ) */
mcm 1:a85a4a5e44b2 56 DS1307_CONTROL = 0x07 /*!< Control ( Read/Write ) */
mcm 1:a85a4a5e44b2 57 } DS1307_timekeeper_registers_t;
mcm 1:a85a4a5e44b2 58
mcm 1:a85a4a5e44b2 59
mcm 1:a85a4a5e44b2 60
mcm 1:a85a4a5e44b2 61 // SECONDS
mcm 1:a85a4a5e44b2 62 /**
mcm 1:a85a4a5e44b2 63 * @brief CLOCK HALT
mcm 1:a85a4a5e44b2 64 */
mcm 1:a85a4a5e44b2 65 typedef enum {
mcm 1:a85a4a5e44b2 66 SECONDS_CH_MASK = ( 1 << 7 ), /*!< CH mask */
mcm 1:a85a4a5e44b2 67 SECONDS_CH_OSCILLATOR_ENABLED = ( 0 << 7 ), /*!< CH Oscillator is enabled */
mcm 1:a85a4a5e44b2 68 SECONDS_CH_OSCILLATOR_DISABLED = ( 1 << 7 ) /*!< CH Oscillator is disabled */
mcm 1:a85a4a5e44b2 69 } DS1307_seconds_ch_t;
mcm 1:a85a4a5e44b2 70
mcm 1:a85a4a5e44b2 71
mcm 1:a85a4a5e44b2 72 /**
mcm 1:a85a4a5e44b2 73 * @brief 10 SECONDS
mcm 1:a85a4a5e44b2 74 */
mcm 1:a85a4a5e44b2 75 typedef enum {
mcm 1:a85a4a5e44b2 76 SECONDS_10SECONDS_MASK = ( 0b111 << 4 ) /*!< 10 Seconds mask */
mcm 1:a85a4a5e44b2 77 } DS1307_seconds_10seconds_t;
mcm 1:a85a4a5e44b2 78
mcm 1:a85a4a5e44b2 79
mcm 1:a85a4a5e44b2 80 /**
mcm 1:a85a4a5e44b2 81 * @brief SECONDS
mcm 1:a85a4a5e44b2 82 */
mcm 1:a85a4a5e44b2 83 typedef enum {
mcm 1:a85a4a5e44b2 84 SECONDS_SECONDS_MASK = ( 0b1111 << 0 ) /*!< Seconds mask */
mcm 1:a85a4a5e44b2 85 } DS1307_seconds_seconds_t;
mcm 1:a85a4a5e44b2 86
mcm 1:a85a4a5e44b2 87
mcm 1:a85a4a5e44b2 88
mcm 1:a85a4a5e44b2 89 // MINUTES
mcm 1:a85a4a5e44b2 90 /**
mcm 1:a85a4a5e44b2 91 * @brief 10 MINUTES
mcm 1:a85a4a5e44b2 92 */
mcm 1:a85a4a5e44b2 93 typedef enum {
mcm 1:a85a4a5e44b2 94 MINUTES_10MINUTES_MASK = ( 0b111 << 4 ) /*!< 10 Minutes mask */
mcm 1:a85a4a5e44b2 95 } DS1307_minutes_10minutes_t;
mcm 1:a85a4a5e44b2 96
mcm 1:a85a4a5e44b2 97
mcm 1:a85a4a5e44b2 98 /**
mcm 1:a85a4a5e44b2 99 * @brief MINUTES
mcm 1:a85a4a5e44b2 100 */
mcm 1:a85a4a5e44b2 101 typedef enum {
mcm 1:a85a4a5e44b2 102 MINUTES_MINUTES_MASK = ( 0b1111 << 0 ) /*!< Minutes mask */
mcm 1:a85a4a5e44b2 103 } DS1307_minutes_minutes_t;
mcm 1:a85a4a5e44b2 104
mcm 1:a85a4a5e44b2 105
mcm 1:a85a4a5e44b2 106
mcm 1:a85a4a5e44b2 107 // HOURS
mcm 1:a85a4a5e44b2 108 /**
mcm 1:a85a4a5e44b2 109 * @brief 12-HOUR OR 24-HOUR MODE
mcm 1:a85a4a5e44b2 110 */
mcm 1:a85a4a5e44b2 111 typedef enum {
mcm 1:a85a4a5e44b2 112 HOURS_MODE_MASK = ( 1 << 6 ), /*!< Hours 12/24 mode mask */
mcm 1:a85a4a5e44b2 113 HOURS_MODE_12H = ( 1 << 6 ), /*!< Hours 12-hour mode enabled */
mcm 1:a85a4a5e44b2 114 HOURS_MODE_24H = ( 0 << 6 ) /*!< Hours 24-hour mode enabled */
mcm 1:a85a4a5e44b2 115 } DS1307_hours_mode_t;
mcm 1:a85a4a5e44b2 116
mcm 1:a85a4a5e44b2 117
mcm 1:a85a4a5e44b2 118 /**
mcm 1:a85a4a5e44b2 119 * @brief AM OR PM MODE
mcm 1:a85a4a5e44b2 120 */
mcm 1:a85a4a5e44b2 121 typedef enum {
mcm 1:a85a4a5e44b2 122 HOURS_MODE_AM_PM_MASK = ( 1 << 5 ), /*!< Hours am/pm mode mask */
mcm 1:a85a4a5e44b2 123 HOURS_MODE_AM = ( 0 << 5 ), /*!< Hours AM mode enabled */
mcm 1:a85a4a5e44b2 124 HOURS_MODE_PM = ( 1 << 5 ) /*!< Hours PM mode enabled */
mcm 1:a85a4a5e44b2 125 } DS1307_hours_am_pm_mode_t;
mcm 1:a85a4a5e44b2 126
mcm 1:a85a4a5e44b2 127
mcm 1:a85a4a5e44b2 128 /**
mcm 1:a85a4a5e44b2 129 * @brief 10 HOUR
mcm 1:a85a4a5e44b2 130 */
mcm 1:a85a4a5e44b2 131 typedef enum {
mcm 1:a85a4a5e44b2 132 HOUR_10HOUR_MASK = ( 0b11 << 4 ) /*!< 10 Hour mask */
mcm 1:a85a4a5e44b2 133 } DS1307_hours_10hour_t;
mcm 1:a85a4a5e44b2 134
mcm 1:a85a4a5e44b2 135
mcm 1:a85a4a5e44b2 136 /**
mcm 1:a85a4a5e44b2 137 * @brief HOURS
mcm 1:a85a4a5e44b2 138 */
mcm 1:a85a4a5e44b2 139 typedef enum {
mcm 1:a85a4a5e44b2 140 HOUR_HOURS_MASK = ( 0b1111 << 0 ) /*!< Hours mask */
mcm 1:a85a4a5e44b2 141 } DS1307_hours_hours_t;
mcm 1:a85a4a5e44b2 142
mcm 1:a85a4a5e44b2 143
mcm 1:a85a4a5e44b2 144
mcm 1:a85a4a5e44b2 145 // DAY
mcm 1:a85a4a5e44b2 146 /**
mcm 1:a85a4a5e44b2 147 * @brief DAY
mcm 1:a85a4a5e44b2 148 */
mcm 1:a85a4a5e44b2 149 typedef enum {
mcm 1:a85a4a5e44b2 150 DAY_MASK = ( 0b111 << 0 ), /*!< Day mask */
mcm 1:a85a4a5e44b2 151 DAY_SUNDAY = ( 1 << 0 ), /*!< Day Sunday */
mcm 1:a85a4a5e44b2 152 DAY_MONDAY = ( 2 << 0 ), /*!< Day Monday */
mcm 1:a85a4a5e44b2 153 DAY_TUESDAY = ( 3 << 0 ), /*!< Day Tuesday */
mcm 1:a85a4a5e44b2 154 DAY_WEDNESDAY = ( 4 << 0 ), /*!< Day Wednesday */
mcm 1:a85a4a5e44b2 155 DAY_THURSDAY = ( 5 << 0 ), /*!< Day Thursday */
mcm 1:a85a4a5e44b2 156 DAY_FRIDAY = ( 6 << 0 ), /*!< Day Friday */
mcm 1:a85a4a5e44b2 157 DAY_SATURDAY = ( 7 << 0 ) /*!< Day Saturday */
mcm 1:a85a4a5e44b2 158 } DS1307_day_t;
mcm 1:a85a4a5e44b2 159
mcm 1:a85a4a5e44b2 160
mcm 1:a85a4a5e44b2 161
mcm 1:a85a4a5e44b2 162 // DATE
mcm 1:a85a4a5e44b2 163 /**
mcm 1:a85a4a5e44b2 164 * @brief 10 DATE
mcm 1:a85a4a5e44b2 165 */
mcm 1:a85a4a5e44b2 166 typedef enum {
mcm 1:a85a4a5e44b2 167 DATE_10DATE_MASK = ( 0b11 << 4 ) /*!< 10 Date mask */
mcm 1:a85a4a5e44b2 168 } DS1307_date_10date_t;
mcm 1:a85a4a5e44b2 169
mcm 1:a85a4a5e44b2 170
mcm 1:a85a4a5e44b2 171 /**
mcm 1:a85a4a5e44b2 172 * @brief DATE
mcm 1:a85a4a5e44b2 173 */
mcm 1:a85a4a5e44b2 174 typedef enum {
mcm 1:a85a4a5e44b2 175 DATE_DATE_MASK = ( 0b1111 << 0 ) /*!< Date mask */
mcm 1:a85a4a5e44b2 176 } DS1307_date_date_t;
mcm 1:a85a4a5e44b2 177
mcm 1:a85a4a5e44b2 178
mcm 1:a85a4a5e44b2 179
mcm 1:a85a4a5e44b2 180 // MONTH
mcm 1:a85a4a5e44b2 181 /**
mcm 1:a85a4a5e44b2 182 * @brief 10 MONTH
mcm 1:a85a4a5e44b2 183 */
mcm 1:a85a4a5e44b2 184 typedef enum {
mcm 1:a85a4a5e44b2 185 MONTH_10MONTH_MASK = ( 0b1 << 4 ) /*!< 10 Month mask */
mcm 1:a85a4a5e44b2 186 } DS1307_month_10month_t;
mcm 1:a85a4a5e44b2 187
mcm 1:a85a4a5e44b2 188
mcm 1:a85a4a5e44b2 189 /**
mcm 1:a85a4a5e44b2 190 * @brief MONTH
mcm 1:a85a4a5e44b2 191 */
mcm 1:a85a4a5e44b2 192 typedef enum {
mcm 1:a85a4a5e44b2 193 MONTH_MONTH_MASK = ( 0b1111 << 0 ) /*!< Month mask */
mcm 1:a85a4a5e44b2 194 } DS1307_month_month_t;
mcm 1:a85a4a5e44b2 195
mcm 1:a85a4a5e44b2 196
mcm 1:a85a4a5e44b2 197
mcm 1:a85a4a5e44b2 198 // YEAR
mcm 1:a85a4a5e44b2 199 /**
mcm 1:a85a4a5e44b2 200 * @brief 10 YEAR
mcm 1:a85a4a5e44b2 201 */
mcm 1:a85a4a5e44b2 202 typedef enum {
mcm 1:a85a4a5e44b2 203 YEAR_10YEAR_MASK = ( 0b1111 << 4 ) /*!< 10 Year mask */
mcm 1:a85a4a5e44b2 204 } DS1307_year_10month_t;
mcm 1:a85a4a5e44b2 205
mcm 1:a85a4a5e44b2 206
mcm 1:a85a4a5e44b2 207 /**
mcm 1:a85a4a5e44b2 208 * @brief YEAR
mcm 1:a85a4a5e44b2 209 */
mcm 1:a85a4a5e44b2 210 typedef enum {
mcm 1:a85a4a5e44b2 211 YEAR_YEAR_MASK = ( 0b1111 << 0 ) /*!< Year mask */
mcm 1:a85a4a5e44b2 212 } DS1307_year_year_t;
mcm 1:a85a4a5e44b2 213
mcm 1:a85a4a5e44b2 214
mcm 1:a85a4a5e44b2 215
mcm 1:a85a4a5e44b2 216 // CONTROL
mcm 1:a85a4a5e44b2 217 /**
mcm 1:a85a4a5e44b2 218 * @brief OUTPUT CONTROL (OUT)
mcm 1:a85a4a5e44b2 219 */
mcm 1:a85a4a5e44b2 220 typedef enum {
mcm 1:a85a4a5e44b2 221 CONTROL_OUT_MASK = ( 1 << 7 ), /*!< OUT mask */
mcm 1:a85a4a5e44b2 222 CONTROL_OUT_HIGH = ( 1 << 7 ), /*!< SQW/OUT high */
mcm 1:a85a4a5e44b2 223 CONTROL_OUT_LOW = ( 0 << 7 ) /*!< SQW/OUT low */
mcm 1:a85a4a5e44b2 224 } DS1307_control_out_t;
mcm 1:a85a4a5e44b2 225
mcm 1:a85a4a5e44b2 226
mcm 1:a85a4a5e44b2 227 /**
mcm 1:a85a4a5e44b2 228 * @brief SQUARE-WAVE ENABLE (SQWE)
mcm 1:a85a4a5e44b2 229 */
mcm 1:a85a4a5e44b2 230 typedef enum {
mcm 1:a85a4a5e44b2 231 CONTROL_SQWE_MASK = ( 1 << 4 ), /*!< SQWE mask */
mcm 1:a85a4a5e44b2 232 CONTROL_SQWE_ENABLED = ( 1 << 4 ), /*!< SQWE enabled */
mcm 1:a85a4a5e44b2 233 CONTROL_SQWE_DISABLED = ( 0 << 4 ) /*!< SQWE disabled */
mcm 1:a85a4a5e44b2 234 } DS1307_control_sqwe_t;
mcm 1:a85a4a5e44b2 235
mcm 1:a85a4a5e44b2 236
mcm 1:a85a4a5e44b2 237 /**
mcm 1:a85a4a5e44b2 238 * @brief RATE SELECT
mcm 1:a85a4a5e44b2 239 */
mcm 1:a85a4a5e44b2 240 typedef enum {
mcm 1:a85a4a5e44b2 241 CONTROL_RS_MASK = ( 0b11 << 0 ), /*!< RS mask */
mcm 1:a85a4a5e44b2 242 CONTROL_RS_1_HZ = ( 0b00 << 0 ), /*!< RS 1Hz */
mcm 1:a85a4a5e44b2 243 CONTROL_RS_4_096_KHZ = ( 0b01 << 0 ), /*!< RS 4.096kHz */
mcm 1:a85a4a5e44b2 244 CONTROL_RS_8_192_KHZ = ( 0b10 << 0 ), /*!< RS 8.192kHz */
mcm 1:a85a4a5e44b2 245 CONTROL_RS_32_768_KHZ = ( 0b11 << 0 ) /*!< RS 32.768kHz */
mcm 1:a85a4a5e44b2 246 } DS1307_control_rate_select_t;
mcm 1:a85a4a5e44b2 247
mcm 1:a85a4a5e44b2 248
mcm 1:a85a4a5e44b2 249
mcm 1:a85a4a5e44b2 250 // ALTERNATIVES
mcm 1:a85a4a5e44b2 251 /**
mcm 1:a85a4a5e44b2 252 * @brief MONTH
mcm 1:a85a4a5e44b2 253 */
mcm 1:a85a4a5e44b2 254 typedef enum {
mcm 1:a85a4a5e44b2 255 MONTH_JANUARY = 0x01, /*!< January */
mcm 1:a85a4a5e44b2 256 MONTH_FEBRUARY = 0x02, /*!< February */
mcm 1:a85a4a5e44b2 257 MONTH_MARCH = 0x03, /*!< March */
mcm 1:a85a4a5e44b2 258 MONTH_APRIL = 0x04, /*!< April */
mcm 1:a85a4a5e44b2 259 MONTH_MAY = 0x05, /*!< May */
mcm 1:a85a4a5e44b2 260 MONTH_JUNE = 0x06, /*!< June */
mcm 1:a85a4a5e44b2 261 MONTH_JULY = 0x07, /*!< July */
mcm 1:a85a4a5e44b2 262 MONTH_AUGUST = 0x08, /*!< August */
mcm 1:a85a4a5e44b2 263 MONTH_SEPTEMBER = 0x09, /*!< September */
mcm 1:a85a4a5e44b2 264 MONTH_OCTOBER = 0x10, /*!< October */
mcm 1:a85a4a5e44b2 265 MONTH_NOVEMBER = 0x11, /*!< November */
mcm 1:a85a4a5e44b2 266 MONTH_DECEMBER = 0x12 /*!< December */
mcm 1:a85a4a5e44b2 267 } DS1307_month_t;
mcm 1:a85a4a5e44b2 268
mcm 1:a85a4a5e44b2 269
mcm 1:a85a4a5e44b2 270
mcm 1:a85a4a5e44b2 271
mcm 1:a85a4a5e44b2 272 #ifndef DS1307_VECTOR_STRUCT_H
mcm 1:a85a4a5e44b2 273 #define DS1307_VECTOR_STRUCT_H
mcm 1:a85a4a5e44b2 274 typedef struct {
mcm 1:a85a4a5e44b2 275 uint32_t BCDTime;
mcm 1:a85a4a5e44b2 276 DS1307_hours_mode_t Time12H_24HMode;
mcm 1:a85a4a5e44b2 277 DS1307_hours_am_pm_mode_t TimeAM_PM_Mode;
mcm 1:a85a4a5e44b2 278
mcm 1:a85a4a5e44b2 279 DS1307_day_t DayOfTheWeek;
mcm 1:a85a4a5e44b2 280
mcm 1:a85a4a5e44b2 281 uint8_t BCDDate;
mcm 1:a85a4a5e44b2 282
mcm 1:a85a4a5e44b2 283 DS1307_month_t BCDMonth;
mcm 1:a85a4a5e44b2 284
mcm 1:a85a4a5e44b2 285 uint8_t BCDYear;
mcm 1:a85a4a5e44b2 286 } DS1307_vector_data_t;
mcm 1:a85a4a5e44b2 287 #endif
mcm 1:a85a4a5e44b2 288
mcm 1:a85a4a5e44b2 289
mcm 1:a85a4a5e44b2 290 /**
mcm 1:a85a4a5e44b2 291 * @brief INTERNAL CONSTANTS
mcm 1:a85a4a5e44b2 292 */
mcm 1:a85a4a5e44b2 293 typedef enum {
mcm 1:a85a4a5e44b2 294 DS1307_SUCCESS = 0,
mcm 1:a85a4a5e44b2 295 DS1307_FAILURE = 1,
mcm 1:a85a4a5e44b2 296 I2C_SUCCESS = 0 /*!< I2C communication was fine */
mcm 1:a85a4a5e44b2 297 } DS1307_status_t;
mcm 1:a85a4a5e44b2 298
mcm 1:a85a4a5e44b2 299
mcm 1:a85a4a5e44b2 300
mcm 1:a85a4a5e44b2 301
mcm 1:a85a4a5e44b2 302 /** Create an DS1307 object connected to the specified I2C pins.
mcm 1:a85a4a5e44b2 303 *
mcm 1:a85a4a5e44b2 304 * @param sda I2C data pin
mcm 1:a85a4a5e44b2 305 * @param scl I2C clock pin
mcm 1:a85a4a5e44b2 306 * @param addr I2C slave address
mcm 1:a85a4a5e44b2 307 * @param freq I2C frequency
mcm 1:a85a4a5e44b2 308 */
mcm 1:a85a4a5e44b2 309 DS1307 ( PinName sda, PinName scl, uint32_t addr, uint32_t freq );
mcm 1:a85a4a5e44b2 310
mcm 1:a85a4a5e44b2 311 /** Delete DS1307 object.
mcm 1:a85a4a5e44b2 312 */
mcm 1:a85a4a5e44b2 313 ~DS1307();
mcm 1:a85a4a5e44b2 314
mcm 1:a85a4a5e44b2 315 /** It enables/disabled the oscillator.
mcm 1:a85a4a5e44b2 316 */
mcm 1:a85a4a5e44b2 317 DS1307_status_t DS1307_OscillatorMode ( DS1307_seconds_ch_t myOscillator );
mcm 1:a85a4a5e44b2 318
mcm 1:a85a4a5e44b2 319 /** It configures the square-wave output.
mcm 1:a85a4a5e44b2 320 */
mcm 1:a85a4a5e44b2 321 DS1307_status_t DS1307_SquareWaveOutput ( DS1307_control_sqwe_t mySQWE, DS1307_control_rate_select_t myRateSelect );
mcm 1:a85a4a5e44b2 322
mcm 1:a85a4a5e44b2 323 /** It configures the output pin ( OUT ).
mcm 1:a85a4a5e44b2 324 */
mcm 1:a85a4a5e44b2 325 DS1307_status_t DS1307_ConfOutput ( DS1307_control_out_t myOUT );
mcm 1:a85a4a5e44b2 326
mcm 1:a85a4a5e44b2 327 /** It sets the time ( BCD mode ).
mcm 1:a85a4a5e44b2 328 */
mcm 1:a85a4a5e44b2 329 DS1307_status_t DS1307_SetTime ( DS1307_vector_data_t myTime );
mcm 1:a85a4a5e44b2 330
mcm 1:a85a4a5e44b2 331 /** It gets the time ( BCD mode ).
mcm 1:a85a4a5e44b2 332 */
mcm 1:a85a4a5e44b2 333 DS1307_status_t DS1307_GetTime ( DS1307_vector_data_t* myTime );
mcm 1:a85a4a5e44b2 334
mcm 1:a85a4a5e44b2 335 /** It sets the day of the week.
mcm 1:a85a4a5e44b2 336 */
mcm 1:a85a4a5e44b2 337 DS1307_status_t DS1307_SetDayOfTheWeek ( DS1307_vector_data_t myDayOfTheWeek );
mcm 1:a85a4a5e44b2 338
mcm 1:a85a4a5e44b2 339 /** It gets the day of the week.
mcm 1:a85a4a5e44b2 340 */
mcm 1:a85a4a5e44b2 341 DS1307_status_t DS1307_GetDayOfTheWeek ( DS1307_vector_data_t* myDayOfTheWeek );
mcm 1:a85a4a5e44b2 342
mcm 1:a85a4a5e44b2 343 /** It sets the date ( BCD mode ).
mcm 1:a85a4a5e44b2 344 */
mcm 1:a85a4a5e44b2 345 DS1307_status_t DS1307_SetDate ( DS1307_vector_data_t myDate );
mcm 1:a85a4a5e44b2 346
mcm 1:a85a4a5e44b2 347 /** It gets the date ( BCD mode ).
mcm 1:a85a4a5e44b2 348 */
mcm 1:a85a4a5e44b2 349 DS1307_status_t DS1307_GetDate ( DS1307_vector_data_t* myDate );
mcm 1:a85a4a5e44b2 350
mcm 1:a85a4a5e44b2 351 /** It sets the month ( BCD mode ).
mcm 1:a85a4a5e44b2 352 */
mcm 1:a85a4a5e44b2 353 DS1307_status_t DS1307_SetMonth ( DS1307_vector_data_t myMonth );
mcm 1:a85a4a5e44b2 354
mcm 1:a85a4a5e44b2 355 /** It gets the month ( BCD mode ).
mcm 1:a85a4a5e44b2 356 */
mcm 1:a85a4a5e44b2 357 DS1307_status_t DS1307_GetMonth ( DS1307_vector_data_t* myMonth );
mcm 1:a85a4a5e44b2 358
mcm 1:a85a4a5e44b2 359 /** It sets the year ( BCD mode ).
mcm 1:a85a4a5e44b2 360 */
mcm 1:a85a4a5e44b2 361 DS1307_status_t DS1307_SetYear ( DS1307_vector_data_t myYear );
mcm 1:a85a4a5e44b2 362
mcm 1:a85a4a5e44b2 363 /** It gets the year ( BCD mode ).
mcm 1:a85a4a5e44b2 364 */
mcm 1:a85a4a5e44b2 365 DS1307_status_t DS1307_GetYear ( DS1307_vector_data_t* myYear );
mcm 1:a85a4a5e44b2 366
mcm 1:a85a4a5e44b2 367 /** It writes a byte into the RAM memory.
mcm 1:a85a4a5e44b2 368 */
mcm 1:a85a4a5e44b2 369 DS1307_status_t DS1307_WriteByteRAM ( uint8_t myByte, uint8_t myAddress );
mcm 1:a85a4a5e44b2 370
mcm 1:a85a4a5e44b2 371 /** It reads a byte from the RAM memory.
mcm 1:a85a4a5e44b2 372 */
mcm 1:a85a4a5e44b2 373 DS1307_status_t DS1307_ReadByteRAM ( uint8_t* myByte, uint8_t myAddress );
mcm 1:a85a4a5e44b2 374
mcm 1:a85a4a5e44b2 375 /** It ereases a byte into the RAM memory.
mcm 1:a85a4a5e44b2 376 */
mcm 1:a85a4a5e44b2 377 DS1307_status_t DS1307_EraseByteRAM ( uint8_t myAddress );
mcm 1:a85a4a5e44b2 378
mcm 1:a85a4a5e44b2 379
mcm 1:a85a4a5e44b2 380 private:
mcm 1:a85a4a5e44b2 381 I2C _i2c;
mcm 1:a85a4a5e44b2 382 uint32_t _DS1307_Addr;
mcm 1:a85a4a5e44b2 383 };
mcm 1:a85a4a5e44b2 384
mcm 1:a85a4a5e44b2 385 #endif