RTC_NXP_Arduino 0.5.0
LED driver device operation sample code for Arduino
Loading...
Searching...
No Matches
SPI_for_RTC.cpp
1#include "RTC_NXP.h"
2
3void SPI_for_RTC::txrx( uint8_t *data, int size )
4{
5 digitalWrite( SS, LOW );
6 SPI.transfer( data, size );
7 digitalWrite( SS, HIGH );
8}
9
10void SPI_for_RTC::reg_w( uint8_t reg_adr, uint8_t *data, int size )
11{
12 uint8_t v[ size + 1 ];
13
14 v[ 0 ] = reg_adr;
15 memcpy( v + 1, data, size );
16
17 txrx( v, sizeof( v ) );
18}
19
20void SPI_for_RTC::reg_w( uint8_t reg_adr, uint8_t data )
21{
22 uint8_t v[] = { reg_adr, data };
23
24 txrx( v, sizeof( v ) );
25}
26
27void SPI_for_RTC::reg_r( uint8_t reg_adr, uint8_t *data, int size )
28{
29 uint8_t v[ size + 1 ];
30
31 for ( int i = 0; i < size + 1; i++ ) v[ i ] = 0xFF;
32
33 v[ 0 ] = (uint8_t)(reg_adr | 0x80);
34
35 txrx( v, sizeof( v ) );
36
37 memcpy( data, v + 1, size );
38}
39
40uint8_t SPI_for_RTC::reg_r( uint8_t reg_adr )
41{
42 uint8_t v[] = { (uint8_t)(reg_adr | 0x80), 0xFF };
43
44 txrx( v, sizeof( v ) );
45
46 return v[ 1 ];
47}
48
49void SPI_for_RTC::write_r8( uint8_t reg, uint8_t val )
50{
51 reg_w( reg, val );
52}
53
54uint8_t SPI_for_RTC::read_r8( uint8_t reg )
55{
56 return reg_r( reg );
57}
58
59void SPI_for_RTC::bit_op8( uint8_t reg, uint8_t mask, uint8_t value )
60{
61 uint8_t tmp = reg_r( reg ) & mask;
62 reg_w( reg, tmp | value );
63}
uint8_t read_r8(uint8_t reg)
Definition: SPI_for_RTC.cpp:54
void bit_op8(uint8_t reg, uint8_t mask, uint8_t value)
Definition: SPI_for_RTC.cpp:59
void reg_w(uint8_t reg_adr, uint8_t *data, int size)
Definition: SPI_for_RTC.cpp:10
void txrx(uint8_t *data, int size)
Definition: SPI_for_RTC.cpp:3
void write_r8(uint8_t reg, uint8_t val)
Definition: SPI_for_RTC.cpp:49
void reg_r(uint8_t reg_adr, uint8_t *data, int size)
Definition: SPI_for_RTC.cpp:27