RTC_NXP_Arduino 1.1.2
RTC driver device operation sample code for Arduino
Loading...
Searching...
No Matches
RTC_NXP.h
1
7
8#ifndef ARDUINO_RTC_DRIVER_NXP_ARD_H
9#define ARDUINO_RTC_DRIVER_NXP_ARD_H
10
11#include <Arduino.h>
12#include <stdint.h>
13#include <time.h>
14
15#include <I2C_device.h>
16#include <SPI.h>
17
25
27{
28public:
30 enum board {
31 NONE,
32 ARDUINO_SHIELD,
33 };
34
36 SECOND,
37 MINUTE,
38 HOUR,
39 DAY,
40 WEEKDAY,
41 };
42
44 RTC_NXP();
45
47 virtual ~RTC_NXP();
48
50 virtual void begin( void ) = 0;
51
59 time_t time( time_t* tp );
60
65 virtual void set( struct tm* now_tm ) = 0;
66
71 virtual bool oscillator_stop( void ) = 0;
72
78 virtual void alarm( alarm_setting digit, int val ) = 0;
79
82 virtual void alarm_clear( void ) = 0;
83
86 virtual void alarm_disable( void ) = 0;
87
90 virtual uint8_t int_clear( void ) = 0;
91
92protected:
97 virtual time_t rtc_time( void ) = 0;
98
104 static uint8_t bcd2dec( uint8_t v );
105
111 static uint8_t dec2bcd( uint8_t v );
112};
113
114
122
123class PCF2131_base : public RTC_NXP
124{
125public:
127 enum reg_num {
128 Control_1, Control_2, Control_3, Control_4, Control_5,
129 SR_Reset,
130 _100th_Seconds, Seconds, Minutes,Hours, Days, Weekdays, Months, Years,
131 Second_alarm, Minute_alarm, Hour_alarm, Day_alarm, Weekday_alarm,
132 CLKOUT_ctl,
133 Timestp_ctl1, Sec_timestp1, Min_timestp1, Hour_timestp1, Day_timestp1, Mon_timestp1, Year_timestp1,
134 Timestp_ctl2, Sec_timestp2, Min_timestp2, Hour_timestp2, Day_timestp2, Mon_timestp2, Year_timestp2,
135 Timestp_ctl3, Sec_timestp3, Min_timestp3, Hour_timestp3, Day_timestp3, Mon_timestp3, Year_timestp3,
136 Timestp_ctl4, Sec_timestp4, Min_timestp4, Hour_timestp4, Day_timestp4, Mon_timestp4, Year_timestp4,
137 Aging_offset,
138 INT_A_MASK1, INT_A_MASK2, INT_B_MASK1, INT_B_MASK2,
139 Watchdg_tim_ctl, Watchdg_tim_val
140 };
141
143 DISABLE,
144 EVERY_SECOND,
145 EVERY_MINUTE,
146 };
147
149 LAST,
150 FIRST,
151 };
152
154 {
155 FREQ_32768_HZ,
156 FREQ_16384_HZ,
157 FREQ_8192_HZ,
158 FREQ_4096_HZ,
159 FREQ_2048_HZ,
160 FREQ_1024_HZ,
161 FREQ_1_HZ,
162 FREQ_DISABLE
163 };
164
166 PCF2131_base();
167
169 virtual ~PCF2131_base();
170
174 void begin( void );
175
180 bool oscillator_stop( void );
181
186 time_t rtc_time( void );
187
192 void set( struct tm* now_tm );
193
194
200 void alarm( alarm_setting digit, int val );
201
208 void alarm( alarm_setting digit, int val, int int_sel );
209
212 void alarm_clear( void );
213
216 void alarm_disable( void );
217
224 void timestamp( int num, timestamp_setting ts_setting, int int_sel = 0 );
225
231 time_t timestamp( int num );
232
235 uint8_t int_clear( void );
236
239 uint8_t int_clear( uint8_t* state_p );
240
246 void periodic_interrupt_enable( periodic_int_select sel, int int_sel = 0 );
247
253
256 void reset();
257
260 void otp_refresh();
261
262protected:
264 virtual void _reg_w( uint8_t reg, uint8_t *vp, int len ) = 0;
265
267 virtual void _reg_r( uint8_t reg, uint8_t *vp, int len ) = 0;
268
270 virtual void _reg_w( uint8_t reg, uint8_t val ) = 0;
271
273 virtual uint8_t _reg_r( uint8_t reg ) = 0;
274
276 virtual void _bit_op8( uint8_t reg, uint8_t mask, uint8_t val ) = 0;
277
278private:
279 const int int_mask_reg[ 2 ][ 2 ] = {
280 { INT_A_MASK1, INT_A_MASK2, },
281 { INT_B_MASK1, INT_B_MASK2, },
282 };
283};
284
285
292
293class PCF2131_I2C : public PCF2131_base, public I2C_device
294{
295public:
300 PCF2131_I2C( uint8_t i2c_address = (0xA6 >> 1) );
301
307 PCF2131_I2C( TwoWire& wire, uint8_t i2c_address = (0xA6 >> 1) );
308
310 virtual ~PCF2131_I2C();
311
312#if DOXYGEN_ONLY
314 enum reg_num {
315 Control_1, Control_2, Control_3, Control_4, Control_5,
316 SR_Reset,
317 _100th_Seconds, Seconds, Minutes,Hours, Days, Weekdays, Months, Years,
318 Second_alarm, Minute_alarm, Hour_alarm, Day_alarm, Weekday_alarm,
319 CLKOUT_ctl,
320 Timestp_ctl1, Sec_timestp1, Min_timestp1, Hour_timestp1, Day_timestp1, Mon_timestp1, Year_timestp1,
321 Timestp_ctl2, Sec_timestp2, Min_timestp2, Hour_timestp2, Day_timestp2, Mon_timestp2, Year_timestp2,
322 Timestp_ctl3, Sec_timestp3, Min_timestp3, Hour_timestp3, Day_timestp3, Mon_timestp3, Year_timestp3,
323 Timestp_ctl4, Sec_timestp4, Min_timestp4, Hour_timestp4, Day_timestp4, Mon_timestp4, Year_timestp4,
324 Aging_offset,
325 INT_A_MASK1, INT_A_MASK2, INT_B_MASK1, INT_B_MASK2,
326 Watchdg_tim_ctl, Watchdg_tim_val
327 };
328
330 DISABLE,
331 EVERY_SECOND,
332 EVERY_MINUTE,
333 };
334
336 LAST,
337 FIRST,
338 };
339
347 time_t time( time_t* tp );
348
352 void begin( void );
353
358 bool oscillator_stop( void );
359
364 time_t rtc_time( void );
365
370 void set( struct tm* now_tm );
371
372
378 void alarm( alarm_setting digit, int val );
379
386 void alarm( alarm_setting digit, int val, int int_sel );
387
390 void alarm_clear( void );
391
394 void alarm_disable( void );
395
402 void timestamp( int num, timestamp_setting ts_setting, int int_sel = 0 );
403
409 time_t timestamp( int num );
410
413 uint8_t int_clear( void );
414
417 uint8_t int_clear( uint8_t* state_p );
418
424 void periodic_interrupt_enable( periodic_int_select sel, int int_sel = 0 );
425
432 void reg_w( uint8_t reg_adr, uint8_t *data, int size );
433
439 void reg_w( uint8_t reg_adr, uint8_t data );
440
447 void reg_r( uint8_t reg_adr, uint8_t *data, int size );
448
454 uint8_t reg_r( uint8_t reg_adr );
455
461 void write_r8( uint8_t reg, uint8_t val );
462
468 uint8_t read_r8( uint8_t reg );
469
478 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
479
480#endif // DOXYGEN_ONLY
481
482private:
484 void _reg_w( uint8_t reg, uint8_t *vp, int len );
485
487 void _reg_r( uint8_t reg, uint8_t *vp, int len );
488
490 void _reg_w( uint8_t reg, uint8_t val );
491
493 uint8_t _reg_r( uint8_t reg );
494
496 void _bit_op8( uint8_t reg, uint8_t mask, uint8_t val );
497};
498
499
506
508{
509public:
515 void txrx( uint8_t *data, int size );
516
523 void reg_w( uint8_t reg_adr, uint8_t *data, int size );
524
530 void reg_w( uint8_t reg_adr, uint8_t data );
531
538 void reg_r( uint8_t reg_adr, uint8_t *data, int size );
539
545 uint8_t reg_r( uint8_t reg_adr );
546
552 void write_r8( uint8_t reg, uint8_t val );
553
559 uint8_t read_r8( uint8_t reg );
560
569 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
570};
571
578
580{
581public:
583 PCF2131_SPI();
584
586 virtual ~PCF2131_SPI();
587
588#if DOXYGEN_ONLY
590 enum reg_num {
591 Control_1, Control_2, Control_3, Control_4, Control_5,
592 SR_Reset,
593 _100th_Seconds, Seconds, Minutes,Hours, Days, Weekdays, Months, Years,
594 Second_alarm, Minute_alarm, Hour_alarm, Day_alarm, Weekday_alarm,
595 CLKOUT_ctl,
596 Timestp_ctl1, Sec_timestp1, Min_timestp1, Hour_timestp1, Day_timestp1, Mon_timestp1, Year_timestp1,
597 Timestp_ctl2, Sec_timestp2, Min_timestp2, Hour_timestp2, Day_timestp2, Mon_timestp2, Year_timestp2,
598 Timestp_ctl3, Sec_timestp3, Min_timestp3, Hour_timestp3, Day_timestp3, Mon_timestp3, Year_timestp3,
599 Timestp_ctl4, Sec_timestp4, Min_timestp4, Hour_timestp4, Day_timestp4, Mon_timestp4, Year_timestp4,
600 Aging_offset,
601 INT_A_MASK1, INT_A_MASK2, INT_B_MASK1, INT_B_MASK2,
602 Watchdg_tim_ctl, Watchdg_tim_val
603 };
604
606 DISABLE,
607 EVERY_SECOND,
608 EVERY_MINUTE,
609 };
610
612 LAST,
613 FIRST,
614 };
615
623 time_t time( time_t* tp );
624
628 void begin( void );
629
634 bool oscillator_stop( void );
635
640 time_t rtc_time( void );
641
646 void set( struct tm* now_tm );
647
648
654 void alarm( alarm_setting digit, int val );
655
662 void alarm( alarm_setting digit, int val, int int_sel );
663
666 void alarm_clear( void );
667
670 void alarm_disable( void );
671
678 void timestamp( int num, timestamp_setting ts_setting, int int_sel = 0 );
679
685 time_t timestamp( int num );
686
689 uint8_t int_clear( void );
690
693 uint8_t int_clear( uint8_t* state_p );
694
700 void periodic_interrupt_enable( periodic_int_select sel, int int_sel = 0 );
701
702#endif // DOXYGEN_ONLY
703
704private:
705// void txrx( uint8_t *data, uint16_t size );
706
708 void _reg_w( uint8_t reg, uint8_t *vp, int len );
709
711 void _reg_r( uint8_t reg, uint8_t *vp, int len );
712
714 void _reg_w( uint8_t reg, uint8_t val );
715
717 uint8_t _reg_r( uint8_t reg );
718
720 void _bit_op8( uint8_t reg, uint8_t mask, uint8_t val );
721};
722
729
730class PCF85063_base : public RTC_NXP
731{
732public:
734 enum reg_num {
735 Control_1, Control_2,
736 Offset,
737 RAM_byte,
738 Seconds, Minutes, Hours, Days, Weekdays, Months, Years,
739 Second_alarm, Minute_alarm, Hour_alarm, Day_alarm, Weekday_alarm,
740 Timer_value, Timer_mode
741 };
742
745
747 virtual ~PCF85063_base();
748
752 void begin( void );
753
758 void set( struct tm* now_tm );
759
764 bool oscillator_stop( void );
765
771 void alarm( alarm_setting digit, int val );
772
775 void alarm_clear( void );
776
779 void alarm_disable( void );
780
783 uint8_t int_clear( void );
784
785
791 float timer( float period );
792
793protected:
798 time_t rtc_time( void );
799
801 virtual void _reg_w( uint8_t reg, uint8_t *vp, int len ) = 0;
802
804 virtual void _reg_r( uint8_t reg, uint8_t *vp, int len ) = 0;
805
807 virtual void _reg_w( uint8_t reg, uint8_t val ) = 0;
808
810 virtual uint8_t _reg_r( uint8_t reg ) = 0;
811
813 virtual void _bit_op8( uint8_t reg, uint8_t mask, uint8_t val ) = 0;
814};
815
816class PCF85063A : public PCF85063_base, public I2C_device
817{
818public:
823 PCF85063A( uint8_t i2c_address = (0xA2 >> 1) );
824
830 PCF85063A( TwoWire& wire, uint8_t i2c_address = (0xA2 >> 1) );
831
833 virtual ~PCF85063A();
834
835#if DOXYGEN_ONLY
837 enum reg_num {
838 Control_1, Control_2,
839 Offset,
840 RAM_byte,
841 Seconds, Minutes, Hours, Days, Weekdays, Months, Years,
842 Second_alarm, Minute_alarm, Hour_alarm, Day_alarm, Weekday_alarm,
843 Timer_value, Timer_mode
844 };
845
853 time_t time( time_t* tp );
854
858 void begin( void );
859
864 void set( struct tm* now_tm );
865
870 bool oscillator_stop( void );
871
877 void alarm( alarm_setting digit, int val );
878
881 void alarm_clear( void );
882
885 void alarm_disable( void );
886
889 uint8_t int_clear( void );
890
891
897 float timer( float period );
898
905 void reg_w( uint8_t reg_adr, uint8_t *data, int size );
906
912 void reg_w( uint8_t reg_adr, uint8_t data );
913
920 void reg_r( uint8_t reg_adr, uint8_t *data, int size );
921
927 uint8_t reg_r( uint8_t reg_adr );
928
934 void write_r8( uint8_t reg, uint8_t val );
935
941 uint8_t read_r8( uint8_t reg );
942
951 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
952
953#endif // DOXYGEN_ONLY
954
955private:
957 void _reg_w( uint8_t reg, uint8_t *vp, int len );
958
960 void _reg_r( uint8_t reg, uint8_t *vp, int len );
961
963 void _reg_w( uint8_t reg, uint8_t val );
964
966 uint8_t _reg_r( uint8_t reg );
967
969 void _bit_op8( uint8_t reg, uint8_t mask, uint8_t val );
970};
971
972class PCF85063TP : public PCF85063A
973{
974public:
979 PCF85063TP( uint8_t i2c_address = (0xA2 >> 1) );
980
986 PCF85063TP( TwoWire& wire, uint8_t i2c_address = (0xA2 >> 1) );
987
989 virtual ~PCF85063TP();
990
991#if DOXYGEN_ONLY
993 enum reg_num {
994 Control_1, Control_2,
995 Offset,
996 RAM_byte,
997 Seconds, Minutes, Hours, Days, Weekdays, Months, Years,
998 };
999
1006 time_t time( time_t* tp );
1007
1011 void begin( void );
1012
1017 void set( struct tm* now_tm );
1018
1023 bool oscillator_stop( void );
1024
1031 void reg_w( uint8_t reg_adr, uint8_t *data, int size );
1032
1038 void reg_w( uint8_t reg_adr, uint8_t data );
1039
1046 void reg_r( uint8_t reg_adr, uint8_t *data, int size );
1047
1053 uint8_t reg_r( uint8_t reg_adr );
1054
1060 void write_r8( uint8_t reg, uint8_t val );
1061
1067 uint8_t read_r8( uint8_t reg );
1068
1077 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
1078
1079#endif // DOXYGEN_ONLY
1080
1081};
1082
1083class PCF85263A : public RTC_NXP, public I2C_device
1084{
1085public:
1087 enum reg_num {
1088 _100th_seconds, Seconds, Minutes, Hours, Days, Weekdays, Months, Years,
1089 Second_alarm1, Minute_alarm1, Hour_alarm1, Day_alarm1, Month_alarm1,
1090 Minute_alarm2, Hour_alarm2, Weekday_alarm2,
1091 Alarm_enables,
1092 TSR1_seconds, TSR1_minutes, TSR1_hours, TSR1_days, TSR1_months, TSR1_years,
1093 TSR2_seconds, TSR2_minutes, TSR2_hours, TSR2_days, TSR2_months, TSR2_years,
1094 TSR3_seconds, TSR3_minutes, TSR3_hours, TSR3_days, TSR3_months, TSR3_years,
1095 TSR_mode,
1096 Offset, Oscillator, Battery_switch, Pin_IO, Function,
1097 INTA_enable, INTB_enable, Flags,
1098 RAM_byte, WatchDog, Stop_enable, Resets,
1099
1100 Hours_xx_xx_00 = 0x03, Hours_xx_00_xx, Hours_00_xx_xx, Reserved0, Reserved1,
1101 Second_alm1, Minute_alm1, Hr_xx_xx_00_alm1, Hr_xx_00_xx_alm1, Hr_00_xx_xx_alm1,
1102 Minute_alm2, Hr_xx_00_alm2, Hr_00_xx_alm2,
1103 TSR1_hr_xx_xx_00 = 0x13, TSR1_hr_xx_00_xx, TSR1_hr_00_xx_xx, Reserved2,
1104 TSR2_hr_xx_xx_00 = 0x19, TSR2_hr_xx_00_xx, TSR2_hr_00_xx_xx, Reserved3,
1105 TSR3_hr_xx_xx_00 = 0x1F, TSR3_hr_xx_00_xx, TSR3_hr_00_xx_xx, Reserved4,
1106 };
1107
1110 SECOND,
1111 MINUTE,
1112 HOUR,
1113 DAY,
1114 MONTH,
1115 MINUTE2,
1116 HOUR2,
1117 WEEKDAY2,
1118 };
1119
1122 DISABLE,
1123 EVERY_SECOND,
1124 EVERY_MINUTE,
1125 };
1126
1128 enum inta {
1129 INTA_CLKOUT,
1130 INTA_BATTERY_MODE_INDICATION,
1131 INTA_INTTERRUPT,
1132 INTA_HIGH_Z,
1133 };
1134
1136 enum intb {
1137 INTB_DISABLE,
1138 INTB_INTTERRUPT,
1139 INTB_CLKOUT,
1140 INTB_INPUT_MODE,
1141 };
1142
1144 enum ts_in {
1145 TS_PULLUP_80K = 0x00,
1146 TS_PULLUP_40K = 0x40,
1147 TSL_ACTIVE_HIGH = 0x00,
1148 TSL_ACTIVE_LOW = 0x20,
1149 TSIM_CMOS = 0x00,
1150 TSIM_MECHANICAL = 0x10,
1151 };
1152
1157 PCF85263A( uint8_t i2c_address = (0xA2 >> 1) );
1158
1164 PCF85263A( TwoWire& wire, uint8_t i2c_address = (0xA2 >> 1) );
1165
1167 virtual ~PCF85263A();
1168
1172 void begin( void );
1173
1178 void set( struct tm* now_tm );
1179
1184 bool oscillator_stop( void );
1185
1191 void alarm( alarm_setting digit, int val );
1192
1199 void alarm( alarm_setting digit, int val, int int_sel );
1200
1207 void alarm( alarm_setting_85263A digit, int val, int int_sel = 0 );
1208
1211 void alarm_clear( void );
1212
1215 void alarm_disable( void );
1216
1219 uint8_t int_clear( void );
1220
1225 time_t rtc_time( void );
1226
1232 void periodic_interrupt_enable( periodic_int_select sel, int int_sel = 0 );
1233
1239 void pin_congfig(inta cfg_a, intb cfg_b);
1240
1245 void ts_congfig(int setting);
1246
1251 time_t timestamp( int num );
1252
1253#if DOXYGEN_ONLY
1261 time_t time( time_t* tp );
1262
1269 void reg_w( uint8_t reg_adr, uint8_t *data, int size );
1270
1276 void reg_w( uint8_t reg_adr, uint8_t data );
1277
1284 void reg_r( uint8_t reg_adr, uint8_t *data, int size );
1285
1291 uint8_t reg_r( uint8_t reg_adr );
1292
1298 void write_r8( uint8_t reg, uint8_t val );
1299
1305 uint8_t read_r8( uint8_t reg );
1306
1315 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
1316
1317#endif // DOXYGEN_ONLY
1318
1319private:
1320 void set_alarm( int digit, int val, int int_sel );
1321};
1322
1323class PCF85053A : public RTC_NXP, public I2C_device
1324{
1325public:
1327 enum reg_num {
1328 Seconds, Seconds_alarm, Minutes, Minutes_alarm, Hours, Hours_alarm,
1329 Day_of_the_Week, Day_of_the_Month, Month, Year,
1330 Control_Register, Status_Register,
1331 CLKOUT_Control,
1332 _2nd_Control_Register,
1333 Scratchpad, Version_Register,
1334 Vendor_ID_Register, Model_Register,
1335 Offset, Oscillator,
1336 Access_config,
1337 Sec_timestp, Min_timestp, Hour_timestp, DayWk_timestp, DayMon_timestp, Mon_timestp, Year_timestp,
1338 R_code1, R_code2
1339 };
1340
1345 PCF85053A( uint8_t i2c_address = (0xDE >> 1) );
1346
1352 PCF85053A( TwoWire& wire, uint8_t i2c_address = (0xDE >> 1) );
1353
1355 virtual ~PCF85053A();
1356
1360 void begin( void );
1361
1366 void set( struct tm* now_tm );
1367
1372 bool oscillator_stop( void );
1373
1379 void alarm( alarm_setting digit, int val );
1380
1383 void alarm_clear( void );
1384
1387 void alarm_disable( void );
1388
1391 uint8_t int_clear( void );
1392
1397 time_t rtc_time( void );
1398
1399#if DOXYGEN_ONLY
1407 time_t time( time_t* tp );
1408
1415 void reg_w( uint8_t reg_adr, uint8_t *data, int size );
1416
1422 void reg_w( uint8_t reg_adr, uint8_t data );
1423
1430 void reg_r( uint8_t reg_adr, uint8_t *data, int size );
1431
1437 uint8_t reg_r( uint8_t reg_adr );
1438
1444 void write_r8( uint8_t reg, uint8_t val );
1445
1451 uint8_t read_r8( uint8_t reg );
1452
1461 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
1462
1463#endif // DOXYGEN_ONLY
1464
1465private:
1466 //static inline constexpr uint8_t alarm_offsets[] = { 1, 3, 5 };
1467 static int alarm_offsets[ 3 ];
1468};
1469
1470class ForFutureExtention : public RTC_NXP, public I2C_device
1471{
1472public:
1475
1478
1482 void begin( void );
1483
1488 void set( struct tm* now_tm );
1489
1494 bool oscillator_stop( void );
1495
1500 void alarm( alarm_setting digit, int val );
1501
1504 void alarm_clear( void );
1505
1508 void alarm_disable( void );
1509
1512 uint8_t int_clear( void );
1513
1514
1515#if DOXYGEN_ONLY
1523 time_t time( time_t* tp );
1524
1531 void reg_w( uint8_t reg_adr, uint8_t *data, int size );
1532
1538 void reg_w( uint8_t reg_adr, uint8_t data );
1539
1546 void reg_r( uint8_t reg_adr, uint8_t *data, int size );
1547
1553 uint8_t reg_r( uint8_t reg_adr );
1554
1560 void write_r8( uint8_t reg, uint8_t val );
1561
1567 uint8_t read_r8( uint8_t reg );
1568
1577 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
1578
1579#endif // DOXYGEN_ONLY
1580
1581protected:
1586 time_t rtc_time( void );
1587};
1588
1589
1590#endif // ARDUINO_RTC_DRIVER_NXP_ARD_H
void alarm(alarm_setting digit, int val)
void alarm_clear(void)
time_t time(time_t *tp)
void reg_w(uint8_t reg_adr, uint8_t data)
uint8_t reg_r(uint8_t reg_adr)
virtual ~ForFutureExtention()
time_t rtc_time(void)
uint8_t int_clear(void)
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 alarm_disable(void)
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)
time_t rtc_time(void)
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)
void alarm_disable(void)
uint8_t read_r8(uint8_t reg)
void timestamp(int num, timestamp_setting ts_setting, int int_sel=0)
PCF2131_I2C(uint8_t i2c_address=(0xA6 > > 1))
uint8_t int_clear(void)
time_t time(time_t *tp)
time_t timestamp(int num)
periodic_int_select
Definition RTC_NXP.h:329
uint8_t reg_r(uint8_t reg_adr)
void begin(void)
virtual ~PCF2131_I2C()
void alarm_clear(void)
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)
uint8_t int_clear(void)
time_t rtc_time(void)
void begin(void)
void alarm_clear(void)
time_t time(time_t *tp)
void alarm(alarm_setting digit, int val)
time_t timestamp(int num)
virtual ~PCF2131_SPI()
uint8_t int_clear(uint8_t *state_p)
void alarm(alarm_setting digit, int val, int int_sel)
periodic_int_select
Definition RTC_NXP.h:605
bool oscillator_stop(void)
void periodic_interrupt_enable(periodic_int_select sel, int int_sel=0)
void set(struct tm *now_tm)
void alarm_disable(void)
void begin(void)
virtual uint8_t _reg_r(uint8_t reg)=0
void set(struct tm *now_tm)
uint8_t int_clear(void)
void alarm_clear(void)
void set_clock_out(clock_out_frequency freq)
time_t rtc_time(void)
void timestamp(int num, timestamp_setting ts_setting, int int_sel=0)
void periodic_interrupt_enable(periodic_int_select sel, int int_sel=0)
virtual ~PCF2131_base()
void alarm_disable(void)
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 begin(void)
Definition PCF85053A.cpp:7
time_t time(time_t *tp)
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)
virtual ~PCF85053A()
Definition PCF85053A.cpp:5
void alarm_disable(void)
Definition PCF85053A.cpp:51
void bit_op8(uint8_t reg, uint8_t mask, uint8_t value)
void alarm_clear(void)
Definition PCF85053A.cpp:44
bool oscillator_stop(void)
Definition PCF85053A.cpp:32
void reg_r(uint8_t reg_adr, uint8_t *data, int size)
PCF85053A(uint8_t i2c_address=(0xDE > > 1))
Definition PCF85053A.cpp:3
uint8_t read_r8(uint8_t reg)
uint8_t int_clear(void)
Definition PCF85053A.cpp:56
void reg_w(uint8_t reg_adr, uint8_t data)
time_t rtc_time(void)
Definition PCF85053A.cpp:64
void alarm(alarm_setting digit, int val)
Definition PCF85053A.cpp:38
void set(struct tm *now_tm)
Definition PCF85053A.cpp:9
void set(struct tm *now_tm)
Definition PCF85063A.cpp:15
virtual void _bit_op8(uint8_t reg, uint8_t mask, uint8_t val)=0
bool oscillator_stop(void)
Definition PCF85063A.cpp:38
uint8_t int_clear(void)
Definition PCF85063A.cpp:60
void alarm_disable(void)
Definition PCF85063A.cpp:55
void alarm(alarm_setting digit, int val)
Definition PCF85063A.cpp:43
virtual void _reg_w(uint8_t reg, uint8_t val)=0
float timer(float period)
Definition PCF85063A.cpp:68
virtual void _reg_w(uint8_t reg, uint8_t *vp, int len)=0
void begin(void)
Definition PCF85063A.cpp:11
virtual uint8_t _reg_r(uint8_t reg)=0
virtual void _reg_r(uint8_t reg, uint8_t *vp, int len)=0
virtual ~PCF85063_base()
Definition PCF85063A.cpp:7
void alarm_clear(void)
Definition PCF85063A.cpp:50
time_t rtc_time(void)
time_t time(time_t *tp)
void begin(void)
void alarm(alarm_setting digit, int val)
uint8_t int_clear(void)
float timer(float period)
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)
PCF85063A(uint8_t i2c_address=(0xA2 > > 1))
void set(struct tm *now_tm)
void reg_w(uint8_t reg_adr, uint8_t data)
void alarm_clear(void)
void alarm_disable(void)
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)
virtual ~PCF85063A()
void reg_w(uint8_t reg_adr, uint8_t *data, int size)
void begin(void)
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)
virtual ~PCF85063TP()
uint8_t read_r8(uint8_t reg)
PCF85063TP(uint8_t i2c_address=(0xA2 > > 1))
Definition PCF85063TP.cpp:9
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)
time_t time(time_t *tp)
void pin_congfig(inta cfg_a, intb cfg_b)
void alarm_disable(void)
Definition PCF85263A.cpp:88
void ts_congfig(int setting)
void alarm(alarm_setting digit, int val)
Definition PCF85263A.cpp:50
void periodic_interrupt_enable(periodic_int_select sel, int int_sel=0)
uint8_t int_clear(void)
Definition PCF85263A.cpp:94
virtual ~PCF85263A()
Definition PCF85263A.cpp:11
uint8_t reg_r(uint8_t reg_adr)
time_t timestamp(int num)
void begin(void)
Definition PCF85263A.cpp:15
uint8_t read_r8(uint8_t reg)
alarm_setting_85263A
Definition RTC_NXP.h:1109
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)
Definition PCF85263A.cpp:45
void bit_op8(uint8_t reg, uint8_t mask, uint8_t value)
PCF85263A(uint8_t i2c_address=(0xA2 > > 1))
Definition PCF85263A.cpp:3
void alarm_clear(void)
Definition PCF85263A.cpp:83
void reg_w(uint8_t reg_adr, uint8_t *data, int size)
periodic_int_select
Definition RTC_NXP.h:1121
time_t rtc_time(void)
void write_r8(uint8_t reg, uint8_t val)
void set(struct tm *now_tm)
Definition PCF85263A.cpp:19
time_t time(time_t *tp)
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
RTC_NXP()
Definition RTC_NXP.cpp:3
virtual void alarm_disable(void)=0
virtual bool oscillator_stop(void)=0
alarm_setting
Definition RTC_NXP.h:35
static uint8_t dec2bcd(uint8_t v)
Definition RTC_NXP.cpp:24
static uint8_t bcd2dec(uint8_t v)
Definition RTC_NXP.cpp:19
virtual ~RTC_NXP()
Definition RTC_NXP.cpp:7
virtual void alarm_clear(void)=0
virtual void alarm(alarm_setting digit, int val)=0
time_t time(time_t *tp)
Definition RTC_NXP.cpp:11
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)