Kuldip Maharjan
/
time_value_RTC
This code reads time value from external RTC using I2C protocol
main.cpp@0:c9c5aaba2891, 2014-01-08 (annotated)
- 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?
User | Revision | Line number | New 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 | } |