46 #include "dev/i2cmaster.h"
47 #include "lib/sensors.h"
67 int16_t accm_read_axis(
enum ADXL345_AXIS axis);
76 int accm_set_grange(uint8_t grange);
82 int accm_set_irq(uint8_t int1, uint8_t int2);
89 #define ACCM_REGISTER_INT1_CB(ptr) accm_int1_cb = ptr;
90 #define ACCM_REGISTER_INT2_CB(ptr) accm_int2_cb = ptr;
98 #define SUPPRESS_TIME_INT1 CLOCK_SECOND/4
99 #define SUPPRESS_TIME_INT2 CLOCK_SECOND/4
102 #define ADXL345_THRESH_TAP_DEFAULT 0x48
103 #define ADXL345_OFSX_DEFAULT 0x00
104 #define ADXL345_OFSY_DEFAULT 0x00
105 #define ADXL345_OFSZ_DEFAULT 0x00
106 #define ADXL345_DUR_DEFAULT 0x20
107 #define ADXL345_LATENT_DEFAULT 0x50
108 #define ADXL345_WINDOW_DEFAULT 0xFF
109 #define ADXL345_THRESH_ACT_DEFAULT 0x15
110 #define ADXL345_THRESH_INACT_DEFAULT 0x08
111 #define ADXL345_TIME_INACT_DEFAULT 0x02
112 #define ADXL345_ACT_INACT_CTL_DEFAULT 0xFF
113 #define ADXL345_THRESH_FF_DEFAULT 0x09
114 #define ADXL345_TIME_FF_DEFAULT 0x20
115 #define ADXL345_TAP_AXES_DEFAULT 0x07
117 #define ADXL345_BW_RATE_DEFAULT (0x00 | ADXL345_SRATE_100)
119 #define ADXL345_POWER_CTL_DEFAULT 0x28
120 #define ADXL345_INT_ENABLE_DEFAULT 0x00
121 #define ADXL345_INT_MAP_DEFAULT 0x00
131 #define ADXL345_DATA_FORMAT_DEFAULT (0x00 | ADXL345_RANGE_2G)
132 #define ADXL345_FIFO_CTL_DEFAULT 0x00
137 #define ADXL345_ADDR 0x53
140 #define ADXL345_DEVID 0x00
142 #define ADXL345_THRESH_TAP 0x1D
143 #define ADXL345_OFSX 0x1E
144 #define ADXL345_OFSY 0x1F
145 #define ADXL345_OFSZ 0x20
146 #define ADXL345_DUR 0x21
147 #define ADXL345_LATENT 0x22
148 #define ADXL345_WINDOW 0x23
149 #define ADXL345_THRESH_ACT 0x24
150 #define ADXL345_THRESH_INACT 0x25
151 #define ADXL345_TIME_INACT 0x26
152 #define ADXL345_ACT_INACT_CTL 0x27
153 #define ADXL345_THRESH_FF 0x28
154 #define ADXL345_TIME_FF 0x29
155 #define ADXL345_TAP_AXES 0x2A
156 #define ADXL345_ACT_TAP_STATUS 0x2B
157 #define ADXL345_BW_RATE 0x2C
158 #define ADXL345_POWER_CTL 0x2D
159 #define ADXL345_INT_ENABLE 0x2E
160 #define ADXL345_INT_MAP 0x2F
161 #define ADXL345_INT_SOURCE 0x30
162 #define ADXL345_DATA_FORMAT 0x31
163 #define ADXL345_DATAX0 0x32
164 #define ADXL345_DATAX1 0x33
165 #define ADXL345_DATAY0 0x34
166 #define ADXL345_DATAY1 0x35
167 #define ADXL345_DATAZ0 0x36
168 #define ADXL345_DATAZ1 0x37
169 #define ADXL345_FIFO_CTL 0x38
170 #define ADXL345_FIFO_STATUS 0x39
173 #define ADXL345_INT_DISABLE 0X00
174 #define ADXL345_INT_OVERRUN 0X01
175 #define ADXL345_INT_WATERMARK 0X02
176 #define ADXL345_INT_FREEFALL 0X04
177 #define ADXL345_INT_INACTIVITY 0X08
178 #define ADXL345_INT_ACTIVITY 0X10
179 #define ADXL345_INT_DOUBLETAP 0X20
180 #define ADXL345_INT_TAP 0X40
181 #define ADXL345_INT_DATAREADY 0X80
184 #define ADXL345_DIR P1DIR
185 #define ADXL345_PIN P1PIN
186 #define ADXL345_REN P1REN
187 #define ADXL345_SEL P1SEL
188 #define ADXL345_SEL2 P1SEL2
189 #define ADXL345_INT1_PIN (1<<6)
190 #define ADXL345_INT2_PIN (1<<7)
191 #define ADXL345_IES P1IES
192 #define ADXL345_IE P1IE
193 #define ADXL345_IFG P1IFG
194 #define ADXL345_VECTOR PORT1_VECTOR
197 #define ADXL345_RANGE_2G 0x00
198 #define ADXL345_RANGE_4G 0x01
199 #define ADXL345_RANGE_8G 0x02
200 #define ADXL345_RANGE_16G 0x03
214 #define ADXL345_SRATE_3200 0x0F
216 #define ADXL345_SRATE_1600 0x0E
217 #define ADXL345_SRATE_800 0x0D
218 #define ADXL345_SRATE_400 0x0C
219 #define ADXL345_SRATE_200 0x0B
220 #define ADXL345_SRATE_100 0x0A
221 #define ADXL345_SRATE_50 0x09
222 #define ADXL345_SRATE_25 0x08
223 #define ADXL345_SRATE_12_5 0x07
224 #define ADXL345_SRATE_6_25 0x06
225 #define ADXL345_SRATE_3_13 0x05
226 #define ADXL345_SRATE_1_56 0x04
227 #define ADXL345_SRATE_0_78 0x03
228 #define ADXL345_SRATE_0_39 0x02
229 #define ADXL345_SRATE_0_20 0x01
230 #define ADXL345_SRATE_0_10 0x00
233 extern void (*accm_int1_cb)(uint8_t reg);
234 extern void (*accm_int2_cb)(uint8_t reg);
236 #define ACCM_INT1 0x01
237 #define ACCM_INT2 0x02
238 #define ADXL345_SUCCESS 0x00
239 #define ADXL345_ERROR (-1)
241 #define ADXL345_SENSOR "ADXL345 sensor"
243 extern const struct sensors_sensor adxl345;