Motoo Tanaka / RTC8564

Dependents:   testRTC8564

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers RTC8564.h Source File

RTC8564.h

00001 #ifndef _RTC8564_H_
00002 #define _RTC8654_H_
00003 #include "mbed.h"
00004 /**
00005 * EPSON TOYOCOM Real Time Clock Module
00006 * RTC-8564JE/NB (ref: ETM11J-06)
00007 *
00008 * @code
00009 
00010 * @endcode
00011 */
00012 class RTC8564
00013 {
00014 public:
00015   /**
00016   * RTC8564 constructor
00017   *
00018   * @param sda SDA pin
00019   * @param sdl SCL pin
00020   * @param addr addr of the I2C peripheral
00021   */
00022   RTC8564(PinName sda, PinName scl, int addr);
00023 
00024   /**
00025   * RTC8564 destructor
00026   */
00027   ~RTC8564();
00028 
00029 /** 
00030  * setReg : set arbitrary register
00031  * @param addr register address
00032  * @param data value to assign
00033  * @returns none
00034  */
00035 void setReg(int addr, uint8_t data) ;
00036 
00037 /**
00038  * getReg : get arbitrary register value
00039  * @param addr register address
00040  * @returns uint8_t register value
00041  */
00042 uint8_t getReg(int addr) ;
00043 
00044 /**
00045  * setAll : set all registers at once
00046  * @param data 16 x uint8_t values 
00047  */
00048 void setAll(uint8_t data[]) ; 
00049 
00050 /**
00051  * getAll : get values of all registers
00052  * @param data 16 x uint8_t values to receive
00053  * @returns none
00054  */
00055 void getAll(uint8_t data[]) ; 
00056 
00057 /**
00058  * setControl1 : assign value to Control 1 register (0x00) 
00059  * @param data uint8_t value to assign
00060  * @note bit[5] is STOP_BIT 1: stop 0: start 
00061  * @note all other bits should be 0
00062  */
00063 void setControl1(uint8_t data) ;
00064 
00065 /**
00066  * getControl1 : get Control 1 register value
00067  * @param none
00068  * @returns uint8_t value of Control 1 register
00069  */
00070 uint8_t getControl1(void) ;
00071 
00072 /**
00073  * setControl2 : assign value to Control 2 register (0x01)
00074  * @param data uint8_t value to assign
00075  * @note bit[0]: TIE, bit[1]: AIE, bit[2]: TF, bit[3]: AF
00076  * @note bit[4]: TI/TP
00077  */
00078 void setControl2(uint8_t data) ;
00079 
00080 /**
00081  * getControl2 : get value of Control 2 register (0x01)
00082  * @param none
00083  * @returns uint8_t value of Control 1 register
00084  */
00085 uint8_t getControl2(void) ;
00086 
00087 /**
00088  * set seconds 
00089  * @param data uint8_t value to assign (0..59)
00090  */
00091 void setSeconds(uint8_t data) ;
00092 
00093 /**
00094  * get seconds
00095  * @param none
00096  * @returns uint8_t seconds (0..59)
00097  */
00098 uint8_t getSeconds(void) ;
00099 
00100 /**
00101  * set minutes
00102  * @param data uint8_t value to assign (0..59)
00103  */
00104 void setMinutes(uint8_t data) ;
00105 
00106 /**
00107  * get minutes
00108  * @param none
00109  * @returns uint8_t minutes (0..59)
00110  */
00111 uint8_t getMinutes(void) ;
00112 
00113 /**
00114  * set hours
00115  * @param data uint8_t value to assign (0..23)
00116  */
00117 void setHours(uint8_t data) ;
00118 
00119 /**
00120  * get hours
00121  * @param none
00122  * @returns uint8_t hours (0..23)
00123  */
00124 uint8_t getHours(void) ;
00125 
00126 /**
00127  * set days
00128  * @param data uint8_t value to assing (0..31)
00129  */
00130 void setDays(uint8_t data) ;
00131 
00132 /**
00133  * get days
00134  * @param none
00135  * @returns uint8_t days (0..31)
00136  */
00137 uint8_t getDays(void) ;
00138 
00139 /**
00140  * set day of week
00141  * @param data 
00142  * @note 0: Sunday, 1: Monday, 2: Tuesday,
00143  * @note 3: Wednesday, 4: Thursday, 5: Friday, 6: Saturday
00144  */
00145 void setWeekdays(uint8_t data) ;
00146 
00147 /**
00148  * get day of week
00149  * @param none
00150  * @returns uint8_t day of week
00151  */
00152 uint8_t getWeekdays(void) ;
00153 
00154 /**
00155  * set months
00156  * @param data value to assign (1..12)
00157  */
00158 void setMonths(uint8_t data) ;
00159 
00160 /**
00161  * get months
00162  * @param none
00163  * @returns uint8_t monts (1..12)
00164  */
00165 uint8_t getMonths(void) ;
00166 
00167 /**
00168  * set years
00169  * @param data lower 2 digits of the year.
00170  * @note Currently 20xx is assumed.
00171  */
00172 void setYears(uint8_t data) ;
00173 
00174 /**
00175  * get Years
00176  * @param none
00177  * @returns uint8_t years
00178  */
00179 uint8_t getYears(void) ;
00180 
00181 /**
00182  * set Minute Alarm
00183  * @param uint8_t data AE_BIT(0x80) is enable,
00184  * @note rest of 7bit is 3bit and 4bit BCD value (00..59)
00185  */
00186 void setMinuteAlarm(uint8_t data) ;
00187 
00188 /**
00189  * get Minute Alarm
00190  * @param none
00191  * @returns uint8_t Minute Alarm
00192  */
00193 uint8_t getMinuteAlarm(void) ;
00194 
00195 /**
00196  * set Hour Alarm
00197  * @param uint8_t data AE_BIT(0x80) is enable
00198  * @note rest of 6bit is 2bit and 4bit BCD value (00..23)
00199  */
00200 void setHourAlarm(uint8_t data) ;
00201 
00202 /**
00203  * get Hour Alarm
00204  * @param none
00205  * @returns Hour Alarm
00206  */
00207 uint8_t getHourAlarm(void) ;
00208 
00209 /**
00210  * set Day Alarm
00211  * @param uint8_t data AE_BIT(0x80) is enable
00212  * @note rest of 6bit is 2bit and 4bit BCD value (00..31)
00213  */
00214 void setDayAlarm(uint8_t data) ;
00215 
00216 /**
00217  * get Day Alarm
00218  * @param none
00219  * @returns uint8_t Day Alarm
00220  */
00221 uint8_t getDayAlarm(void) ;
00222 
00223 /**
00224  * set day of week alarm
00225  * @param uint8_t data AE_BIT(0x80) is enable
00226  * @note rest of 3bit is BCD value (0..6)
00227  */
00228 void setWeekdayAlarm(uint8_t data) ;
00229 
00230 /**
00231  * get day of week alarm
00232  * @param none
00233  * @returns day of week alarm
00234  */
00235 uint8_t getWeekdayAlarm(void) ;
00236 
00237 /**
00238  * set CLKOUT Frequency 
00239  * @param uint8_t data FE_BIT(0x80) is enable
00240  * @note bit[1] FD1, bit[0] FD0 to select FREQ.
00241  * @note CLKOUT outputs only when CLKOE pin is "H"
00242  * @note and FE_BIT is 1.
00243  * @note FD1=0, FD0=0 : 32768 Hz,
00244  * @note FD1=0, FD0=1 : 1024 Hz,
00245  * @note FD1=1, FD0=0 : 32 Hz
00246  * @note FD1=1, FD0=1 : 1 Hz
00247  * @note When STOP_BIT is high, only 32768 Hz will be output
00248  * @note and other freq clock will not be generated.
00249  */
00250 void setCLKOUTFrequency(uint8_t data) ;
00251 
00252 /**
00253  * get CLKOUT Frequency
00254  * @param none
00255  * @returns uint8_t CLKOUT Frequency
00256  * @note please refer to setCLKOUTFrequency comment
00257  * @note and Datasheet for details
00258  */
00259 uint8_t getCLKOUTFrequency(void) ;
00260 
00261 /**
00262  * set Timer Control
00263  * @param uint8_t data TE_BIT (0x80) is enable
00264  * @note bit[1] TD1, bit[0] TD0
00265  * @note please refer to the Datasheet for the details
00266  */
00267 void setTimerControl(uint8_t data) ;
00268 
00269 /**
00270  * get Timer Control
00271  * @pram none
00272  * @returns uint8_t Timer Control register value
00273  */
00274 uint8_t getTimerControl(void) ;
00275 
00276 /**
00277  * set Timer
00278  * @param uint8_t data preset value for the count down timer
00279  * @note please refer to the Datasheet for the details
00280  */
00281 void setTimer(uint8_t data) ;
00282 
00283 /**
00284  * get Timer
00285  * @param none
00286  * @returns uint8_t timer value
00287  */
00288 uint8_t getTimer(void) ;
00289 
00290 /**
00291  * stop RTC
00292  * @note assert the STOP_BIT of the control1 register
00293  */
00294 void stop(void) ;
00295 
00296 /**
00297  * start RTC
00298  * @note clear the STOP_BIT of the control1 register
00299  */
00300 void start(void) ;
00301 
00302 private:
00303   I2C m_i2c;
00304   int m_addr;
00305   void readRegs(int addr, uint8_t * data, int len);
00306   void writeRegs(uint8_t * data, int len);
00307 
00308 };
00309 
00310 
00311 #endif /* _RTC8564_H_ */