![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
.
Fork of rtc_func by
RTC8563.cpp@2:c3f9bdbbb062, 2015-04-16 (annotated)
- Committer:
- Deixi
- Date:
- Thu Apr 16 10:25:40 2015 +0000
- Revision:
- 2:c3f9bdbbb062
rtc_function in class RTC8563 transferred
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Deixi | 2:c3f9bdbbb062 | 1 | // |
Deixi | 2:c3f9bdbbb062 | 2 | // @ Project : RTC Date Time Clock |
Deixi | 2:c3f9bdbbb062 | 3 | // @ File Name : RTC8563.cpp |
Deixi | 2:c3f9bdbbb062 | 4 | // @ Date : 06.04.2015 |
Deixi | 2:c3f9bdbbb062 | 5 | // @ Author : Franz Pucher |
Deixi | 2:c3f9bdbbb062 | 6 | // @ Copyright : pe@bulme.at |
Deixi | 2:c3f9bdbbb062 | 7 | // |
Deixi | 2:c3f9bdbbb062 | 8 | |
Deixi | 2:c3f9bdbbb062 | 9 | #include "mbed.h" |
Deixi | 2:c3f9bdbbb062 | 10 | #include "const.h" |
Deixi | 2:c3f9bdbbb062 | 11 | |
Deixi | 2:c3f9bdbbb062 | 12 | #include "RTC8563.h" |
Deixi | 2:c3f9bdbbb062 | 13 | |
Deixi | 2:c3f9bdbbb062 | 14 | RTC8563::RTC8563() : i2c(p28, p27) // delete void and add call to base constructor |
Deixi | 2:c3f9bdbbb062 | 15 | { |
Deixi | 2:c3f9bdbbb062 | 16 | // Initialise I2C |
Deixi | 2:c3f9bdbbb062 | 17 | i2c.frequency(40000); |
Deixi | 2:c3f9bdbbb062 | 18 | char init1[2] = {0x6, 0x00}; |
Deixi | 2:c3f9bdbbb062 | 19 | char init2[2] = {0x7, 0xff}; |
Deixi | 2:c3f9bdbbb062 | 20 | i2c.write(0x40, init1, 2); |
Deixi | 2:c3f9bdbbb062 | 21 | i2c.write(0x40, init2, 2); |
Deixi | 2:c3f9bdbbb062 | 22 | } |
Deixi | 2:c3f9bdbbb062 | 23 | |
Deixi | 2:c3f9bdbbb062 | 24 | RTC8563::RTC8563(PinName sda, PinName scl) : i2c(sda, scl) |
Deixi | 2:c3f9bdbbb062 | 25 | { |
Deixi | 2:c3f9bdbbb062 | 26 | // Initialise I2C |
Deixi | 2:c3f9bdbbb062 | 27 | i2c.frequency(40000); |
Deixi | 2:c3f9bdbbb062 | 28 | char init1[2] = {0x6, 0x00}; |
Deixi | 2:c3f9bdbbb062 | 29 | char init2[2] = {0x7, 0xff}; |
Deixi | 2:c3f9bdbbb062 | 30 | i2c.write(0x40, init1, 2); |
Deixi | 2:c3f9bdbbb062 | 31 | i2c.write(0x40, init2, 2); |
Deixi | 2:c3f9bdbbb062 | 32 | } |
Deixi | 2:c3f9bdbbb062 | 33 | |
Deixi | 2:c3f9bdbbb062 | 34 | char RTC8563::rtc_read(char address) |
Deixi | 2:c3f9bdbbb062 | 35 | { |
Deixi | 2:c3f9bdbbb062 | 36 | char value; |
Deixi | 2:c3f9bdbbb062 | 37 | i2c.start(); |
Deixi | 2:c3f9bdbbb062 | 38 | i2c.write(RTC8563_ADR); |
Deixi | 2:c3f9bdbbb062 | 39 | i2c.write(address); |
Deixi | 2:c3f9bdbbb062 | 40 | i2c.start(); |
Deixi | 2:c3f9bdbbb062 | 41 | i2c.write(RTC8563_ADR | _READ); |
Deixi | 2:c3f9bdbbb062 | 42 | value = i2c.read(0); |
Deixi | 2:c3f9bdbbb062 | 43 | i2c.stop(); |
Deixi | 2:c3f9bdbbb062 | 44 | |
Deixi | 2:c3f9bdbbb062 | 45 | return value; |
Deixi | 2:c3f9bdbbb062 | 46 | } |
Deixi | 2:c3f9bdbbb062 | 47 | |
Deixi | 2:c3f9bdbbb062 | 48 | void RTC8563::rtc_write(char address, char value) |
Deixi | 2:c3f9bdbbb062 | 49 | { |
Deixi | 2:c3f9bdbbb062 | 50 | i2c.start(); |
Deixi | 2:c3f9bdbbb062 | 51 | i2c.write(RTC8563_ADR); |
Deixi | 2:c3f9bdbbb062 | 52 | i2c.write(address); |
Deixi | 2:c3f9bdbbb062 | 53 | i2c.write(value); |
Deixi | 2:c3f9bdbbb062 | 54 | i2c.stop(); |
Deixi | 2:c3f9bdbbb062 | 55 | } |
Deixi | 2:c3f9bdbbb062 | 56 | |
Deixi | 2:c3f9bdbbb062 | 57 | void RTC8563::rtc_init() |
Deixi | 2:c3f9bdbbb062 | 58 | { |
Deixi | 2:c3f9bdbbb062 | 59 | // Formatierung |
Deixi | 2:c3f9bdbbb062 | 60 | // 2015/01/24 |
Deixi | 2:c3f9bdbbb062 | 61 | // 10:32:00 |
Deixi | 2:c3f9bdbbb062 | 62 | |
Deixi | 2:c3f9bdbbb062 | 63 | rtc_write(CONTROL1, 0x20); //stop |
Deixi | 2:c3f9bdbbb062 | 64 | rtc_write(CONTROL2, 0x00); |
Deixi | 2:c3f9bdbbb062 | 65 | rtc_write(YEARS, (0x15)); |
Deixi | 2:c3f9bdbbb062 | 66 | rtc_write(MONTHS, (0x03)); |
Deixi | 2:c3f9bdbbb062 | 67 | rtc_write(DAYS, (0x13)); |
Deixi | 2:c3f9bdbbb062 | 68 | rtc_write(HOURS, (0x14)); |
Deixi | 2:c3f9bdbbb062 | 69 | rtc_write(MINUTES, (0x47)); |
Deixi | 2:c3f9bdbbb062 | 70 | rtc_write(SECONDS, (0x00)); |
Deixi | 2:c3f9bdbbb062 | 71 | rtc_write(CLOCKOUT_FREQ, 0x00); // 0x83 = TE on & 1Hz |
Deixi | 2:c3f9bdbbb062 | 72 | rtc_write(TIMER_CINTROL, 0x00); |
Deixi | 2:c3f9bdbbb062 | 73 | rtc_write(CONTROL1, 0x00); //start |
Deixi | 2:c3f9bdbbb062 | 74 | } |
Deixi | 2:c3f9bdbbb062 | 75 | |
Deixi | 2:c3f9bdbbb062 | 76 | void RTC8563::rtc_alarm() |
Deixi | 2:c3f9bdbbb062 | 77 | { |
Deixi | 2:c3f9bdbbb062 | 78 | // Formatierung |
Deixi | 2:c3f9bdbbb062 | 79 | // 2015/01/24 |
Deixi | 2:c3f9bdbbb062 | 80 | // 17:02:00 MON |
Deixi | 2:c3f9bdbbb062 | 81 | |
Deixi | 2:c3f9bdbbb062 | 82 | // week_val = 0x05; // SAT |
Deixi | 2:c3f9bdbbb062 | 83 | rtc_write(CONTROL1, 0x20); //stop |
Deixi | 2:c3f9bdbbb062 | 84 | rtc_write(CONTROL2, 0x02); // alarm AF alarm flag bit |
Deixi | 2:c3f9bdbbb062 | 85 | rtc_write(DAY_ALARM, (0x80) ); |
Deixi | 2:c3f9bdbbb062 | 86 | rtc_write(HOUR_ALARM, (0x97)); |
Deixi | 2:c3f9bdbbb062 | 87 | rtc_write(MINUTE_ALARM, (0x02)); |
Deixi | 2:c3f9bdbbb062 | 88 | rtc_write(WEEKDAY_ALARM, (0x80)); |
Deixi | 2:c3f9bdbbb062 | 89 | rtc_write(CONTROL1, 0x00); //start |
Deixi | 2:c3f9bdbbb062 | 90 | } |