RTC_NXP_Arduino
1.1.2
RTC driver device operation sample code for Arduino
Toggle main menu visibility
Loading...
Searching...
No Matches
src
PCF85053A.cpp
1
#include "RTC_NXP.h"
2
3
PCF85053A::PCF85053A
( uint8_t i2c_address ) : I2C_device( i2c_address ){}
4
PCF85053A::PCF85053A
( TwoWire& wire, uint8_t i2c_address ) : I2C_device( wire, i2c_address ){}
5
PCF85053A::~PCF85053A
(){}
6
7
void
PCF85053A::begin
(
void
){}
8
9
void
PCF85053A::set
(
struct
tm* now_tmp )
10
{
11
time_t now_time;
12
struct
tm* cnv_tmp;
13
uint8_t bf[ 10 ];
14
15
bf[ 0 ] =
dec2bcd
( now_tmp->tm_sec );
16
bf[ 1 ] = 0xFF;
// Seconds_alarm clear
17
bf[ 2 ] =
dec2bcd
( now_tmp->tm_min );
18
bf[ 3 ] = 0xFF;
// Minutes_alarm clear
19
bf[ 4 ] =
dec2bcd
( now_tmp->tm_hour );
20
bf[ 5 ] = 0xFF;
// Hours_alarm clear
21
bf[ 7 ] =
dec2bcd
( now_tmp->tm_mday );
22
bf[ 8 ] =
dec2bcd
( now_tmp->tm_mon + 1 );
23
bf[ 9 ] =
dec2bcd
( now_tmp->tm_year - 100 );
24
25
now_time = mktime( now_tmp );
26
cnv_tmp = localtime( &now_time );
27
bf[ 6 ] =
dec2bcd
( cnv_tmp->tm_wday );
28
29
reg_w
( Seconds, bf,
sizeof
( bf ) );
30
}
31
32
bool
PCF85053A::oscillator_stop
(
void
)
33
{
34
return
reg_r
( Status_Register ) & 0x40;
35
bit_op8
( Status_Register, ~0x40, 0x40 );
36
}
37
38
void
PCF85053A::alarm
(
alarm_setting
digit,
int
val )
39
{
40
reg_w
( alarm_offsets[ digit ],
dec2bcd
( val ) );
41
bit_op8
( Control_Register, ~0x08, 0x08 );
42
}
43
44
void
PCF85053A::alarm_clear
(
void
)
45
{
46
reg_w
( alarm_offsets[ SECOND ], 0xFF );
47
reg_w
( alarm_offsets[ MINUTE ], 0xFF );
48
reg_w
( alarm_offsets[ HOUR ], 0xFF );
49
}
50
51
void
PCF85053A::alarm_disable
(
void
)
52
{
53
bit_op8
( Control_Register, ~0x08, 0x00 );
54
}
55
56
uint8_t
PCF85053A::int_clear
(
void
)
57
{
58
uint8_t status =
reg_r
( Status_Register );
59
60
reg_w
( Status_Register, ~(status & 0xF0) );
61
return
status;
62
}
63
64
time_t
PCF85053A::rtc_time
(
void
)
65
{
66
struct
tm now_tm;
67
uint8_t bf[ 10 ];
68
69
reg_r
( Seconds, bf,
sizeof
( bf ) );
70
71
now_tm.tm_sec =
bcd2dec
( bf[ 0 ] );
72
now_tm.tm_min =
bcd2dec
( bf[ 2 ] );
73
now_tm.tm_hour =
bcd2dec
( bf[ 4 ] );
74
now_tm.tm_mday =
bcd2dec
( bf[ 7 ] );
75
now_tm.tm_mon =
bcd2dec
( bf[ 8 ] ) - 1;
76
now_tm.tm_year =
bcd2dec
( bf[ 9 ] ) + 100;
77
now_tm.tm_isdst = 0;
78
79
return
mktime( &now_tm );
80
}
81
82
int
PCF85053A::alarm_offsets[ 3 ] = { 1, 3, 5 };
PCF85053A::begin
void begin(void)
Definition
PCF85053A.cpp:7
PCF85053A::reg_w
void reg_w(uint8_t reg_adr, uint8_t *data, int size)
PCF85053A::~PCF85053A
virtual ~PCF85053A()
Definition
PCF85053A.cpp:5
PCF85053A::alarm_disable
void alarm_disable(void)
Definition
PCF85053A.cpp:51
PCF85053A::bit_op8
void bit_op8(uint8_t reg, uint8_t mask, uint8_t value)
PCF85053A::alarm_clear
void alarm_clear(void)
Definition
PCF85053A.cpp:44
PCF85053A::oscillator_stop
bool oscillator_stop(void)
Definition
PCF85053A.cpp:32
PCF85053A::reg_r
void reg_r(uint8_t reg_adr, uint8_t *data, int size)
PCF85053A::PCF85053A
PCF85053A(uint8_t i2c_address=(0xDE > > 1))
Definition
PCF85053A.cpp:3
PCF85053A::int_clear
uint8_t int_clear(void)
Definition
PCF85053A.cpp:56
PCF85053A::rtc_time
time_t rtc_time(void)
Definition
PCF85053A.cpp:64
PCF85053A::alarm
void alarm(alarm_setting digit, int val)
Definition
PCF85053A.cpp:38
PCF85053A::set
void set(struct tm *now_tm)
Definition
PCF85053A.cpp:9
RTC_NXP::alarm_setting
alarm_setting
Definition
RTC_NXP.h:35
RTC_NXP::dec2bcd
static uint8_t dec2bcd(uint8_t v)
Definition
RTC_NXP.cpp:24
RTC_NXP::bcd2dec
static uint8_t bcd2dec(uint8_t v)
Definition
RTC_NXP.cpp:19
Generated by
1.17.0