60 #include "../dev/mspi.h"
62 #include <util/delay.h>
72 #define ADXL345_DEVICE_ID_REG 0x00
77 #define ADXL345_BW_RATE_REG 0x2C
79 #define ADXL345_LOW_POWER 4
81 #define ADXL345_RATE_L 0
87 #define ADXL345_POWER_CTL_REG 0x2D
89 #define ADXL345_LINK 5
91 #define ADXL345_AUTO_SLEEP 4
93 #define ADXL345_MEASURE 3
95 #define ADXL345_SLEEP 2
97 #define ADXL345_WAKEUP_L 0
103 #define ADXL345_DATA_FORMAT_REG 0x31
105 #define ADXL345_SELF_TEST 7
107 #define ADXL345_SPI 6
109 #define ADXL345_INT_INVERT 5
111 #define ADXL345_FULL_RES 3
113 #define ADXL345_JUSTIFY 2
115 #define ADXL345_RANGE_L 0
121 #define ADXL345_FIFO_CTL_REG 0x38
123 #define ADXL345_FIFO_MODE_L 6
125 #define ADXL345_TRIGGER 5
127 #define ADXL345_SAMPLES_L 0
133 #define ADXL345_FIFO_STATUS_REG 0x39
135 #define ADXL345_FIFO_TRIG 7
137 #define ADXL345_ENTRIES_L 0
141 #define ADXL345_OUTX_LOW_REG 0x32
143 #define ADXL345_OUTX_HIGH_REG 0x33
145 #define ADXL345_OUTY_LOW_REG 0x34
147 #define ADXL345_OUTY_HIGH_REG 0x35
149 #define ADXL345_OUTZ_LOW_REG 0x36
151 #define ADXL345_OUTZ_HIGH_REG 0x37
159 #define ADXL345_MODE_2G (0x0 << ADXL345_RANGE_L)
161 #define ADXL345_MODE_4G (0x1 << ADXL345_RANGE_L)
163 #define ADXL345_MODE_8G (0x2 << ADXL345_RANGE_L)
165 #define ADXL345_MODE_16G (0x3 << ADXL345_RANGE_L)
172 #define ADXL345_MODE_BYPASS (0x0 << ADXL345_FIFO_MODE_L)
173 #define ADXL345_MODE_FIFO (0x1 << ADXL345_FIFO_MODE_L)
174 #define ADXL345_MODE_STREAM (0x2 << ADXL345_FIFO_MODE_L)
175 #define ADXL345_MODE_TRIGGER (0x3 << ADXL345_FIFO_MODE_L)
181 #define ADXL345_PMODE_SLEEP 1
182 #define ADXL345_PMODE_WAKEUP 3
183 #define ADXL345_PMODE_STANDBY 4
192 #define ADXL345_ODR_0HZ10 (0x0 << ADXL345_RATE_L)
194 #define ADXL345_ODR_0HZ20 (0x1 << ADXL345_RATE_L)
196 #define ADXL345_ODR_0HZ39 (0x2 << ADXL345_RATE_L)
198 #define ADXL345_ODR_0HZ78 (0x3 << ADXL345_RATE_L)
200 #define ADXL345_ODR_1HZ56 (0x4 << ADXL345_RATE_L)
202 #define ADXL345_ODR_3HZ13 (0x5 << ADXL345_RATE_L)
204 #define ADXL345_ODR_6HZ25 (0x6 << ADXL345_RATE_L)
206 #define ADXL345_ODR_12HZ5 (0x7 << ADXL345_RATE_L)
208 #define ADXL345_ODR_25HZ (0x8 << ADXL345_RATE_L)
210 #define ADXL345_ODR_50HZ (0x9 << ADXL345_RATE_L)
212 #define ADXL345_ODR_100HZ (0xA << ADXL345_RATE_L)
214 #define ADXL345_ODR_200HZ (0xB << ADXL345_RATE_L)
216 #define ADXL345_ODR_400HZ (0xC << ADXL345_RATE_L)
218 #define ADXL345_ODR_800HZ (0xD << ADXL345_RATE_L)
220 #define ADXL345_ODR_1600HZ (0xE << ADXL345_RATE_L)
222 #define ADXL345_ODR_3200HZ (0xF << ADXL345_RATE_L)
329 #define adxl345_raw_to_mg(raw) (raw * 62) / 16; // approx 3.9 scale factor