Update

Dependents:   16A_Autopancakemaker

ds1307.h

Committer:
pruek
Date:
2015-12-12
Revision:
0:9570e313fcba

File content as of revision 0:9570e313fcba:

#ifndef DS1307_H
#define DS1307_H
#include "mbed.h"
 
#define DS1307_addr 0xD0    // this is fixed by Dallas
#define DS1307_freq 100000  // this is the Dallas spec for operating i2c for this device
#define DS1307_sec 0x00     // seconds
#define DS1307_min  0x01    // min
#define DS1307_hour 0x02    // hours
#define DS1307_day  0x03    // day
#define DS1307_date 0x04    // date
#define DS1307_month 0x05   // month
#define DS1307_year 0x06    // year
#define DS1307_sqrout 0x07  // square output register
#define DS1307_ramstart 0x08    // register address that ram starts at
#define DS1307_lastreg 0x3F // this is the last register in the device (note also this register is used to address everything so it gets clobbered)
#define DS1307_lastram 0x3E // last usable ram by this class as the lastreg is clobbered by code for normal operation
 class DS1307 {
public:
DS1307( PinName sda, PinName slc) ;                 // constructor
 
    ~DS1307();                                          // destructor
  int read( int addr, int quantity, char *data);      // to read some of the 63 bytes from DS1307
 int read(int addr, int *data);
 int write( int addr, int quantity, char *data); 
 int write( int addr, int data );                    // to write one byte only
 int start_clock(void);    
  int stop_clock(void);                               // stop clock
 int twelve_hour(void);    
 int twentyfour_hour(void);   
 int settime(int sec, int min, int hour, int day, int date, int month, int year); 
 int gettime(int *sec, int *min, int *hour, int *day, int *date, int *month, int *year);  // to get the current time information
 
 
protected:
    I2C ds1307i2c;
    int dectobcd( int );
    int bcdtodec( int );
    int hilow_check( int, int, int);
 
};
 
#endif