RTC_NXP_Arduino 1.2.1
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
103 virtual float set_clock_offset( float ratio ) = 0;
104
105protected:
110 virtual time_t rtc_time( void ) = 0;
111
117 static uint8_t bcd2dec( uint8_t v );
118
124 static uint8_t dec2bcd( uint8_t v );
125};
126
127
135
136class PCF2131_base : public RTC_NXP
137{
138public:
140 enum reg_num {
141 Control_1, Control_2, Control_3, Control_4, Control_5,
142 SR_Reset,
143 _100th_Seconds, Seconds, Minutes,Hours, Days, Weekdays, Months, Years,
144 Second_alarm, Minute_alarm, Hour_alarm, Day_alarm, Weekday_alarm,
145 CLKOUT_ctl,
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,
150 Aging_offset,
151 INT_A_MASK1, INT_A_MASK2, INT_B_MASK1, INT_B_MASK2,
152 Watchdg_tim_ctl, Watchdg_tim_val
153 };
154
156 DISABLE,
157 EVERY_SECOND,
158 EVERY_MINUTE,
159 };
160
162 LAST,
163 FIRST,
164 };
165
167 {
168 FREQ_32768_HZ,
169 FREQ_16384_HZ,
170 FREQ_8192_HZ,
171 FREQ_4096_HZ,
172 FREQ_2048_HZ,
173 FREQ_1024_HZ,
174 FREQ_1_HZ,
175 FREQ_DISABLE
176 };
177
179 PCF2131_base();
180
182 virtual ~PCF2131_base();
183
187 void begin( void );
188
193 bool oscillator_stop( void );
194
199 time_t rtc_time( void );
200
207 void set( struct tm* now_tm );
208
209
215 void alarm( alarm_setting digit, int val );
216
223 void alarm( alarm_setting digit, int val, int int_sel );
224
227 void alarm_clear( void );
228
231 void alarm_disable( void );
232
239 void timestamp( int num, timestamp_setting ts_setting, int int_sel = 0 );
240
246 time_t timestamp( int num );
247
250 uint8_t int_clear( void );
251
254 uint8_t int_clear( uint8_t* state_p );
255
261 void periodic_interrupt_enable( periodic_int_select sel, int int_sel = 0 );
262
268
271 void reset();
272
275 void otp_refresh();
276
286 float set_clock_offset( float ratio );
287
288protected:
290 virtual void _reg_w( uint8_t reg, uint8_t *vp, int len ) = 0;
291
293 virtual void _reg_r( uint8_t reg, uint8_t *vp, int len ) = 0;
294
296 virtual void _reg_w( uint8_t reg, uint8_t val ) = 0;
297
299 virtual uint8_t _reg_r( uint8_t reg ) = 0;
300
302 virtual void _bit_op8( uint8_t reg, uint8_t mask, uint8_t val ) = 0;
303
304private:
305 const int int_mask_reg[ 2 ][ 2 ] = {
306 { INT_A_MASK1, INT_A_MASK2, },
307 { INT_B_MASK1, INT_B_MASK2, },
308 };
309};
310
311
318
319class PCF2131_I2C : public PCF2131_base, public I2C_device
320{
321public:
326 PCF2131_I2C( uint8_t i2c_address = (0xA6 >> 1) );
327
333 PCF2131_I2C( TwoWire& wire, uint8_t i2c_address = (0xA6 >> 1) );
334
336 virtual ~PCF2131_I2C();
337
338#if DOXYGEN_ONLY
340 enum reg_num {
341 Control_1, Control_2, Control_3, Control_4, Control_5,
342 SR_Reset,
343 _100th_Seconds, Seconds, Minutes,Hours, Days, Weekdays, Months, Years,
344 Second_alarm, Minute_alarm, Hour_alarm, Day_alarm, Weekday_alarm,
345 CLKOUT_ctl,
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,
350 Aging_offset,
351 INT_A_MASK1, INT_A_MASK2, INT_B_MASK1, INT_B_MASK2,
352 Watchdg_tim_ctl, Watchdg_tim_val
353 };
354
356 DISABLE,
357 EVERY_SECOND,
358 EVERY_MINUTE,
359 };
360
362 LAST,
363 FIRST,
364 };
365
367 FREQ_32768_HZ,
368 FREQ_16384_HZ,
369 FREQ_8192_HZ,
370 FREQ_4096_HZ,
371 FREQ_2048_HZ,
372 FREQ_1024_HZ,
373 FREQ_1_HZ,
374 FREQ_DISABLE
375 };
376
384 time_t time( time_t* tp );
385
389 void begin( void );
390
395 bool oscillator_stop( void );
396
401 time_t rtc_time( void );
402
409 void set( struct tm* now_tm );
410
411
417 void alarm( alarm_setting digit, int val );
418
425 void alarm( alarm_setting digit, int val, int int_sel );
426
429 void alarm_clear( void );
430
433 void alarm_disable( void );
434
441 void timestamp( int num, timestamp_setting ts_setting, int int_sel = 0 );
442
448 time_t timestamp( int num );
449
452 uint8_t int_clear( void );
453
456 uint8_t int_clear( uint8_t* state_p );
457
463 void periodic_interrupt_enable( periodic_int_select sel, int int_sel = 0 );
464
470
473 void reset();
474
478
484 float set_clock_offset( float ratio );
485
492 void reg_w( uint8_t reg_adr, uint8_t *data, int size );
493
499 void reg_w( uint8_t reg_adr, uint8_t data );
500
507 void reg_r( uint8_t reg_adr, uint8_t *data, int size );
508
514 uint8_t reg_r( uint8_t reg_adr );
515
521 void write_r8( uint8_t reg, uint8_t val );
522
528 uint8_t read_r8( uint8_t reg );
529
538 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
539
540#endif // DOXYGEN_ONLY
541
542private:
544 void _reg_w( uint8_t reg, uint8_t *vp, int len );
545
547 void _reg_r( uint8_t reg, uint8_t *vp, int len );
548
550 void _reg_w( uint8_t reg, uint8_t val );
551
553 uint8_t _reg_r( uint8_t reg );
554
556 void _bit_op8( uint8_t reg, uint8_t mask, uint8_t val );
557};
558
559
566
568{
569public:
575 void txrx( uint8_t *data, int size );
576
583 void reg_w( uint8_t reg_adr, uint8_t *data, int size );
584
590 void reg_w( uint8_t reg_adr, uint8_t data );
591
598 void reg_r( uint8_t reg_adr, uint8_t *data, int size );
599
605 uint8_t reg_r( uint8_t reg_adr );
606
612 void write_r8( uint8_t reg, uint8_t val );
613
619 uint8_t read_r8( uint8_t reg );
620
629 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
630};
631
638
640{
641public:
643 PCF2131_SPI();
644
646 virtual ~PCF2131_SPI();
647
648#if DOXYGEN_ONLY
650 enum reg_num {
651 Control_1, Control_2, Control_3, Control_4, Control_5,
652 SR_Reset,
653 _100th_Seconds, Seconds, Minutes,Hours, Days, Weekdays, Months, Years,
654 Second_alarm, Minute_alarm, Hour_alarm, Day_alarm, Weekday_alarm,
655 CLKOUT_ctl,
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,
660 Aging_offset,
661 INT_A_MASK1, INT_A_MASK2, INT_B_MASK1, INT_B_MASK2,
662 Watchdg_tim_ctl, Watchdg_tim_val
663 };
664
666 DISABLE,
667 EVERY_SECOND,
668 EVERY_MINUTE,
669 };
670
672 LAST,
673 FIRST,
674 };
675
677 FREQ_32768_HZ,
678 FREQ_16384_HZ,
679 FREQ_8192_HZ,
680 FREQ_4096_HZ,
681 FREQ_2048_HZ,
682 FREQ_1024_HZ,
683 FREQ_1_HZ,
684 FREQ_DISABLE
685 };
686
694 time_t time( time_t* tp );
695
699 void begin( void );
700
705 bool oscillator_stop( void );
706
711 time_t rtc_time( void );
712
719 void set( struct tm* now_tm );
720
721
727 void alarm( alarm_setting digit, int val );
728
735 void alarm( alarm_setting digit, int val, int int_sel );
736
739 void alarm_clear( void );
740
743 void alarm_disable( void );
744
751 void timestamp( int num, timestamp_setting ts_setting, int int_sel = 0 );
752
758 time_t timestamp( int num );
759
762 uint8_t int_clear( void );
763
766 uint8_t int_clear( uint8_t* state_p );
767
773 void periodic_interrupt_enable( periodic_int_select sel, int int_sel = 0 );
774
780
783 void reset();
784
788
794 float set_clock_offset( float ratio );
795
796#endif // DOXYGEN_ONLY
797
798private:
799// void txrx( uint8_t *data, uint16_t size );
800
802 void _reg_w( uint8_t reg, uint8_t *vp, int len );
803
805 void _reg_r( uint8_t reg, uint8_t *vp, int len );
806
808 void _reg_w( uint8_t reg, uint8_t val );
809
811 uint8_t _reg_r( uint8_t reg );
812
814 void _bit_op8( uint8_t reg, uint8_t mask, uint8_t val );
815};
816
823
824class PCF85063_base : public RTC_NXP
825{
826public:
828 enum reg_num {
829 Control_1, Control_2,
830 Offset,
831 RAM_byte,
832 Seconds, Minutes, Hours, Days, Weekdays, Months, Years,
833 Second_alarm, Minute_alarm, Hour_alarm, Day_alarm, Weekday_alarm,
834 Timer_value, Timer_mode
835 };
836
839
841 virtual ~PCF85063_base();
842
846 void begin( void );
847
852 void set( struct tm* now_tm );
853
858 bool oscillator_stop( void );
859
865 void alarm( alarm_setting digit, int val );
866
869 void alarm_clear( void );
870
873 void alarm_disable( void );
874
877 uint8_t int_clear( void );
878
879
886 float timer( float period, bool pulse = false );
887
897 float set_clock_offset( float ratio );
898
899protected:
904 time_t rtc_time( void );
905
907 virtual void _reg_w( uint8_t reg, uint8_t *vp, int len ) = 0;
908
910 virtual void _reg_r( uint8_t reg, uint8_t *vp, int len ) = 0;
911
913 virtual void _reg_w( uint8_t reg, uint8_t val ) = 0;
914
916 virtual uint8_t _reg_r( uint8_t reg ) = 0;
917
919 virtual void _bit_op8( uint8_t reg, uint8_t mask, uint8_t val ) = 0;
920};
921
922class PCF85063A : public PCF85063_base, public I2C_device
923{
924public:
929 PCF85063A( uint8_t i2c_address = (0xA2 >> 1) );
930
936 PCF85063A( TwoWire& wire, uint8_t i2c_address = (0xA2 >> 1) );
937
939 virtual ~PCF85063A();
940
941#if DOXYGEN_ONLY
943 enum reg_num {
944 Control_1, Control_2,
945 Offset,
946 RAM_byte,
947 Seconds, Minutes, Hours, Days, Weekdays, Months, Years,
948 Second_alarm, Minute_alarm, Hour_alarm, Day_alarm, Weekday_alarm,
949 Timer_value, Timer_mode
950 };
951
959 time_t time( time_t* tp );
960
964 void begin( void );
965
970 void set( struct tm* now_tm );
971
976 bool oscillator_stop( void );
977
983 void alarm( alarm_setting digit, int val );
984
987 void alarm_clear( void );
988
991 void alarm_disable( void );
992
995 uint8_t int_clear( void );
996
997
1004 float timer( float period, bool pulse = false );
1005
1011 float set_clock_offset( float ratio );
1012
1019 void reg_w( uint8_t reg_adr, uint8_t *data, int size );
1020
1026 void reg_w( uint8_t reg_adr, uint8_t data );
1027
1034 void reg_r( uint8_t reg_adr, uint8_t *data, int size );
1035
1041 uint8_t reg_r( uint8_t reg_adr );
1042
1048 void write_r8( uint8_t reg, uint8_t val );
1049
1055 uint8_t read_r8( uint8_t reg );
1056
1065 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
1066
1067#endif // DOXYGEN_ONLY
1068
1069private:
1071 void _reg_w( uint8_t reg, uint8_t *vp, int len );
1072
1074 void _reg_r( uint8_t reg, uint8_t *vp, int len );
1075
1077 void _reg_w( uint8_t reg, uint8_t val );
1078
1080 uint8_t _reg_r( uint8_t reg );
1081
1083 void _bit_op8( uint8_t reg, uint8_t mask, uint8_t val );
1084};
1085
1086class PCF85063TP : public PCF85063A
1087{
1088public:
1093 PCF85063TP( uint8_t i2c_address = (0xA2 >> 1) );
1094
1100 PCF85063TP( TwoWire& wire, uint8_t i2c_address = (0xA2 >> 1) );
1101
1103 virtual ~PCF85063TP();
1104
1105#if DOXYGEN_ONLY
1107 enum reg_num {
1108 Control_1, Control_2,
1109 Offset,
1110 RAM_byte,
1111 Seconds, Minutes, Hours, Days, Weekdays, Months, Years,
1112 };
1113
1120 time_t time( time_t* tp );
1121
1125 void begin( void );
1126
1131 void set( struct tm* now_tm );
1132
1137 bool oscillator_stop( void );
1138
1145 void reg_w( uint8_t reg_adr, uint8_t *data, int size );
1146
1152 void reg_w( uint8_t reg_adr, uint8_t data );
1153
1160 void reg_r( uint8_t reg_adr, uint8_t *data, int size );
1161
1167 uint8_t reg_r( uint8_t reg_adr );
1168
1174 void write_r8( uint8_t reg, uint8_t val );
1175
1181 uint8_t read_r8( uint8_t reg );
1182
1191 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
1192
1193#endif // DOXYGEN_ONLY
1194
1195};
1196
1197class PCF85263A : public RTC_NXP, public I2C_device
1198{
1199public:
1201 enum reg_num {
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,
1205 Alarm_enables,
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,
1209 TSR_mode,
1210 Offset, Oscillator, Battery_switch, Pin_IO, Function,
1211 INTA_enable, INTB_enable, Flags,
1212 RAM_byte, WatchDog, Stop_enable, Resets,
1213
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,
1220 };
1221
1224 SECOND,
1225 MINUTE,
1226 HOUR,
1227 DAY,
1228 MONTH,
1229 MINUTE2,
1230 HOUR2,
1231 WEEKDAY2,
1232 };
1233
1236 DISABLE,
1237 EVERY_SECOND,
1238 EVERY_MINUTE,
1239 };
1240
1242 enum inta {
1243 INTA_CLKOUT,
1244 INTA_BATTERY_MODE_INDICATION,
1245 INTA_INTERRUPT,
1246 INTA_HIGH_Z,
1247 };
1248
1250 enum intb {
1251 INTB_DISABLE,
1252 INTB_INTERRUPT,
1253 INTB_CLKOUT,
1254 INTB_INPUT_MODE,
1255 };
1256
1258 enum ts_in {
1259 TS_PULLUP_80K = 0x00,
1260 TS_PULLUP_40K = 0x40,
1261 TSL_ACTIVE_HIGH = 0x00,
1262 TSL_ACTIVE_LOW = 0x20,
1263 TSIM_CMOS = 0x00,
1264 TSIM_MECHANICAL = 0x10,
1265 };
1266
1271 PCF85263A( uint8_t i2c_address = (0xA2 >> 1) );
1272
1278 PCF85263A( TwoWire& wire, uint8_t i2c_address = (0xA2 >> 1) );
1279
1281 virtual ~PCF85263A();
1282
1286 void begin( void );
1287
1292 void set( struct tm* now_tm );
1293
1298 bool oscillator_stop( void );
1299
1305 void alarm( alarm_setting digit, int val );
1306
1313 void alarm( alarm_setting digit, int val, int int_sel );
1314
1321 void alarm( alarm_setting_85263A digit, int val, int int_sel = 0 );
1322
1325 void alarm_clear( void );
1326
1329 void alarm_disable( void );
1330
1333 uint8_t int_clear( void );
1334
1339 time_t rtc_time( void );
1340
1346 void periodic_interrupt_enable( periodic_int_select sel, int int_sel = 0 );
1347
1353 void pin_config(inta cfg_a, intb cfg_b);
1354
1359 void ts_config(int setting);
1360
1365 time_t timestamp( int num );
1366
1377 float set_clock_offset( float ratio );
1378
1379#if DOXYGEN_ONLY
1387 time_t time( time_t* tp );
1388
1395 void reg_w( uint8_t reg_adr, uint8_t *data, int size );
1396
1402 void reg_w( uint8_t reg_adr, uint8_t data );
1403
1410 void reg_r( uint8_t reg_adr, uint8_t *data, int size );
1411
1417 uint8_t reg_r( uint8_t reg_adr );
1418
1424 void write_r8( uint8_t reg, uint8_t val );
1425
1431 uint8_t read_r8( uint8_t reg );
1432
1441 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
1442
1443#endif // DOXYGEN_ONLY
1444
1445private:
1446 void set_alarm( int digit, int val, int int_sel );
1447};
1448
1449class PCF85053A : public RTC_NXP, public I2C_device
1450{
1451public:
1453 enum reg_num {
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,
1457 CLKOUT_Control,
1458 _2nd_Control_Register,
1459 Scratchpad, Version_Register,
1460 Vendor_ID_Register, Model_Register,
1461 Offset, Oscillator,
1462 Access_config,
1463 Sec_timestp, Min_timestp, Hour_timestp, DayWk_timestp, DayMon_timestp, Mon_timestp, Year_timestp,
1464 R_code1, R_code2
1465 };
1466
1471 PCF85053A( uint8_t i2c_address = (0xDE >> 1) );
1472
1478 PCF85053A( TwoWire& wire, uint8_t i2c_address = (0xDE >> 1) );
1479
1481 virtual ~PCF85053A();
1482
1486 void begin( void );
1487
1492 void set( struct tm* now_tm );
1493
1498 bool oscillator_stop( void );
1499
1505 void alarm( alarm_setting digit, int val );
1506
1509 void alarm_clear( void );
1510
1513 void alarm_disable( void );
1514
1517 uint8_t int_clear( void );
1518
1523 time_t rtc_time( void );
1524
1535 float set_clock_offset( float ratio );
1536
1537#if DOXYGEN_ONLY
1545 time_t time( time_t* tp );
1546
1553 void reg_w( uint8_t reg_adr, uint8_t *data, int size );
1554
1560 void reg_w( uint8_t reg_adr, uint8_t data );
1561
1568 void reg_r( uint8_t reg_adr, uint8_t *data, int size );
1569
1575 uint8_t reg_r( uint8_t reg_adr );
1576
1582 void write_r8( uint8_t reg, uint8_t val );
1583
1589 uint8_t read_r8( uint8_t reg );
1590
1599 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
1600
1601#endif // DOXYGEN_ONLY
1602
1603private:
1604 //static inline constexpr uint8_t alarm_offsets[] = { 1, 3, 5 };
1605 static int alarm_offsets[ 3 ];
1606};
1607
1608class ForFutureExtention : public RTC_NXP, public I2C_device
1609{
1610public:
1613
1616
1620 void begin( void );
1621
1626 void set( struct tm* now_tm );
1627
1632 bool oscillator_stop( void );
1633
1638 void alarm( alarm_setting digit, int val );
1639
1642 void alarm_clear( void );
1643
1646 void alarm_disable( void );
1647
1650 uint8_t int_clear( void );
1651
1652
1653#if DOXYGEN_ONLY
1661 time_t time( time_t* tp );
1662
1669 void reg_w( uint8_t reg_adr, uint8_t *data, int size );
1670
1676 void reg_w( uint8_t reg_adr, uint8_t data );
1677
1684 void reg_r( uint8_t reg_adr, uint8_t *data, int size );
1685
1691 uint8_t reg_r( uint8_t reg_adr );
1692
1698 void write_r8( uint8_t reg, uint8_t val );
1699
1705 uint8_t read_r8( uint8_t reg );
1706
1715 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
1716
1717#endif // DOXYGEN_ONLY
1718
1719protected:
1724 time_t rtc_time( void );
1725};
1726
1727
1728#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)
float set_clock_offset(float ratio)
time_t rtc_time(void)
bool oscillator_stop(void)
void reset()
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 otp_refresh()
void reg_w(uint8_t reg_adr, uint8_t data)
void alarm_disable(void)
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))
uint8_t int_clear(void)
time_t time(time_t *tp)
time_t timestamp(int num)
periodic_int_select
Definition RTC_NXP.h:355
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)
clock_out_frequency
Definition RTC_NXP.h:366
void reg_w(uint8_t reg_adr, uint8_t *data, int size)
clock_out_frequency
Definition RTC_NXP.h:676
void timestamp(int num, timestamp_setting ts_setting, int int_sel=0)
void otp_refresh()
uint8_t int_clear(void)
time_t rtc_time(void)
void begin(void)
void alarm_clear(void)
time_t time(time_t *tp)
void reset()
void alarm(alarm_setting digit, int val)
time_t timestamp(int num)
virtual ~PCF2131_SPI()
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)
periodic_int_select
Definition RTC_NXP.h:665
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)
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)
float set_clock_offset(float ratio)
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)
float set_clock_offset(float ratio)
Definition PCF85053A.cpp:82
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
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
float timer(float period, bool pulse=false)
Definition PCF85063A.cpp:68
time_t rtc_time(void)
float set_clock_offset(float ratio)
time_t time(time_t *tp)
void begin(void)
float timer(float period, bool pulse=false)
void alarm(alarm_setting digit, int val)
uint8_t int_clear(void)
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)
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 alarm_disable(void)
Definition PCF85263A.cpp:88
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
void ts_config(int setting)
uint8_t read_r8(uint8_t reg)
alarm_setting_85263A
Definition RTC_NXP.h:1223
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 pin_config(inta cfg_a, intb cfg_b)
void reg_w(uint8_t reg_adr, uint8_t *data, int size)
periodic_int_select
Definition RTC_NXP.h:1235
time_t rtc_time(void)
void write_r8(uint8_t reg, uint8_t val)
float set_clock_offset(float ratio)
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
virtual float set_clock_offset(float ratio)=0
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)