Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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_ */
Generated on Wed Aug 10 2022 01:48:37 by
