-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathacc_driver.c
57 lines (50 loc) · 1.12 KB
/
acc_driver.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include "acc_driver.h"
//#include "lis3dh_register.h"
uint8_t ac_status;
uint8_t acc_read_register(uint8_t addr)
{
uint16_t response;
ACC_ENABLE();
response = spi_transfer16((addr | LIS3DH_READ_MASK)<<8);
ACC_DISABLE();
return (uint8_t) (response);
}
uint8_t acc_write_register(uint8_t addr, uint8_t data)
{
ACC_ENABLE();
spi_transfer16((data & 0x00FF) | (addr << 8));
ACC_DISABLE();
return 0;
}
unsigned int acc_read_register16(uint8_t addr, uint8_t level)
{
int i=0;
unsigned int out;
uint8_t output[2];
ACC_ENABLE();
spi_transfer(addr | 0x80 | 0x40);
// output[0] = spi_transfer(0x00);
// output[1] = spi_transfer(0x00);
do{
output[i] = spi_transfer(0x00);
i++;
}while(i<2);
ACC_DISABLE();
out = output[0];
out |= (output[1] << 8);
return out;
}
uint8_t *acc_get_xyz(uint8_t *buffer6)
{
uint8_t *p = buffer6;
uint8_t i;
ACC_ENABLE();
spi_transfer(LIS3D_READ_WITH_AUTO_INC | LIS3DH_OUT_X_L);
for(i = 0; i< 6 ;i ++)
{
*p = spi_transfer(0x00);
p++;
}
ACC_DISABLE();
return buffer6;
}