RTC Sample program

Dependencies:   RTC-DS1307 mbed

Fork of Rtc_Ds1307_Sample by Henry Leinen

Committer:
manojn
Date:
Sun Jun 12 11:17:26 2016 +0000
Revision:
3:4bf56b558a71
Parent:
2:3be003301107
RTC DS 1307 sample program with red and write operations

Who changed what in which revision?

UserRevisionLine numberNew contents of line
leihen 0:431183c5b136 1 #include "mbed.h"
leihen 0:431183c5b136 2
manojn 3:4bf56b558a71 3 const int addr=0xD0;
manojn 3:4bf56b558a71 4 unsigned char var1,var2,var3,var4,var5,var6;
manojn 3:4bf56b558a71 5 int i;
leihen 0:431183c5b136 6
leihen 0:431183c5b136 7 Serial pc(USBTX, USBRX, "pc");
leihen 0:431183c5b136 8
manojn 3:4bf56b558a71 9 I2C i2c(p28, p27);
leihen 1:6dbe51fe0737 10
manojn 3:4bf56b558a71 11 void read_rtc_sec()
manojn 3:4bf56b558a71 12 {
manojn 3:4bf56b558a71 13 i2c.start();
manojn 3:4bf56b558a71 14 i2c.write(0xD0);
manojn 3:4bf56b558a71 15 i2c.write(0x00);
manojn 3:4bf56b558a71 16
manojn 3:4bf56b558a71 17 i2c.start();
manojn 3:4bf56b558a71 18 i2c.write(0xD1);
manojn 3:4bf56b558a71 19 var1=i2c.read(0x00);
manojn 3:4bf56b558a71 20
manojn 3:4bf56b558a71 21 var2=var1;
manojn 3:4bf56b558a71 22 var1=var1&0x0f;
manojn 3:4bf56b558a71 23 var2=var2>>4;
manojn 3:4bf56b558a71 24 i2c.stop();
manojn 3:4bf56b558a71 25
manojn 3:4bf56b558a71 26 }
manojn 3:4bf56b558a71 27
manojn 3:4bf56b558a71 28 void read_rtc_min()
manojn 3:4bf56b558a71 29 {
manojn 3:4bf56b558a71 30 i2c.start();
manojn 3:4bf56b558a71 31 i2c.write(0xD0);
manojn 3:4bf56b558a71 32 i2c.write(0x01);
manojn 3:4bf56b558a71 33
manojn 3:4bf56b558a71 34 i2c.start();
manojn 3:4bf56b558a71 35 i2c.write(0xD1);
manojn 3:4bf56b558a71 36 var3=i2c.read(0x00);
leihen 0:431183c5b136 37
manojn 3:4bf56b558a71 38 var4=var3;
manojn 3:4bf56b558a71 39 var3=var3&0x0f;
manojn 3:4bf56b558a71 40 var4=var4>>4;
manojn 3:4bf56b558a71 41
manojn 3:4bf56b558a71 42 i2c.stop();
manojn 3:4bf56b558a71 43 }
manojn 3:4bf56b558a71 44
manojn 3:4bf56b558a71 45
manojn 3:4bf56b558a71 46 void read_rtc_hrs()
manojn 3:4bf56b558a71 47 {
manojn 3:4bf56b558a71 48 i2c.start();
manojn 3:4bf56b558a71 49 i2c.write(0xD0);
manojn 3:4bf56b558a71 50 i2c.write(0x02);
leihen 0:431183c5b136 51
manojn 3:4bf56b558a71 52 i2c.start();
manojn 3:4bf56b558a71 53 i2c.write(0xD1);
manojn 3:4bf56b558a71 54 var5=i2c.read(0x00);
manojn 3:4bf56b558a71 55
manojn 3:4bf56b558a71 56 var6=var5;
manojn 3:4bf56b558a71 57 var5=var5&0x0f;
manojn 3:4bf56b558a71 58 var6=var6>>4;
manojn 3:4bf56b558a71 59 var6=var6&0x01;
manojn 3:4bf56b558a71 60
manojn 3:4bf56b558a71 61 i2c.stop();
leihen 0:431183c5b136 62 }
manojn 3:4bf56b558a71 63
manojn 3:4bf56b558a71 64 void write_rtc_min(unsigned char mn)
manojn 3:4bf56b558a71 65 {
manojn 3:4bf56b558a71 66 i2c.start();
manojn 3:4bf56b558a71 67 i2c.write(addr);
manojn 3:4bf56b558a71 68 i2c.write(0x01);
manojn 3:4bf56b558a71 69 i2c.write(mn); //write min
manojn 3:4bf56b558a71 70 i2c.stop();
manojn 3:4bf56b558a71 71
leihen 0:431183c5b136 72 }
manojn 3:4bf56b558a71 73
manojn 3:4bf56b558a71 74 void write_rtc_sec(unsigned char sc)
manojn 3:4bf56b558a71 75 {
manojn 3:4bf56b558a71 76 i2c.start();
manojn 3:4bf56b558a71 77 i2c.write(addr);
manojn 3:4bf56b558a71 78 i2c.write(0x00);
manojn 3:4bf56b558a71 79 i2c.write(sc); // write sec
manojn 3:4bf56b558a71 80 i2c.stop();
manojn 3:4bf56b558a71 81 }
manojn 3:4bf56b558a71 82
manojn 3:4bf56b558a71 83
manojn 3:4bf56b558a71 84 void write_rtc_hrs(unsigned char hr)
manojn 3:4bf56b558a71 85 {
manojn 3:4bf56b558a71 86 i2c.start();
manojn 3:4bf56b558a71 87 i2c.write(addr);
manojn 3:4bf56b558a71 88 i2c.write(0x02);
manojn 3:4bf56b558a71 89 i2c.write(hr); //write hrs
manojn 3:4bf56b558a71 90 i2c.stop();
manojn 3:4bf56b558a71 91
manojn 3:4bf56b558a71 92 }
manojn 3:4bf56b558a71 93
manojn 3:4bf56b558a71 94
manojn 3:4bf56b558a71 95 int main()
manojn 3:4bf56b558a71 96 {
manojn 3:4bf56b558a71 97
manojn 3:4bf56b558a71 98 char sec=0x45; // second field value
manojn 3:4bf56b558a71 99 char min=0x59; // min field value
manojn 3:4bf56b558a71 100 char hrs=0x52; // hrs field value
manojn 3:4bf56b558a71 101
manojn 3:4bf56b558a71 102
manojn 3:4bf56b558a71 103 i2c.frequency(100000);
manojn 3:4bf56b558a71 104 i2c.start();
manojn 3:4bf56b558a71 105 wait(1);
manojn 3:4bf56b558a71 106
manojn 3:4bf56b558a71 107 i2c.start();
manojn 3:4bf56b558a71 108 write_rtc_min(min);
manojn 3:4bf56b558a71 109 write_rtc_sec(sec);
manojn 3:4bf56b558a71 110 write_rtc_hrs(hrs);
manojn 3:4bf56b558a71 111
manojn 3:4bf56b558a71 112
manojn 3:4bf56b558a71 113
manojn 3:4bf56b558a71 114 while(1)
manojn 3:4bf56b558a71 115 {
manojn 3:4bf56b558a71 116 read_rtc_hrs();
manojn 3:4bf56b558a71 117 read_rtc_min();
manojn 3:4bf56b558a71 118 read_rtc_sec();
manojn 3:4bf56b558a71 119
manojn 3:4bf56b558a71 120 pc.printf("Current time = (%d%d:%d%d:%d%d)\n\r",var6,var5,var4,var3,var2,var1);
manojn 3:4bf56b558a71 121
manojn 3:4bf56b558a71 122 wait(1);
manojn 3:4bf56b558a71 123
manojn 3:4bf56b558a71 124 }
manojn 3:4bf56b558a71 125
manojn 3:4bf56b558a71 126 }