AvrIO  1.4.5
Bibliothèque C modulaire pour ATMEL AVR
lsm303.h
1 
22 #ifndef _AVRIO_LSM303_H_
23 #define _AVRIO_LSM303_H_
24 
25 #include <avrio/defs.h>
26 
27 __BEGIN_C_DECLS
28 /* ========================================================================== */
29 #if ! defined(__DOXYGEN__)
30 
31 /* constants ================================================================ */
32 
33 /* ACC Registers */
34 #define LSM303_CTRL_REG1_A 0x20
35 #define LSM303_PM2 7
36 #define LSM303_PM1 6
37 #define LSM303_PM0 5
38 #define LSM303_DR1 4
39 #define LSM303_DR0 3
40 #define LSM303_ZEN 2
41 #define LSM303_YEN 1
42 #define LSM303_XEN 0
43 
44 #define LSM303_CTRL_REG2_A 0x21
45 #define LSM303_BOOT 7
46 #define LSM303_HPM1 6
47 #define LSM303_HPM0 5
48 #define LSM303_FDS 4
49 #define LSM303_HPEN2 3
50 #define LSM303_HPEN1 2
51 #define LSM303_HPCF1 1
52 #define LSM303_HPCF0 0
53 
54 #define LSM303_CTRL_REG3_A 0x22
55 #define LSM303_IHL 7
56 #define LSM303_PP_OD 6
57 #define LSM303_LIR2 5
58 #define LSM303_I2_CFG1 4
59 #define LSM303_I2_CFG0 3
60 #define LSM303_LIR1 2
61 #define LSM303_I1_CFG1 1
62 #define LSM303_I1_CFG0 0
63 
64 #define LSM303_CTRL_REG4_A 0x23
65 #define LSM303_BDU 7
66 #define LSM303_BLE 6
67 #define LSM303_FS1 5
68 #define LSM303_FS0 4
69 
70 #define LSM303_CTRL_REG5_A 0x24
71 #define LSM303_TURNON1 1
72 #define LSM303_TURNON0 0
73 
74 #define LSM303_CTRL_REG6_A 0x25 // DLHC only
75 #define LSM303_I2_CLICKEN 7
76 #define LSM303_I2_INT1 6
77 #define LSM303_I2_INT2 5
78 #define LSM303_BOOT_I1 4
79 #define LSM303_P2_ACT 3
80 #define LSM303_H_LACTIVE 1
81 
82 #define LSM303_HP_FILTER_RESET_A 0x25 // DLH, DLM only
83 #define LSM303_REFERENCE_A 0x26
84 
85 #define LSM303_STATUS_REG_A 0x27
86 #define LSM303_ZYXOR 7
87 #define LSM303_ZOR 6
88 #define LSM303_YOR 5
89 #define LSM303_XOR 4
90 #define LSM303_ZYXDA 3
91 #define LSM303_ZDA 2
92 #define LSM303_YDA 1
93 #define LSM303_XDA 0
94 
95 #define LSM303_OUT_X_L_A 0x28
96 #define LSM303_OUT_X_H_A 0x29
97 #define LSM303_OUT_Y_L_A 0x2A
98 #define LSM303_OUT_Y_H_A 0x2B
99 #define LSM303_OUT_Z_L_A 0x2C
100 #define LSM303_OUT_Z_H_A 0x2D
101 #define LSM303_AUTOINC 7
102 
103 #define LSM303_FIFO_CTRL_REG_A 0x2E // DLHC only
104 #define LSM303_FM1 7
105 #define LSM303_FM0 6
106 #define LSM303_TR 5
107 #define LSM303_FTH4 4
108 #define LSM303_FTH3 3
109 #define LSM303_FTH2 2
110 #define LSM303_FTH1 1
111 #define LSM303_FTH0 0
112 
113 #define LSM303_FIFO_SRC_REG_A 0x2F // DLHC only
114 #define LSM303_WTM 7
115 #define LSM303_OVRN_FIFO 6
116 #define LSM303_EMPTY 5
117 #define LSM303_FSS4 4
118 #define LSM303_FSS3 3
119 #define LSM303_FSS2 2
120 #define LSM303_FSS1 1
121 #define LSM303_FSS0 0
122 
123 #define LSM303_INT1_CFG_A 0x30
124 #define LSM303_INT2_CFG_A 0x34
125 #define LSM303_AOI 7
126 #define LSM303_6D 6
127 #define LSM303_ZHIE 5
128 #define LSM303_ZLIE 4
129 #define LSM303_YHIE 3
130 #define LSM303_YLIE 2
131 #define LSM303_XHIE 1
132 #define LSM303_XLIE 0
133 
134 #define LSM303_INT1_SRC_A 0x31
135 #define LSM303_INT2_SRC_A 0x35
136 #define LSM303_IA 6
137 #define LSM303_ZH 5
138 #define LSM303_ZL 4
139 #define LSM303_YH 3
140 #define LSM303_YL 2
141 #define LSM303_XH 1
142 #define LSM303_XL 0
143 
144 #define LSM303_INT1_THS_A 0x32
145 #define LSM303_INT1_DURATION_A 0x33
146 
147 
148 #define LSM303_INT2_THS_A 0x36
149 #define LSM303_INT2_DURATION_A 0x37
150 
151 #define LSM303_CLICK_CFG_A 0x38 // DLHC only
152 #define LSM303_CLICK_SRC_A 0x39 // DLHC only
153 #define LSM303_CLICK_THS_A 0x3A // DLHC only
154 #define LSM303_TIME_LIMIT_A 0x3B // DLHC only
155 #define LSM303_TIME_LATENCY_A 0x3C // DLHC only
156 #define LSM303_TIME_WINDOW_A 0x3D // DLHC only
157 
158 
159 /* MAG Registers */
160 #define LSM303_CRA_REG_M 0x00
161 #define LSM303_DO2 4
162 #define LSM303_DO1 3
163 #define LSM303_DO0 2
164 
165 #define LSM303_CRB_REG_M 0x01
166 #define LSM303_GN2 7
167 #define LSM303_GN1 6
168 #define LSM303_GN0 5
169 
170 #define LSM303_MR_REG_M 0x02
171 #define LSM303_MD1 1
172 #define LSM303_MD0 0
173 
174 #define LSM303_OUT_X_H_M 0x03
175 #define LSM303_OUT_X_L_M 0x04
176 #define LSM303_OUT_Y_H_M -1 // The addresses of the Y and Z magnetometer output registers
177 #define LSM303_OUT_Y_L_M -2 // are reversed on the DLM and DLHC relative to the DLH.
178 #define LSM303_OUT_Z_H_M -3 // These four defines have dummy values so the library can
179 #define LSM303_OUT_Z_L_M -4 // determine the correct address based on the device type.
180 
181 #define LSM303_SR_REG_M 0x09
182 #define LSM303_LOCK 1
183 #define LSM303_DRDY 0
184 
185 #define LSM303_IRA_REG_M 0x0A
186 #define LSM303_IRB_REG_M 0x0B
187 #define LSM303_IRC_REG_M 0x0C
188 
189 #define LSM303_WHO_AM_I_M 0x0F // DLM only
190 
191 #define LSM303_TEMP_OUT_H_M 0x31 // DLHC only
192 #define LSM303_TEMP_OUT_L_M 0x32 // DLHC only
193 
194 #define LSM303DLH_OUT_Y_H_M 0x05
195 #define LSM303DLH_OUT_Y_L_M 0x06
196 #define LSM303DLH_OUT_Z_H_M 0x07
197 #define LSM303DLH_OUT_Z_L_M 0x08
198 
199 #define LSM303DLM_OUT_Z_H_M 0x05
200 #define LSM303DLM_OUT_Z_L_M 0x06
201 #define LSM303DLM_OUT_Y_H_M 0x07
202 #define LSM303DLM_OUT_Y_L_M 0x08
203 
204 #define LSM303DLHC_OUT_Z_H_M 0x05
205 #define LSM303DLHC_OUT_Z_L_M 0x06
206 #define LSM303DLHC_OUT_Y_H_M 0x07
207 #define LSM303DLHC_OUT_Y_L_M 0x08
208 
209 #endif /* __DOXYGEN__ not defined */
210 
211 __END_C_DECLS
212 /* ========================================================================== */
213 #endif /* _AVRIO_LSM303_H_ not defined */
214