MANOJ NARAYANAN
/
RTC_MN
RTC Sample program
Fork of Rtc_Ds1307_Sample by
main.cpp@3:4bf56b558a71, 2016-06-12 (annotated)
- 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?
User | Revision | Line number | New 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 | } |