minor changes

This commit is contained in:
Gunar Schorcht 2018-01-04 17:35:24 +01:00
parent e62924e2a1
commit 1e5608ee76
5 changed files with 55 additions and 82 deletions

View file

@ -409,8 +409,8 @@ void user_init(void)
#endif
// LAST STEP: Finally set scale and mode to start measurements
lsm303d_set_a_scale(sensor, lsm303d_a_scale_2);
lsm303d_set_m_scale(sensor, lsm303d_m_scale_4);
lsm303d_set_a_scale(sensor, lsm303d_a_scale_2_g);
lsm303d_set_m_scale(sensor, lsm303d_m_scale_4_Gs);
lsm303d_set_a_mode (sensor, lsm303d_a_odr_12_5, lsm303d_a_aaf_bw_773, true, true, true);
lsm303d_set_m_mode (sensor, lsm303d_m_odr_12_5, lsm303d_m_low_res, lsm303d_m_continuous);

View file

@ -127,24 +127,24 @@ Raw **output data** (**raw data**) are given as 16-bit signed integer values in
Accelerometer full scale | Resolution | Driver symbol
---------------------:|-----------:|:-----------
±2 g | 0.061 mg | ```lsm303d_a_scale_2```
±4 g | 0.122 mg | ```lsm303d_a_scale_4```
±6 g | 0.183 mg | ```lsm303d_a_scale_6```
±8 g | 0.244 mg | ```lsm303d_a_scale_8```
±16 g | 0.732 mg | ```lsm303d_a_scale_16```
±2 g | 0.061 mg | ```lsm303d_a_scale_2_g```
±4 g | 0.122 mg | ```lsm303d_a_scale_4_g```
±6 g | 0.183 mg | ```lsm303d_a_scale_6_g```
±8 g | 0.244 mg | ```lsm303d_a_scale_8_g```
±16 g | 0.732 mg | ```lsm303d_a_scale_16_g```
Magnetormeter full scale | Resolution | Driver symbol
---------------------:|:-----------|:------
±2 Gauss | 0.080 mGauss | ```lsm303d_m_scale_2```
±4 Gauss | 0.160 mGauss | ```lsm303d_m_scale_4```
±8 Gauss | 0.320 mGauss | ```lsm303d_m_scale_8```
±12 Gauss | 0.479 mGauss | ```lsm303d_m_scale_12```
±2 Gauss | 0.080 mGauss | ```lsm303d_m_scale_2_Gs```
±4 Gauss | 0.160 mGauss | ```lsm303d_m_scale_4_Gs```
±8 Gauss | 0.320 mGauss | ```lsm303d_m_scale_8_Gs```
±12 Gauss | 0.479 mGauss | ```lsm303d_m_scale_12_Gs```
By default, a full scale of ±2 g is used for the acceleration and ±2 Gauss for the magnetic measurement. ```lsm303d_set_a_scale``` and ```lsm303d_set_m_scale``` functions can be used to change these values.
```
lsm303d_set_a_scale(sensor, lsm303d_a_scale_4);
lsm303d_set_m_scale(sensor, lsm303d_m_scale_8);
lsm303d_set_a_scale(sensor, lsm303d_a_scale_4_g);
lsm303d_set_m_scale(sensor, lsm303d_m_scale_8_Gs);
```
### Fetching output data
@ -1190,8 +1190,8 @@ void user_init(void)
#endif
// LAST STEP: Finally set scale and mode to start measurements
lsm303d_set_a_scale(sensor, lsm303d_a_scale_2);
lsm303d_set_m_scale(sensor, lsm303d_m_scale_4);
lsm303d_set_a_scale(sensor, lsm303d_a_scale_2_g);
lsm303d_set_m_scale(sensor, lsm303d_m_scale_4_Gs);
lsm303d_set_a_mode (sensor, lsm303d_a_odr_12_5, lsm303d_a_aaf_bw_773, true, true, true);
lsm303d_set_m_mode (sensor, lsm303d_m_odr_12_5, lsm303d_m_low_res, lsm303d_m_continuous);

View file

@ -53,6 +53,16 @@
#include "lsm303d.h"
#ifdef debug
#undef debug
#undef debug_dev
#endif
#ifdef error
#undef error
#undef error_dev
#endif
#if defined(LSM303D_DEBUG_LEVEL_2)
#define debug(s, f, ...) printf("%s %s: " s "\n", "LSM303D", f, ## __VA_ARGS__)
#define debug_dev(s, f, d, ...) printf("%s %s: bus %d, addr %02x - " s "\n", "LSM303D", f, d->bus, d->addr, ## __VA_ARGS__)
@ -374,8 +384,8 @@ lsm303d_sensor_t* lsm303d_init_sensor (uint8_t bus, uint8_t addr, uint8_t cs)
dev->cs = cs;
dev->error_code = LSM303D_OK;
dev->a_scale = lsm303d_a_scale_2;
dev->m_scale = lsm303d_m_scale_4;
dev->a_scale = lsm303d_a_scale_2_g;
dev->m_scale = lsm303d_m_scale_4_Gs;
dev->m_res = lsm303d_m_low_res;
dev->fifo_mode = lsm303d_bypass;
dev->fifo_first = true;
@ -408,8 +418,8 @@ lsm303d_sensor_t* lsm303d_init_sensor (uint8_t bus, uint8_t addr, uint8_t cs)
lsm303d_update_reg (dev, LSM303D_REG_CTRL1, lsm303d_reg_ctrl1, BDU, 1);
// not necessary, following values are the defaults
// lsm303d_update_reg (dev, LSM303D_REG_CTRL2, lsm303d_reg_ctrl2, AFS, lsm303d_a_scale_2);
// lsm303d_update_reg (dev, LSM303D_REG_CTRL6, lsm303d_reg_ctrl6, MFS, lsm303d_m_scale_4);
// lsm303d_update_reg (dev, LSM303D_REG_CTRL2, lsm303d_reg_ctrl2, AFS, lsm303d_a_scale_2_g);
// lsm303d_update_reg (dev, LSM303D_REG_CTRL6, lsm303d_reg_ctrl6, MFS, lsm303d_m_scale_4_Gs);
// clear FIFO
// lsm303d_set_fifo_mode (sensor, lsm303d_bypass, 0);
@ -582,8 +592,7 @@ bool lsm303d_new_a_data (lsm303d_sensor_t* dev)
error_dev ("Could not get fifo source register data", __FUNCTION__, dev);
return false;
}
printf("AAAA %02x\n", *(uint8_t*)&fifo_src);
return !fifo_src.EMPTY;
return !fifo_src.EMPTY;
}
}
@ -1381,8 +1390,8 @@ bool lsm303d_get_a_hpf_ref (lsm303d_sensor_t* dev,
}
bool lsm303d_set_m_off (lsm303d_sensor_t* dev,
int16_t x_off, int16_t y_off, int16_t z_off)
bool lsm303d_set_m_offset (lsm303d_sensor_t* dev,
int16_t x_off, int16_t y_off, int16_t z_off)
{
if (!dev) return false;
@ -1405,8 +1414,8 @@ bool lsm303d_set_m_off (lsm303d_sensor_t* dev,
}
bool lsm303d_get_m_off (lsm303d_sensor_t* dev,
int16_t* x_off, int16_t* y_off, int16_t* z_off)
bool lsm303d_get_m_offset (lsm303d_sensor_t* dev,
int16_t* x_off, int16_t* y_off, int16_t* z_off)
{
if (!dev) return false;

View file

@ -503,26 +503,26 @@ bool lsm303d_get_a_hpf_ref (lsm303d_sensor_t* dev,
* @brief Set magnetic offset
*
* @param dev pointer to the sensor device data structure
* @param x_off magnetic offset for x axis
* @param y_off magnetic offset for y axis
* @param z_off magnetic offset for z axis
* @param x magnetic offset for x axis
* @param y magnetic offset for y axis
* @param z magnetic offset for z axis
* @return true on success, false on error
*/
bool lsm303d_set_m_off (lsm303d_sensor_t* dev,
int16_t x_off, int16_t y_off, int16_t z_off);
bool lsm303d_set_m_offset (lsm303d_sensor_t* dev,
int16_t x, int16_t y, int16_t z);
/**
* @brief Get magnetic offset
*
* @param dev pointer to the sensor device data structure
* @param x_off magnetic offset for x axis
* @param y_off magnetic offset for y axis
* @param z_off magnetic offset for z axis
* @param x magnetic offset for x axis
* @param y magnetic offset for y axis
* @param z magnetic offset for z axis
* @return true on success, false on error
*/
bool lsm303d_get_m_off (lsm303d_sensor_t* dev,
int16_t* x_off, int16_t* y_off, int16_t* z_off);
bool lsm303d_get_m_offset (lsm303d_sensor_t* dev,
int16_t* x, int16_t* y, int16_t* z);
/**

View file

@ -89,11 +89,11 @@ typedef enum {
*/
typedef enum {
lsm303d_a_scale_2 = 0, // default
lsm303d_a_scale_4,
lsm303d_a_scale_6,
lsm303d_a_scale_8,
lsm303d_a_scale_16
lsm303d_a_scale_2_g = 0, // default
lsm303d_a_scale_4_g,
lsm303d_a_scale_6_g,
lsm303d_a_scale_8_g,
lsm303d_a_scale_16_g
} lsm303d_a_scale_t;
@ -140,10 +140,10 @@ typedef enum {
*/
typedef enum {
lsm303d_m_scale_2 = 0,
lsm303d_m_scale_4, // default
lsm303d_m_scale_8,
lsm303d_m_scale_12
lsm303d_m_scale_2_Gs = 0,
lsm303d_m_scale_4_Gs, // default
lsm303d_m_scale_8_Gs,
lsm303d_m_scale_12_Gs
} lsm303d_m_scale_t;
@ -231,7 +231,7 @@ typedef struct {
/**
* @brief Threshold interrupt configuration for INT signal
* @brief Magnetic threshold interrupt configuration for INT1/INT2 signals
*/
typedef struct {
@ -254,7 +254,7 @@ typedef struct {
/**
* @brief Threshold interrupt source type for interrupt signals INT
* @brief Magnetic threshold interrupt source of INT1/INT2 signals
*/
typedef struct {
@ -332,42 +332,6 @@ typedef struct {
} lsm303d_int_event_source_t;
/**
* @brief magnetic value interrupt configuration for INT1/INT2 signals
*/
typedef struct {
uint16_t threshold; // threshold used for interrupt generation
bool x_enabled; // true - x exceeds threshold on positive side
bool y_enabled; // true - y exceeds threshold on positive side
bool z_enabled; // true - z exceeds threshold on positive side
bool latch; // true - latch the interrupt until the interrupt
// source has been read
} lsm303d_int_magnetic_config_t;
/**
* @brief Threshold interrupt source type for interrupt signals INT
*/
typedef struct {
bool x_pos :1; // true - x exceeds threshold on positive side
bool y_pos :1; // true - y exceeds threshold on positive side
bool z_pos :1; // true - z exceeds threshold on positive side
bool x_neg :1; // true - x exceeds threshold on negative side
bool y_neg :1; // true - y exceeds threshold on negative side
bool z_neg :1; // true - z exceeds threshold on negative side
bool mroi :1; // true - internal measurement range overflow
bool active:1; // true - interrupt event occured
} lsm303d_int_magnetic_source_t;
/**
* @brief Click interrupt configuration for interrupt signals INT1/INT2
*/