8#ifndef ARDUINO_RTC_DRIVER_NXP_ARD_H
9#define ARDUINO_RTC_DRIVER_NXP_ARD_H
15#include <I2C_device.h>
59 time_t
time( time_t* tp );
65 virtual void set(
struct tm* now_tm ) = 0;
117 static uint8_t
bcd2dec( uint8_t v );
124 static uint8_t
dec2bcd( uint8_t v );
141 Control_1, Control_2, Control_3, Control_4, Control_5,
143 _100th_Seconds, Seconds, Minutes,Hours, Days, Weekdays, Months, Years,
144 Second_alarm, Minute_alarm, Hour_alarm, Day_alarm, Weekday_alarm,
146 Timestp_ctl1, Sec_timestp1, Min_timestp1, Hour_timestp1, Day_timestp1, Mon_timestp1, Year_timestp1,
147 Timestp_ctl2, Sec_timestp2, Min_timestp2, Hour_timestp2, Day_timestp2, Mon_timestp2, Year_timestp2,
148 Timestp_ctl3, Sec_timestp3, Min_timestp3, Hour_timestp3, Day_timestp3, Mon_timestp3, Year_timestp3,
149 Timestp_ctl4, Sec_timestp4, Min_timestp4, Hour_timestp4, Day_timestp4, Mon_timestp4, Year_timestp4,
151 INT_A_MASK1, INT_A_MASK2, INT_B_MASK1, INT_B_MASK2,
152 Watchdg_tim_ctl, Watchdg_tim_val
207 void set(
struct tm* now_tm );
290 virtual void _reg_w( uint8_t reg, uint8_t *vp,
int len ) = 0;
293 virtual void _reg_r( uint8_t reg, uint8_t *vp,
int len ) = 0;
296 virtual void _reg_w( uint8_t reg, uint8_t val ) = 0;
299 virtual uint8_t
_reg_r( uint8_t reg ) = 0;
302 virtual void _bit_op8( uint8_t reg, uint8_t mask, uint8_t val ) = 0;
305 const int int_mask_reg[ 2 ][ 2 ] = {
306 { INT_A_MASK1, INT_A_MASK2, },
307 { INT_B_MASK1, INT_B_MASK2, },
333 PCF2131_I2C( TwoWire& wire, uint8_t i2c_address = (0xA6 >> 1) );
341 Control_1, Control_2, Control_3, Control_4, Control_5,
343 _100th_Seconds, Seconds, Minutes,Hours, Days, Weekdays, Months, Years,
344 Second_alarm, Minute_alarm, Hour_alarm, Day_alarm, Weekday_alarm,
346 Timestp_ctl1, Sec_timestp1, Min_timestp1, Hour_timestp1, Day_timestp1, Mon_timestp1, Year_timestp1,
347 Timestp_ctl2, Sec_timestp2, Min_timestp2, Hour_timestp2, Day_timestp2, Mon_timestp2, Year_timestp2,
348 Timestp_ctl3, Sec_timestp3, Min_timestp3, Hour_timestp3, Day_timestp3, Mon_timestp3, Year_timestp3,
349 Timestp_ctl4, Sec_timestp4, Min_timestp4, Hour_timestp4, Day_timestp4, Mon_timestp4, Year_timestp4,
351 INT_A_MASK1, INT_A_MASK2, INT_B_MASK1, INT_B_MASK2,
352 Watchdg_tim_ctl, Watchdg_tim_val
409 void set(
struct tm* now_tm );
492 void reg_w( uint8_t reg_adr, uint8_t *data,
int size );
499 void reg_w( uint8_t reg_adr, uint8_t data );
507 void reg_r( uint8_t reg_adr, uint8_t *data,
int size );
538 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
544 void _reg_w( uint8_t reg, uint8_t *vp,
int len );
547 void _reg_r( uint8_t reg, uint8_t *vp,
int len );
550 void _reg_w( uint8_t reg, uint8_t val );
553 uint8_t _reg_r( uint8_t reg );
556 void _bit_op8( uint8_t reg, uint8_t mask, uint8_t val );
575 void txrx( uint8_t *data,
int size );
583 void reg_w( uint8_t reg_adr, uint8_t *data,
int size );
590 void reg_w( uint8_t reg_adr, uint8_t data );
598 void reg_r( uint8_t reg_adr, uint8_t *data,
int size );
605 uint8_t
reg_r( uint8_t reg_adr );
612 void write_r8( uint8_t reg, uint8_t val );
619 uint8_t
read_r8( uint8_t reg );
629 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
651 Control_1, Control_2, Control_3, Control_4, Control_5,
653 _100th_Seconds, Seconds, Minutes,Hours, Days, Weekdays, Months, Years,
654 Second_alarm, Minute_alarm, Hour_alarm, Day_alarm, Weekday_alarm,
656 Timestp_ctl1, Sec_timestp1, Min_timestp1, Hour_timestp1, Day_timestp1, Mon_timestp1, Year_timestp1,
657 Timestp_ctl2, Sec_timestp2, Min_timestp2, Hour_timestp2, Day_timestp2, Mon_timestp2, Year_timestp2,
658 Timestp_ctl3, Sec_timestp3, Min_timestp3, Hour_timestp3, Day_timestp3, Mon_timestp3, Year_timestp3,
659 Timestp_ctl4, Sec_timestp4, Min_timestp4, Hour_timestp4, Day_timestp4, Mon_timestp4, Year_timestp4,
661 INT_A_MASK1, INT_A_MASK2, INT_B_MASK1, INT_B_MASK2,
662 Watchdg_tim_ctl, Watchdg_tim_val
719 void set(
struct tm* now_tm );
802 void _reg_w( uint8_t reg, uint8_t *vp,
int len );
805 void _reg_r( uint8_t reg, uint8_t *vp,
int len );
808 void _reg_w( uint8_t reg, uint8_t val );
811 uint8_t _reg_r( uint8_t reg );
814 void _bit_op8( uint8_t reg, uint8_t mask, uint8_t val );
829 Control_1, Control_2,
832 Seconds, Minutes, Hours, Days, Weekdays, Months, Years,
833 Second_alarm, Minute_alarm, Hour_alarm, Day_alarm, Weekday_alarm,
834 Timer_value, Timer_mode
852 void set(
struct tm* now_tm );
886 float timer(
float period,
bool pulse =
false );
907 virtual void _reg_w( uint8_t reg, uint8_t *vp,
int len ) = 0;
910 virtual void _reg_r( uint8_t reg, uint8_t *vp,
int len ) = 0;
913 virtual void _reg_w( uint8_t reg, uint8_t val ) = 0;
916 virtual uint8_t
_reg_r( uint8_t reg ) = 0;
919 virtual void _bit_op8( uint8_t reg, uint8_t mask, uint8_t val ) = 0;
929 PCF85063A( uint8_t i2c_address = (0xA2 >> 1) );
936 PCF85063A( TwoWire& wire, uint8_t i2c_address = (0xA2 >> 1) );
944 Control_1, Control_2,
947 Seconds, Minutes, Hours, Days, Weekdays, Months, Years,
948 Second_alarm, Minute_alarm, Hour_alarm, Day_alarm, Weekday_alarm,
949 Timer_value, Timer_mode
970 void set(
struct tm* now_tm );
1004 float timer(
float period,
bool pulse =
false );
1019 void reg_w( uint8_t reg_adr, uint8_t *data,
int size );
1026 void reg_w( uint8_t reg_adr, uint8_t data );
1034 void reg_r( uint8_t reg_adr, uint8_t *data,
int size );
1065 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
1071 void _reg_w( uint8_t reg, uint8_t *vp,
int len );
1074 void _reg_r( uint8_t reg, uint8_t *vp,
int len );
1077 void _reg_w( uint8_t reg, uint8_t val );
1080 uint8_t _reg_r( uint8_t reg );
1083 void _bit_op8( uint8_t reg, uint8_t mask, uint8_t val );
1093 PCF85063TP( uint8_t i2c_address = (0xA2 >> 1) );
1100 PCF85063TP( TwoWire& wire, uint8_t i2c_address = (0xA2 >> 1) );
1108 Control_1, Control_2,
1111 Seconds, Minutes, Hours, Days, Weekdays, Months, Years,
1131 void set(
struct tm* now_tm );
1145 void reg_w( uint8_t reg_adr, uint8_t *data,
int size );
1152 void reg_w( uint8_t reg_adr, uint8_t data );
1160 void reg_r( uint8_t reg_adr, uint8_t *data,
int size );
1191 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
1202 _100th_seconds, Seconds, Minutes, Hours, Days, Weekdays, Months, Years,
1203 Second_alarm1, Minute_alarm1, Hour_alarm1, Day_alarm1, Month_alarm1,
1204 Minute_alarm2, Hour_alarm2, Weekday_alarm2,
1206 TSR1_seconds, TSR1_minutes, TSR1_hours, TSR1_days, TSR1_months, TSR1_years,
1207 TSR2_seconds, TSR2_minutes, TSR2_hours, TSR2_days, TSR2_months, TSR2_years,
1208 TSR3_seconds, TSR3_minutes, TSR3_hours, TSR3_days, TSR3_months, TSR3_years,
1210 Offset, Oscillator, Battery_switch, Pin_IO, Function,
1211 INTA_enable, INTB_enable, Flags,
1212 RAM_byte, WatchDog, Stop_enable, Resets,
1214 Hours_xx_xx_00 = 0x03, Hours_xx_00_xx, Hours_00_xx_xx, Reserved0, Reserved1,
1215 Second_alm1, Minute_alm1, Hr_xx_xx_00_alm1, Hr_xx_00_xx_alm1, Hr_00_xx_xx_alm1,
1216 Minute_alm2, Hr_xx_00_alm2, Hr_00_xx_alm2,
1217 TSR1_hr_xx_xx_00 = 0x13, TSR1_hr_xx_00_xx, TSR1_hr_00_xx_xx, Reserved2,
1218 TSR2_hr_xx_xx_00 = 0x19, TSR2_hr_xx_00_xx, TSR2_hr_00_xx_xx, Reserved3,
1219 TSR3_hr_xx_xx_00 = 0x1F, TSR3_hr_xx_00_xx, TSR3_hr_00_xx_xx, Reserved4,
1244 INTA_BATTERY_MODE_INDICATION,
1259 TS_PULLUP_80K = 0x00,
1260 TS_PULLUP_40K = 0x40,
1261 TSL_ACTIVE_HIGH = 0x00,
1262 TSL_ACTIVE_LOW = 0x20,
1264 TSIM_MECHANICAL = 0x10,
1271 PCF85263A( uint8_t i2c_address = (0xA2 >> 1) );
1278 PCF85263A( TwoWire& wire, uint8_t i2c_address = (0xA2 >> 1) );
1292 void set(
struct tm* now_tm );
1395 void reg_w( uint8_t reg_adr, uint8_t *data,
int size );
1402 void reg_w( uint8_t reg_adr, uint8_t data );
1410 void reg_r( uint8_t reg_adr, uint8_t *data,
int size );
1441 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
1446 void set_alarm(
int digit,
int val,
int int_sel );
1454 Seconds, Seconds_alarm, Minutes, Minutes_alarm, Hours, Hours_alarm,
1455 Day_of_the_Week, Day_of_the_Month, Month, Year,
1456 Control_Register, Status_Register,
1458 _2nd_Control_Register,
1459 Scratchpad, Version_Register,
1460 Vendor_ID_Register, Model_Register,
1463 Sec_timestp, Min_timestp, Hour_timestp, DayWk_timestp, DayMon_timestp, Mon_timestp, Year_timestp,
1471 PCF85053A( uint8_t i2c_address = (0xDE >> 1) );
1478 PCF85053A( TwoWire& wire, uint8_t i2c_address = (0xDE >> 1) );
1492 void set(
struct tm* now_tm );
1553 void reg_w( uint8_t reg_adr, uint8_t *data,
int size );
1560 void reg_w( uint8_t reg_adr, uint8_t data );
1568 void reg_r( uint8_t reg_adr, uint8_t *data,
int size );
1599 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
1605 static int alarm_offsets[ 3 ];
1626 void set(
struct tm* now_tm );
1669 void reg_w( uint8_t reg_adr, uint8_t *data,
int size );
1676 void reg_w( uint8_t reg_adr, uint8_t data );
1684 void reg_r( uint8_t reg_adr, uint8_t *data,
int size );
1715 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
void alarm(alarm_setting digit, int val)
void reg_w(uint8_t reg_adr, uint8_t data)
uint8_t reg_r(uint8_t reg_adr)
virtual ~ForFutureExtention()
void reg_w(uint8_t reg_adr, uint8_t *data, int size)
bool oscillator_stop(void)
void bit_op8(uint8_t reg, uint8_t mask, uint8_t value)
void reg_r(uint8_t reg_adr, uint8_t *data, int size)
void write_r8(uint8_t reg, uint8_t val)
void set(struct tm *now_tm)
uint8_t read_r8(uint8_t reg)
void bit_op8(uint8_t reg, uint8_t mask, uint8_t value)
void write_r8(uint8_t reg, uint8_t val)
void set(struct tm *now_tm)
uint8_t int_clear(uint8_t *state_p)
float set_clock_offset(float ratio)
bool oscillator_stop(void)
void periodic_interrupt_enable(periodic_int_select sel, int int_sel=0)
void alarm(alarm_setting digit, int val)
void alarm(alarm_setting digit, int val, int int_sel)
void reg_w(uint8_t reg_adr, uint8_t data)
uint8_t read_r8(uint8_t reg)
void set_clock_out(clock_out_frequency freq)
void timestamp(int num, timestamp_setting ts_setting, int int_sel=0)
PCF2131_I2C(uint8_t i2c_address=(0xA6 > > 1))
time_t timestamp(int num)
uint8_t reg_r(uint8_t reg_adr)
void reg_r(uint8_t reg_adr, uint8_t *data, int size)
void reg_w(uint8_t reg_adr, uint8_t *data, int size)
void timestamp(int num, timestamp_setting ts_setting, int int_sel=0)
void alarm(alarm_setting digit, int val)
time_t timestamp(int num)
uint8_t int_clear(uint8_t *state_p)
void set_clock_out(clock_out_frequency freq)
void alarm(alarm_setting digit, int val, int int_sel)
float set_clock_offset(float ratio)
bool oscillator_stop(void)
void periodic_interrupt_enable(periodic_int_select sel, int int_sel=0)
void set(struct tm *now_tm)
virtual uint8_t _reg_r(uint8_t reg)=0
void set(struct tm *now_tm)
void set_clock_out(clock_out_frequency freq)
void timestamp(int num, timestamp_setting ts_setting, int int_sel=0)
float set_clock_offset(float ratio)
void periodic_interrupt_enable(periodic_int_select sel, int int_sel=0)
bool oscillator_stop(void)
void alarm(alarm_setting digit, int val)
virtual void _reg_r(uint8_t reg, uint8_t *vp, int len)=0
virtual void _bit_op8(uint8_t reg, uint8_t mask, uint8_t val)=0
virtual void _reg_w(uint8_t reg, uint8_t val)=0
virtual void _reg_w(uint8_t reg, uint8_t *vp, int len)=0
void write_r8(uint8_t reg, uint8_t val)
uint8_t reg_r(uint8_t reg_adr)
void reg_w(uint8_t reg_adr, uint8_t *data, int size)
void bit_op8(uint8_t reg, uint8_t mask, uint8_t value)
bool oscillator_stop(void)
void reg_r(uint8_t reg_adr, uint8_t *data, int size)
PCF85053A(uint8_t i2c_address=(0xDE > > 1))
uint8_t read_r8(uint8_t reg)
void reg_w(uint8_t reg_adr, uint8_t data)
float set_clock_offset(float ratio)
void alarm(alarm_setting digit, int val)
void set(struct tm *now_tm)
void set(struct tm *now_tm)
virtual void _bit_op8(uint8_t reg, uint8_t mask, uint8_t val)=0
bool oscillator_stop(void)
void alarm(alarm_setting digit, int val)
virtual void _reg_w(uint8_t reg, uint8_t val)=0
virtual void _reg_w(uint8_t reg, uint8_t *vp, int len)=0
virtual uint8_t _reg_r(uint8_t reg)=0
virtual void _reg_r(uint8_t reg, uint8_t *vp, int len)=0
float timer(float period, bool pulse=false)
float set_clock_offset(float ratio)
float timer(float period, bool pulse=false)
void alarm(alarm_setting digit, int val)
uint8_t read_r8(uint8_t reg)
void reg_r(uint8_t reg_adr, uint8_t *data, int size)
uint8_t reg_r(uint8_t reg_adr)
float set_clock_offset(float ratio)
PCF85063A(uint8_t i2c_address=(0xA2 > > 1))
void set(struct tm *now_tm)
void reg_w(uint8_t reg_adr, uint8_t data)
bool oscillator_stop(void)
void reg_w(uint8_t reg_adr, uint8_t *data, int size)
void bit_op8(uint8_t reg, uint8_t mask, uint8_t value)
void write_r8(uint8_t reg, uint8_t val)
void reg_w(uint8_t reg_adr, uint8_t *data, int size)
void write_r8(uint8_t reg, uint8_t val)
uint8_t reg_r(uint8_t reg_adr)
void bit_op8(uint8_t reg, uint8_t mask, uint8_t value)
uint8_t read_r8(uint8_t reg)
PCF85063TP(uint8_t i2c_address=(0xA2 > > 1))
void set(struct tm *now_tm)
void reg_r(uint8_t reg_adr, uint8_t *data, int size)
void reg_w(uint8_t reg_adr, uint8_t data)
bool oscillator_stop(void)
void alarm(alarm_setting digit, int val)
void periodic_interrupt_enable(periodic_int_select sel, int int_sel=0)
uint8_t reg_r(uint8_t reg_adr)
time_t timestamp(int num)
void ts_config(int setting)
uint8_t read_r8(uint8_t reg)
void reg_w(uint8_t reg_adr, uint8_t data)
void reg_r(uint8_t reg_adr, uint8_t *data, int size)
bool oscillator_stop(void)
void bit_op8(uint8_t reg, uint8_t mask, uint8_t value)
PCF85263A(uint8_t i2c_address=(0xA2 > > 1))
void pin_config(inta cfg_a, intb cfg_b)
void reg_w(uint8_t reg_adr, uint8_t *data, int size)
void write_r8(uint8_t reg, uint8_t val)
float set_clock_offset(float ratio)
void set(struct tm *now_tm)
virtual void begin(void)=0
virtual uint8_t int_clear(void)=0
virtual void set(struct tm *now_tm)=0
virtual time_t rtc_time(void)=0
virtual void alarm_disable(void)=0
virtual bool oscillator_stop(void)=0
virtual float set_clock_offset(float ratio)=0
static uint8_t dec2bcd(uint8_t v)
static uint8_t bcd2dec(uint8_t v)
virtual void alarm_clear(void)=0
virtual void alarm(alarm_setting digit, int val)=0
uint8_t read_r8(uint8_t reg)
void bit_op8(uint8_t reg, uint8_t mask, uint8_t value)
void reg_w(uint8_t reg_adr, uint8_t *data, int size)
void txrx(uint8_t *data, int size)
void write_r8(uint8_t reg, uint8_t val)
void reg_r(uint8_t reg_adr, uint8_t *data, int size)