This code reads time value from external RTC using I2C protocol

Dependencies:   mbed

Committer:
kuldipmaharjan
Date:
Wed Jan 08 00:31:09 2014 +0000
Revision:
0:c9c5aaba2891
This code reads time value from external RTC using I2C protocol

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kuldipmaharjan 0:c9c5aaba2891 1 //Author: Kuldip Maharjan
kuldipmaharjan 0:c9c5aaba2891 2 //Email : kuldipmaharjan@gmail.com
kuldipmaharjan 0:c9c5aaba2891 3 //Anyone can use this code if it helps in their projects or
kuldipmaharjan 0:c9c5aaba2891 4 //for learning programing in mbed besides for commercial purposes
kuldipmaharjan 0:c9c5aaba2891 5
kuldipmaharjan 0:c9c5aaba2891 6 //This code reads time value from external RTC using I2C protocol
kuldipmaharjan 0:c9c5aaba2891 7
kuldipmaharjan 0:c9c5aaba2891 8 #include "mbed.h"
kuldipmaharjan 0:c9c5aaba2891 9 I2C i2c( p28, p27 ); // sda, scl
kuldipmaharjan 0:c9c5aaba2891 10 Serial pc(USBTX, USBRX); // tx, rx
kuldipmaharjan 0:c9c5aaba2891 11
kuldipmaharjan 0:c9c5aaba2891 12 int main() {
kuldipmaharjan 0:c9c5aaba2891 13 char v[10];
kuldipmaharjan 0:c9c5aaba2891 14 char cmd[1];
kuldipmaharjan 0:c9c5aaba2891 15 char data[10];
kuldipmaharjan 0:c9c5aaba2891 16 char data2[2];
kuldipmaharjan 0:c9c5aaba2891 17 pc.baud(115200);
kuldipmaharjan 0:c9c5aaba2891 18 i2c.frequency(100000);
kuldipmaharjan 0:c9c5aaba2891 19
kuldipmaharjan 0:c9c5aaba2891 20 cmd[0] = 0x00;
kuldipmaharjan 0:c9c5aaba2891 21 // cmd[1] = 0x05;
kuldipmaharjan 0:c9c5aaba2891 22 //set the min data[0] =0, data[1] = 1
kuldipmaharjan 0:c9c5aaba2891 23 //set the hr data[0] =1, data[1] = 1
kuldipmaharjan 0:c9c5aaba2891 24 //
kuldipmaharjan 0:c9c5aaba2891 25 /*
kuldipmaharjan 0:c9c5aaba2891 26 data[0] = 0x0; // MSB address
kuldipmaharjan 0:c9c5aaba2891 27 data[1] = 0x00; // sec
kuldipmaharjan 0:c9c5aaba2891 28 data[2] = 0x19; // min
kuldipmaharjan 0:c9c5aaba2891 29 data[3] = 0x14; // hr
kuldipmaharjan 0:c9c5aaba2891 30 data[4] = 0x06; // day
kuldipmaharjan 0:c9c5aaba2891 31 data[5] = 0x07; // date
kuldipmaharjan 0:c9c5aaba2891 32 data[6] = 0x12; // month
kuldipmaharjan 0:c9c5aaba2891 33 data[7] = 0x12; // year
kuldipmaharjan 0:c9c5aaba2891 34
kuldipmaharjan 0:c9c5aaba2891 35 if(i2c.write(0xD0, data, 8)) {
kuldipmaharjan 0:c9c5aaba2891 36 error("Write failed\n");
kuldipmaharjan 0:c9c5aaba2891 37 }
kuldipmaharjan 0:c9c5aaba2891 38 while(i2c.write(0xD0, NULL, 0)); // wait to complete
kuldipmaharjan 0:c9c5aaba2891 39
kuldipmaharjan 0:c9c5aaba2891 40 */
kuldipmaharjan 0:c9c5aaba2891 41
kuldipmaharjan 0:c9c5aaba2891 42 while(1) {
kuldipmaharjan 0:c9c5aaba2891 43
kuldipmaharjan 0:c9c5aaba2891 44 i2c.write( 0xD0, cmd , 1 );
kuldipmaharjan 0:c9c5aaba2891 45
kuldipmaharjan 0:c9c5aaba2891 46 i2c.read( 0xD0, v , 7 );
kuldipmaharjan 0:c9c5aaba2891 47
kuldipmaharjan 0:c9c5aaba2891 48 wait(1);
kuldipmaharjan 0:c9c5aaba2891 49 pc.printf("\n\r %d%d sec %d%d min",v[0]>>4, v[0]&0x0F,v[1]>>4, v[1]&0x0F);
kuldipmaharjan 0:c9c5aaba2891 50 pc.printf("\n\r %d%d hr %d day",(v[2]>>4), v[2]&0x0F, v[3]&0x07);
kuldipmaharjan 0:c9c5aaba2891 51 pc.printf("\n\r %d%d date %d%d month %d%d year",v[4]>>4, v[4]&0x0F,v[5]>>4, v[5]&0x0F,v[6]>>4,v[6]&0x0F);
kuldipmaharjan 0:c9c5aaba2891 52
kuldipmaharjan 0:c9c5aaba2891 53 //pc.printf("\r %d/%d/%d %d day %d hrs %d min %d sec\n", v[5]+6,v[4]+2,v[6]+2012,v[3],v[2],v[1],v[0]);
kuldipmaharjan 0:c9c5aaba2891 54 //pc.printf("v[1] = %d \t ", v[1]);
kuldipmaharjan 0:c9c5aaba2891 55
kuldipmaharjan 0:c9c5aaba2891 56 }
kuldipmaharjan 0:c9c5aaba2891 57 }