85
85
86
86
static void gpio_setup (void );
87
87
static void spi_setup (void );
88
- static void LIS3DSH_init (void );
89
- static void LIS3DSH_write_reg (int , int );
90
- static int LIS3DSH_read_reg (int );
91
- static inline int twoComplToInt16 (int );
88
+ static void lis3dsh_init (void );
89
+ static void lis3dsh_write_reg (int , int );
90
+ static int lis3dsh_read_reg (int );
91
+ static inline int two_compl_to_int16 (int );
92
92
93
93
94
94
@@ -156,37 +156,36 @@ static void spi_setup(void)
156
156
157
157
158
158
/* Function to initialise the LIS3DSH */
159
- static void LIS3DSH_init (void )
159
+ static void lis3dsh_init (void )
160
160
{
161
161
int int_reg_value ;
162
162
163
163
/* init SPI1 */
164
164
spi_setup ();
165
165
166
166
/* get WHO AM I value */
167
- int_reg_value = LIS3DSH_read_reg (ADD_REG_WHO_AM_I );
167
+ int_reg_value = lis3dsh_read_reg (ADD_REG_WHO_AM_I );
168
168
169
169
/* if WHO AM I value is the expected one */
170
170
if (int_reg_value == UC_WHO_AM_I_DEFAULT_VALUE ) {
171
171
/* set output data rate to 400 Hz and enable X,Y,Z axis */
172
- LIS3DSH_write_reg (ADD_REG_CTRL_4 , UC_ADD_REG_CTRL_4_CFG_VALUE );
172
+ lis3dsh_write_reg (ADD_REG_CTRL_4 , UC_ADD_REG_CTRL_4_CFG_VALUE );
173
173
/* verify written value */
174
- int_reg_value = LIS3DSH_read_reg (ADD_REG_CTRL_4 );
174
+ int_reg_value = lis3dsh_read_reg (ADD_REG_CTRL_4 );
175
175
/* if written value is different */
176
176
if (int_reg_value != UC_ADD_REG_CTRL_4_CFG_VALUE ) {
177
177
/* ERROR: stay here... */
178
178
while (1 );
179
179
}
180
- }
181
- else {
180
+ } else {
182
181
/* ERROR: stay here... */
183
182
while (1 );
184
183
}
185
184
}
186
185
187
186
188
187
/* Function to write a register to LIS3DSH through SPI */
189
- static void LIS3DSH_write_reg (int reg , int data )
188
+ static void lis3dsh_write_reg (int reg , int data )
190
189
{
191
190
/* set CS low */
192
191
gpio_clear (GPIOE , GPIO3 );
@@ -199,7 +198,7 @@ static void LIS3DSH_write_reg(int reg, int data)
199
198
200
199
201
200
/* Function to read a register from LIS3DSH through SPI */
202
- static int LIS3DSH_read_reg (int reg )
201
+ static int lis3dsh_read_reg (int reg )
203
202
{
204
203
int reg_value ;
205
204
/* set CS low */
@@ -214,15 +213,14 @@ static int LIS3DSH_read_reg(int reg)
214
213
215
214
216
215
/* Transform a two's complement value to 16-bit int value */
217
- static inline int twoComplToInt16 (int two_compl_value )
216
+ static inline int two_compl_to_int16 (int two_compl_value )
218
217
{
219
218
int int16_value = 0 ;
220
219
221
220
/* conversion */
222
221
if (two_compl_value > 32768 ) {
223
222
int16_value = - (((~two_compl_value ) & 0xFFFF ) + 1 );
224
- }
225
- else {
223
+ } else {
226
224
int16_value = two_compl_value ;
227
225
}
228
226
@@ -233,37 +231,36 @@ static inline int twoComplToInt16(int two_compl_value)
233
231
/* Main function */
234
232
int main (void )
235
233
{
236
- int i ;
237
234
int value_mg_x , value_mg_y , value_mg_z ;
238
235
239
236
/* setup all GPIOs */
240
237
gpio_setup ();
241
238
242
239
/* initialise LIS3DSH */
243
- LIS3DSH_init ();
240
+ lis3dsh_init ();
244
241
245
242
/* infinite loop */
246
243
while (1 ) {
247
244
/* get X, Y, Z values */
248
- value_mg_x = ((LIS3DSH_read_reg (ADD_REG_OUT_X_H ) << 8 ) |
249
- LIS3DSH_read_reg (ADD_REG_OUT_X_L ));
250
- value_mg_y = ((LIS3DSH_read_reg (ADD_REG_OUT_Y_H ) << 8 ) |
251
- LIS3DSH_read_reg (ADD_REG_OUT_Y_L ));
252
- value_mg_z = ((LIS3DSH_read_reg (ADD_REG_OUT_Z_H ) << 8 ) |
253
- LIS3DSH_read_reg (ADD_REG_OUT_Z_L ));
245
+ value_mg_x = ((lis3dsh_read_reg (ADD_REG_OUT_X_H ) << 8 ) |
246
+ lis3dsh_read_reg (ADD_REG_OUT_X_L ));
247
+ value_mg_y = ((lis3dsh_read_reg (ADD_REG_OUT_Y_H ) << 8 ) |
248
+ lis3dsh_read_reg (ADD_REG_OUT_Y_L ));
249
+ value_mg_z = ((lis3dsh_read_reg (ADD_REG_OUT_Z_H ) << 8 ) |
250
+ lis3dsh_read_reg (ADD_REG_OUT_Z_L ));
254
251
255
252
/* transform X value from two's complement to 16-bit int */
256
- value_mg_x = twoComplToInt16 (value_mg_x );
253
+ value_mg_x = two_compl_to_int16 (value_mg_x );
257
254
/* convert X absolute value to mg value */
258
255
value_mg_x = value_mg_x * SENS_2G_RANGE_MG_PER_DIGIT ;
259
256
260
257
/* transform Y value from two's complement to 16-bit int */
261
- value_mg_y = twoComplToInt16 (value_mg_y );
258
+ value_mg_y = two_compl_to_int16 (value_mg_y );
262
259
/* convert Y absolute value to mg value */
263
260
value_mg_y = value_mg_y * SENS_2G_RANGE_MG_PER_DIGIT ;
264
261
265
262
/* transform Z value from two's complement to 16-bit int */
266
- value_mg_z = twoComplToInt16 (value_mg_z );
263
+ value_mg_z = two_compl_to_int16 (value_mg_z );
267
264
/* convert Z absolute value to mg value */
268
265
value_mg_z = value_mg_z * SENS_2G_RANGE_MG_PER_DIGIT ;
269
266
@@ -273,8 +270,7 @@ int main(void)
273
270
LED_ORANGE_OFF ();
274
271
LED_GREEN_OFF ();
275
272
LED_RED_ON ();
276
- }
277
- else if (value_mg_x <= - LED_TH_MG ) {
273
+ } else if (value_mg_x <= - LED_TH_MG ) {
278
274
LED_BLUE_OFF ();
279
275
LED_ORANGE_OFF ();
280
276
LED_RED_OFF ();
@@ -287,8 +283,7 @@ int main(void)
287
283
LED_RED_OFF ();
288
284
LED_GREEN_OFF ();
289
285
LED_ORANGE_ON ();
290
- }
291
- else if (value_mg_y <= - LED_TH_MG ) {
286
+ } else if (value_mg_y <= - LED_TH_MG ) {
292
287
LED_RED_OFF ();
293
288
LED_GREEN_OFF ();
294
289
LED_ORANGE_OFF ();
@@ -301,19 +296,12 @@ int main(void)
301
296
LED_ORANGE_ON ();
302
297
LED_RED_ON ();
303
298
LED_GREEN_ON ();
304
- }
305
- else if (value_mg_z <= - LED_TH_MG ) {
299
+ } else if (value_mg_z <= - LED_TH_MG ) {
306
300
LED_BLUE_OFF ();
307
301
LED_ORANGE_OFF ();
308
302
LED_RED_OFF ();
309
303
LED_GREEN_OFF ();
310
304
}
311
-
312
- /* Wait a bit... */
313
- for (i = 0 ; i < 100 ; i ++ )
314
- {
315
- __asm__("nop" );
316
- }
317
305
}
318
306
319
307
return 0 ;
0 commit comments