-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLIS3DSH.h
478 lines (299 loc) · 7.82 KB
/
LIS3DSH.h
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
/*!
* \author no1wudi
* \file LIS3DSH.h
*/
#ifndef __LIS3DSH_H
#define __LIS3DSH_H
#include "LIS3DSH_HW.h"
/*!
* \addtogroup LIS3DSH
* @{
*/
/*!
* \addtogroup Register
* @{
*/
/*!
* \brief Read only information register 1.
*/
#define LIS3DSH_Reg_Info_1 0x0D
/*!
* \brief Read only information register 2.
*/
#define LIS3DSH_Reg_Info_2 0x0E
/*!
*\brief Tell you what it is.
*/
#define LIS3DSH_Reg_WHO_AM_I 0x0F
/*!
*\brief Interrupt and soft reset control register.
*/
#define LIS3DSH_Reg_Ctrl_3 0x23
/*!
* \brief Power and output configuration register.
*/
#define LIS3DSH_Reg_Ctrl_4 0x20
/*!
* \brief Scale range and other setting.
*/
#define LIS3DSH_Reg_Ctrl_5 0x24
/*!
* \brief FIFO and other setting.
*/
#define LIS3DSH_Reg_Ctrl_6 0x25
/*!
* \brief Status report register.
*/
#define LIS3DSH_Reg_Status 0x27
/*!
* \brief Temperature output register.
*/
#define LIS3DSH_Reg_Temp_Out 0x0C
/*!
* \brief X-axis offset register.
*/
#define LIS3DSH_Reg_X_Offset 0x10
/*!
* \brief Y-axis offset register.
*/
#define LIS3DSH_Reg_Y_Offset 0x11
/*!
* \brief Z-axis offset register.
*/
#define LIS3DSH_Reg_Z_Offset 0x12
/*!
* \brief Constant shift signed value X-axis register.
*/
#define LIS3DSH_Reg_X_Constant_Shift 0x13
/*!
* \brief Constant shift signed value Y-axis register.
*/
#define LIS3DSH_Reg_Y_Constant_Shift 0x14
/*!
* \brief Constant shift signed value Z-axis register.
*/
#define LIS3DSH_Reg_Z_Constant_Shift 0x15
/*!
* \brief Long counter for interrupt state machine programming.
*/
#define LIS3DSH_Reg_Long_Counter_L 0x16
#define LIS3DSH_Reg_Long_Counter_H 0x17
/*!
* \brief Interrupt state register.
*/
#define LIS3DSH_Reg_Interrupt_State 0x18
/*!
* \brief Vector coefficient register.
*/
#define LIS3DSH_Reg_Vector_Coefficient_1 0x1B
#define LIS3DSH_Reg_Vector_Coefficient_2 0x1C
#define LIS3DSH_Reg_Vector_Coefficient_3 0x1D
#define LIS3DSH_Reg_Vector_Coefficient_4 0x1E
/*!
* \brief Threshold value e register.
*/
#define LIS3DSH_Reg_Threshold_Value 0x1F
/*!
* \brief X-axis out register.
*/
#define LIS3DSH_Reg_X_Out_L 0x28
#define LIS3DSH_Reg_X_Out_H 0x29
/*!
*\brief Y-axis out register.
*/
#define LIS3DSH_Reg_Y_Out_L 0x2A
#define LIS3DSH_Reg_Y_Out_H 0x2B
/*!
* \brief Z-axis out register
*/
#define LIS3DSH_Reg_Z_Out_L 0x2C
#define LIS3DSH_Reg_Z_Out_H 0x2D
/*!
* \brief FIFO control register
*/
#define LIS3DSH_Reg_FIFO_Ctrl 0x2E
/*!
* \brief FIFO source control
*/
#define LIS3DSH_Reg_FIFO_Src_Ctrl 0x2F
/*!
* \brief Interrupt pin configuration.
*/
#define LIS3DSH_Reg_Ctrl_1 0x21
/*!
* \brief State machine 1
*/
#define LIS3DSH_Reg_State_Machine_1_Base 0x40
/*!
* \brief Timer 4 for interrupt pin 1.
*/
#define LIS3DSH_Reg_Timer4_Pin1 0x50
/*!
* \brief TImer 3 for interrupt pin 1.
*/
#define LIS3DSH_Reg_Timer3_Pin1 0x51
/*!
*\brief Timer 2 for interrupt pin 1.
*/
#define LIS3DSH_Reg_Timer2_Pin1_L 0x52
#define LIS3DSH_Reg_Timer2_Pin1_H 0x53
/*!
* \brief Timer 1 for interrupt pin 1.
*/
#define LIS3DSH_Reg_Timer1_Pin1_L 0x54
#define LIS3DSH_Reg_Timer1_Pin1_H 0x55
/*!
* \brief Thresholed 2 for interrupt pin 1.
*/
#define LIS3DSH_Reg_Threshold_2_Pin1 0x56
/*!
* \brief Thresholed 1 for interrupt pin 1.
*/
#define LIS3DSH_Reg_Threshold_1_Pin1 0x57
/*!
* \brief Axis and sign mask for motion detection for pin 1.
*/
#define LIS3DSH_Reg_Mask_B_1 0x59
#define LIS3DSH_Reg_Mask_A_1 0x5A
/*!
* \brief Setting of threshold, peak detection and flags
*/
#define LIS3DSH_Reg_Setting_Motoin_1 0x5B
/*!
* \brief Unsigned output of timer for pin 1.
*/
#define LIS3DSH_Reg_Long_Counter_Out_Pin_1_L 0x5D
#define LIS3DSH_Reg_Long_Counter_Out_Pin_1_H 0x5E
/*!
* \brief Program and reset pointer for pin 1 motion detection operation
*/
#define LIS3DSH_Reg_Program_Reset_Pin_1 0x5C
/*!
* \brief Output flags on axis for interrupt pin 1 management
*/
#define LIS3DSH_Reg_Interrupt_Manage_Pin_1 0x5F
/*!
* \brief Peak detection value register for pin 1 operation
*/
#define LIS3DSH_Reg_Peak_Detect_Pin_1 0x19
/*!
* \brief State program 2 interrupt MNG - pin 2 control register.
*/
#define LIS3DSH_Reg_Ctrl_2 0x22
/*!
* \brief State Machine 2 code register
*/
#define LIS3DSH_Reg_State_Machine_2_Base 0x60
/*!
* \brief Timer 4 for interrupt pin 2.
*/
#define LIS3DSH_Reg_Timer4_Pin2 0x70
/*!
* \brief TImer 3 for interrupt pin 2.
*/
#define LIS3DSH_Reg_Timer3_Pin2 0x71
/*!
*\brief Timer 2 for interrupt pin 2.
*/
#define LIS3DSH_Reg_Timer2_Pin2_L 0x72
#define LIS3DSH_Reg_Timer2_Pin2_H 0x73
/*!
* \brief Timer 1 for interrupt pin 2.
*/
#define LIS3DSH_Reg_Timer1_Pin2_L 0x74
#define LIS3DSH_Reg_Timer1_Pin2_H 0x75
/*!
* \brief Threshold signed value for pin 2 operation.
*/
#define LIS3DSH_Reg_Threshold_2_Pin2 0x76
/*!
* \brief Threshold signed value for pin 2 operation.
*/
#define LIS3DSH_Reg_Threshold_1_Pin2 0x77
/*!
* \brief Axis and sign mask (swap) for pin 2 motion detection operation
*/
#define LIS3DSH_Reg_Mask_A_2 0x7A
/*!
* \brief Axis and sign mask (swap) for SM2 motion detection operation
*/
#define LIS3DSH_Reg_Mask_B_2 0x79
/*!
* \brief Setting of threshold, peak detection and flags for pin 2 motion detection operation.
*/
#define LIS3DSH_Reg_Setting_Motoin_2 0x7B
/*!
* \brief Program and reset pointer for pin 2 motion detection operation.
*/
#define LIS3DSH_Reg_Program_Reset_Pin_2 0x7C
/*!
* \brief 16-bit general timer (unsigned output value)
*/
#define LIS3DSH_Reg_Long_Counter_Out_Pin_2_H 0x7E
#define LIS3DSH_Reg_Long_Counter_Out_Pin_2_L 0x7D
/*!
* \brief Output flags on axis for interrupt SM2 management.
*/
#define LIS3DSH_Reg_Interrupt_Manage_Pin_2 0x7F
/*!
* \brief Peak detection value register for SM2 operation.
*/
#define LIS3DSH_Reg_Peak_Detect_Pin_2 0x1A
/*!
* \brief Decimation counter value register for SM2 operation.
*/
#define LIS3DSH_Reg_Decimation_Counter_Pin2 0x78
/*!
* @}
*/
/*!
*\addtogroup Function Paramater
*@{
*/
#define LIS3DSH_Output_Power_Down 0x00
#define LIS3DSH_Output_Rate_3Hz 0x10
#define LIS3DSH_Output_Rate_6Hz 0x20
#define LIS3DSH_Output_Rate_12Hz 0x30
#define LIS3DSH_Output_Rate_25Hz 0x40
#define LIS3DSH_Output_Rate_50Hz 0x50
#define LIS3DSH_Output_Rate_100Hz 0x60
#define LIS3DSH_Output_Rate_400Hz 0x70
#define LIS3DSH_Output_Rate_800Hz 0x80
#define LIS3DSH_Output_Rate_1600Hz 0xA0
#define LIS3DSH_Output_Contius 0x00
#define LIS3DSH_Output_Single 0x08
#define LIS3DSH_Output_Z_Enable 0x04
#define LIS3DSH_Output_Y_Enable 0x02
#define LIS3DSH_Output_X_Enable 0x01
#define LIS3DSH_Output_Reset 0x00
#define LIS3DSH_Output_Feature_Filter_Bandwidth_800Hz 0x00
#define LIS3DSH_Output_Feature_Filter_Bandwidth_400Hz 0x40
#define LIS3DSH_Output_Feature_Filter_Bandwidth_200Hz 0x80
#define LIS3DSH_Output_Feature_Filter_Bandwidth_50Hz 0xC0
#define LIS3DSH_Output_Feature_Range_2g 0x00
#define LIS3DSH_Output_Feature_Range_4g 0x08
#define LIS3DSH_Output_Feature_Range_6g 0x10
#define LIS3DSH_Output_Feature_Range_8g 0x18
#define LIS3DSH_Output_Feature_Range_16g 0x20
#define LIS3DSH_Output_Feature_Self_Test_Normal 0x00
#define LIS3DSH_Output_Feature_Self_Test_Positive 0x02
#define LIS3DSH_Output_Feature_Self_Test_Nagetive 0x04
#define LIS3DSH_Output_Feature_Self_Test_Disable 0x06
#define LIS3DSH_Output_Feature_SPI_4_Wire 0x00
#define LIS3DSH_Output_Feature_SPI_3_Wire 0x01
#define LIS3DSH_Output_Feature_Reset 0x00
/*!
* @}
*/
float LIS3DSH_Get_X_Out(float LIS3DSH_Sense);
float LIS3DSH_Get_Y_Out(float LIS3DSH_Sense);
float LIS3DSH_Get_Z_Out(float LIS3DSH_Sense);
unsigned char LIS3DSH_Read(unsigned char LIS3DSH_Reg);
void LIS3DSH_Write(unsigned char LIS3DSH_Reg,unsigned char Data);
void LIS3DSH_Set_Output(unsigned char LIS3DSH_Output);
void LIS3DSH_Set_Output_Feature(unsigned char LIS3DSH_Output_Feature);
void LIS3DSH_Init(void);
/*!
* @}
*/
#endif