MANOJ NARAYANAN
/
RTC_Sample
The program sets the hr/min/sec and run continuously
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "mbed.h" 00002 00003 const int addr=0xD0; 00004 unsigned char var1,var2,var3,var4,var5,var6; 00005 int i; 00006 00007 Serial pc(USBTX, USBRX, "pc"); 00008 00009 I2C i2c(p28, p27); 00010 00011 void read_rtc_sec() 00012 { 00013 i2c.start(); 00014 i2c.write(0xD0); 00015 i2c.write(0x00); 00016 00017 i2c.start(); 00018 i2c.write(0xD1); 00019 var1=i2c.read(0x00); 00020 00021 var2=var1; 00022 var1=var1&0x0f; 00023 var2=var2>>4; 00024 i2c.stop(); 00025 00026 } 00027 00028 void read_rtc_min() 00029 { 00030 i2c.start(); 00031 i2c.write(0xD0); 00032 i2c.write(0x01); 00033 00034 i2c.start(); 00035 i2c.write(0xD1); 00036 var3=i2c.read(0x00); 00037 00038 var4=var3; 00039 var3=var3&0x0f; 00040 var4=var4>>4; 00041 00042 i2c.stop(); 00043 } 00044 00045 00046 void read_rtc_hrs() 00047 { 00048 i2c.start(); 00049 i2c.write(0xD0); 00050 i2c.write(0x02); 00051 00052 i2c.start(); 00053 i2c.write(0xD1); 00054 var5=i2c.read(0x00); 00055 00056 var6=var5; 00057 var5=var5&0x0f; 00058 var6=var6>>4; 00059 var6=var6&0x01; 00060 00061 i2c.stop(); 00062 } 00063 00064 void write_rtc_min(unsigned char mn) 00065 { 00066 i2c.start(); 00067 i2c.write(addr); 00068 i2c.write(0x01); 00069 i2c.write(mn); //write min 00070 i2c.stop(); 00071 00072 } 00073 00074 void write_rtc_sec(unsigned char sc) 00075 { 00076 i2c.start(); 00077 i2c.write(addr); 00078 i2c.write(0x00); 00079 i2c.write(sc); // write sec 00080 i2c.stop(); 00081 } 00082 00083 00084 void write_rtc_hrs(unsigned char hr) 00085 { 00086 i2c.start(); 00087 i2c.write(addr); 00088 i2c.write(0x02); 00089 i2c.write(hr); //write hrs 00090 i2c.stop(); 00091 00092 } 00093 00094 00095 int main() 00096 { 00097 00098 char sec=0x45; // second field value 00099 char min=0x59; // min field value 00100 char hrs=0x52; // hrs field value 00101 00102 00103 i2c.frequency(100000); 00104 i2c.start(); 00105 wait(1); 00106 00107 i2c.start(); 00108 write_rtc_min(min); 00109 write_rtc_sec(sec); 00110 write_rtc_hrs(hrs); 00111 00112 00113 00114 while(1) 00115 { 00116 read_rtc_hrs(); 00117 read_rtc_min(); 00118 read_rtc_sec(); 00119 00120 pc.printf("Current time = (%d%d:%d%d:%d%d)\n\r",var6,var5,var4,var3,var2,var1); 00121 00122 wait(1); 00123 00124 } 00125 00126 }
Generated on Tue Jul 12 2022 20:45:17 by 1.7.2