Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
DS1307.h@1:a85a4a5e44b2, 2018-07-31 (annotated)
- 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?
| User | Revision | Line number | New 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 |