MAXIM DS3231 accurate Real Time Clock Library

Dependents:   20180621_FT813

Fork of DS3231 by remi cormier

Revision:
3:1af2ff7cfe26
Parent:
2:6718c4fabf95
--- a/DS3231.cpp	Sat Dec 22 19:58:42 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,138 +0,0 @@
-#include "DS3231.h"
-
-DS3231::DS3231(PinName sda, PinName scl) : i2c(sda, scl)
-    {
-    } 
-    
-    
-// BCD to decimal conversion    
-int DS3231::bcd2dec(int k)
-    {return(((k&0xF0)>>4)*10+(k&0x0F));}
-    
-    
-// decimal to BCD conversion    
-int DS3231::dec2bcd(int k)
-    {return((k/10)*16+(k%10));}      
-    
-void DS3231::setI2Cfrequency(int frequency)
-    {i2c.frequency(frequency);
-    }
-    
-// read temperature from DS3231    
-float DS3231::readTemp()
-    {char buf[2];
-     buf[0]=DS3231_MSB_Temp;
-     int w=i2c.write(DS3231_Address,buf,1);
-     int r=i2c.read(DS3231_Address,buf,2);
-     error=((w!=0)||(r!=0));   
-     return(buf[0]+buf[1]/256.0);}  
-
-// force temperatue conversion     
-void DS3231::convertTemperature()
-    {int Control=readRegister(DS3231_Control)|DS3231_bit_CONV;
-     writeRegister(DS3231_Control,Control);
-    }
-
-// decode time registers     
-void DS3231::decodeTime(int regHours, int regMinutes, int regSeconds,int *Hours, int *Minutes, int *Seconds)
-    {*Hours=bcd2dec(regHours);
-     *Minutes=bcd2dec(regMinutes);
-     *Seconds=bcd2dec(regSeconds);
-    }      
-     
-     
-// read time registers dand decode them to decimal     
-void DS3231::readTime(int *hours, int *minutes, int *seconds)
-    {char buf[3];
-     buf[0]=DS3231_Seconds;
-     int w=i2c.write(DS3231_Address,buf,1);
-     int r=i2c.read(DS3231_Address,buf,3);
-     decodeTime(buf[2],buf[1],buf[0],hours,minutes,seconds);    
-     error=((w!=0)||(r!=0));
-    }  
-    
-// set time register    
-void DS3231::setTime(int hours, int minutes, int seconds)
-    {writeRegister(DS3231_Seconds,dec2bcd(seconds));
-     writeRegister(DS3231_Minutes,dec2bcd(minutes));
-     writeRegister(DS3231_Hours,dec2bcd(hours));
-    }    
-    
-// decode date registers
-void DS3231::decodeDate(int regDate,int regMonth, int regYear, int *date, int *month, int *year)
-    {*date=bcd2dec(regDate);
-     int century=regMonth&128;
-     *month=bcd2dec(regMonth&127);
-     *year=bcd2dec(regYear);
-     if (century==0)         // only XXth and XXIst centuries allowed
-        {*year=*year+1900;}
-     else
-        {*year=*year+2000;}
-    }         
-    
-// read date registers    
-void DS3231::readDate(int *date, int *month, int *year)
-    {char buf[3];
-     buf[0]=DS3231_Date;
-     int w=i2c.write(DS3231_Address,buf,1);
-     int r=i2c.read(DS3231_Address,buf,3);
-     decodeDate(buf[0],buf[1],buf[2],date,month,year);            
-     error=((w!=0)||(r!=0));         
-    }     
-    
-// set the date registers
-void DS3231::setDate(int dayOfWeek, int date, int month, int year)
-    {writeRegister(DS3231_Date,dec2bcd(date));
-     writeRegister(DS3231_Day,dayOfWeek);
-     int century=0; // only XXth and XXIst centuries allowed
-     if (year<1900){year=1900;}
-     if (year>2099){year=2099;}
-     if (year<2000)
-        {year=year-1900;}
-     else
-        {year=year-2000;century=1;}   
-     writeRegister(DS3231_Month_Century,dec2bcd(month)+128*century);   
-     writeRegister(DS3231_Year,dec2bcd(year));
-    }     
-    
-// read date and time registers    
-void DS3231::readDateTime(int *dayOfWeek, int *date, int *month, int *year, int *hours, int *minutes, int *seconds)
-    {char buf[7];
-     buf[0]=DS3231_Seconds;
-     int w=i2c.write(DS3231_Address,buf,1);
-     int r=i2c.read(DS3231_Address,buf,7);
-     decodeTime(buf[2],buf[1],buf[0],hours,minutes,seconds);
-     *dayOfWeek=buf[3];
-     decodeDate(buf[4],buf[5],buf[6],date,month,year);
-     error=((w!=0)||(r!=0));     
-    }    
-    
-// read a register    
-int DS3231::readRegister(char reg)
-    {char buf[1];
-     buf[0]=reg;
-     int w=i2c.write(DS3231_Address,buf,1);
-     int r=i2c.read(DS3231_Address,buf,1);
-     error=((w!=0)||(r!=0));  
-     return(buf[0]);
-    }   
-
-// write a register    
-void DS3231::writeRegister(int reg,char byte)
-    {char buf[2];
-     buf[0]=reg;
-     buf[1]=byte;
-     int w=i2c.write(DS3231_Address,buf,2); 
-     error=(w!=0);   
-    }      
-    
-void DS3231::eraseOSF()
-    {int reg=readRegister(DS3231_Control_Status);
-     reg=reg&0x7F;
-     writeRegister(DS3231_Control_Status,reg);
-    }     
-    
-bool DS3231::OSF()
-    {int reg=readRegister(DS3231_Control_Status);
-    return(reg&DS3231_bit_OSF);
-    }
\ No newline at end of file