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

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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      }