.

Dependencies:   mbed

Fork of rtc_func by HIMBED_3AHELI

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?

UserRevisionLine numberNew 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 }