The program sets the hr/min/sec and run continuously

Dependencies:   mbed

Committer:
manojn
Date:
Sun Jun 12 11:39:22 2016 +0000
Revision:
0:fca1e63ed338
RTC DS1307 Sample program

Who changed what in which revision?

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