M41T62 is a serial real-time clock (RTC) made by STMicroelectronics.
Dependents: LPC1114_data_logger Check_external_RTC LPC1114_barometer_with_data_logging
m41t62_rtc.h
- Committer:
- kenjiArai
- Date:
- 2014-06-22
- Revision:
- 1:9d7702a887d3
- Parent:
- 0:2919f8bd90f3
- Child:
- 2:c58da9ec9ae3
File content as of revision 1:9d7702a887d3:
/* * mbed library program * Control M41T62 RTC Module * * Copyright (c) 2014 Kenji Arai / JH1PJL * http://www.page.sannet.ne.jp/kenjia/index.html * http://mbed.org/users/kenjiArai/ * Created: June 21st, 2014 * Revised: June 22nd, 2014 * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef M41T62_H #define M41T62_H #include "mbed.h" // RTC STmicro M41T62 // Address b7=1,b6=1,b5=0,b4=1,b3=0,b2=0,b1=0, b0=R/W #define M41T62ADDR 0xd0 // No other choice #define RTC_Wk_Monday ((uint8_t)0x01) #define RTC_Wk_Tuesday ((uint8_t)0x02) #define RTC_Wk_Wednesday ((uint8_t)0x03) #define RTC_Wk_Thursday ((uint8_t)0x04) #define RTC_Wk_Friday ((uint8_t)0x05) #define RTC_Wk_Saturday ((uint8_t)0x06) #define RTC_Wk_Sunday ((uint8_t)0x07) #define RTC_SQW_NONE ((uint8_t)0x0) #define RTC_SQW_32KHZ ((uint8_t)0x1) #define RTC_SQW_8KHZ ((uint8_t)0x2) #define RTC_SQW_4KHZ ((uint8_t)0x3) #define RTC_SQW_2KHZ ((uint8_t)0x4) #define RTC_SQW_1KHZ ((uint8_t)0x5) #define RTC_SQW_512HZ ((uint8_t)0x6) #define RTC_SQW_256HZ ((uint8_t)0x7) #define RTC_SQW_128HZ ((uint8_t)0x8) #define RTC_SQW_64HZ ((uint8_t)0x9) #define RTC_SQW_32HZ ((uint8_t)0xa) #define RTC_SQW_16HZ ((uint8_t)0xb) #define RTC_SQW_8HZ ((uint8_t)0xc) #define RTC_SQW_4HZ ((uint8_t)0xd) #define RTC_SQW_2HZ ((uint8_t)0xe) #define RTC_SQW_1HZ ((uint8_t)0xf) typedef struct { // BCD format uint8_t rtc_seconds; uint8_t rtc_minutes; uint8_t rtc_hours; uint8_t rtc_weekday; uint8_t rtc_date; uint8_t rtc_month; uint8_t rtc_year_raw; uint16_t rtc_year; }rtc_time; class M41T62 { public: M41T62(PinName p_sda, PinName p_scl); M41T62(I2C& p_i2c); void read_rtc_std(tm *); void write_rtc_std(tm *); void read_rtc_direct(rtc_time *); void write_rtc_direct(rtc_time *); void set_sq_wave(uint8_t ); protected: void i2c_read_n_bytes(int, char*, int); void i2c_write_n_bytes(int, char*, int); uint8_t bin2bcd(uint8_t); uint8_t bcd2bin(uint8_t); I2C i2c; private: uint8_t M41T62_addr; uint8_t rtc_buf[8 + 2]; // buffer for RTC }; #endif // M41T62_H