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 #endif
// LAST STEP: Finally set scale and mode to start measurements // LAST STEP: Finally set scale and mode to start measurements
lsm303d_set_a_scale(sensor, lsm303d_a_scale_2); lsm303d_set_a_scale(sensor, lsm303d_a_scale_2_g);
lsm303d_set_m_scale(sensor, lsm303d_m_scale_4); 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_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); 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 Accelerometer full scale | Resolution | Driver symbol
---------------------:|-----------:|:----------- ---------------------:|-----------:|:-----------
±2 g | 0.061 mg | ```lsm303d_a_scale_2``` ±2 g | 0.061 mg | ```lsm303d_a_scale_2_g```
±4 g | 0.122 mg | ```lsm303d_a_scale_4``` ±4 g | 0.122 mg | ```lsm303d_a_scale_4_g```
±6 g | 0.183 mg | ```lsm303d_a_scale_6``` ±6 g | 0.183 mg | ```lsm303d_a_scale_6_g```
±8 g | 0.244 mg | ```lsm303d_a_scale_8``` ±8 g | 0.244 mg | ```lsm303d_a_scale_8_g```
±16 g | 0.732 mg | ```lsm303d_a_scale_16``` ±16 g | 0.732 mg | ```lsm303d_a_scale_16_g```
Magnetormeter full scale | Resolution | Driver symbol Magnetormeter full scale | Resolution | Driver symbol
---------------------:|:-----------|:------ ---------------------:|:-----------|:------
±2 Gauss | 0.080 mGauss | ```lsm303d_m_scale_2``` ±2 Gauss | 0.080 mGauss | ```lsm303d_m_scale_2_Gs```
±4 Gauss | 0.160 mGauss | ```lsm303d_m_scale_4``` ±4 Gauss | 0.160 mGauss | ```lsm303d_m_scale_4_Gs```
±8 Gauss | 0.320 mGauss | ```lsm303d_m_scale_8``` ±8 Gauss | 0.320 mGauss | ```lsm303d_m_scale_8_Gs```
±12 Gauss | 0.479 mGauss | ```lsm303d_m_scale_12``` ±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. 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_a_scale(sensor, lsm303d_a_scale_4_g);
lsm303d_set_m_scale(sensor, lsm303d_m_scale_8); lsm303d_set_m_scale(sensor, lsm303d_m_scale_8_Gs);
``` ```
### Fetching output data ### Fetching output data
@ -1190,8 +1190,8 @@ void user_init(void)
#endif #endif
// LAST STEP: Finally set scale and mode to start measurements // LAST STEP: Finally set scale and mode to start measurements
lsm303d_set_a_scale(sensor, lsm303d_a_scale_2); lsm303d_set_a_scale(sensor, lsm303d_a_scale_2_g);
lsm303d_set_m_scale(sensor, lsm303d_m_scale_4); 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_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); 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" #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) #if defined(LSM303D_DEBUG_LEVEL_2)
#define debug(s, f, ...) printf("%s %s: " s "\n", "LSM303D", f, ## __VA_ARGS__) #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__) #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->cs = cs;
dev->error_code = LSM303D_OK; dev->error_code = LSM303D_OK;
dev->a_scale = lsm303d_a_scale_2; dev->a_scale = lsm303d_a_scale_2_g;
dev->m_scale = lsm303d_m_scale_4; dev->m_scale = lsm303d_m_scale_4_Gs;
dev->m_res = lsm303d_m_low_res; dev->m_res = lsm303d_m_low_res;
dev->fifo_mode = lsm303d_bypass; dev->fifo_mode = lsm303d_bypass;
dev->fifo_first = true; 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); lsm303d_update_reg (dev, LSM303D_REG_CTRL1, lsm303d_reg_ctrl1, BDU, 1);
// not necessary, following values are the defaults // 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_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); // lsm303d_update_reg (dev, LSM303D_REG_CTRL6, lsm303d_reg_ctrl6, MFS, lsm303d_m_scale_4_Gs);
// clear FIFO // clear FIFO
// lsm303d_set_fifo_mode (sensor, lsm303d_bypass, 0); // 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); error_dev ("Could not get fifo source register data", __FUNCTION__, dev);
return false; 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, bool lsm303d_set_m_offset (lsm303d_sensor_t* dev,
int16_t x_off, int16_t y_off, int16_t z_off) int16_t x_off, int16_t y_off, int16_t z_off)
{ {
if (!dev) return false; 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, bool lsm303d_get_m_offset (lsm303d_sensor_t* dev,
int16_t* x_off, int16_t* y_off, int16_t* z_off) int16_t* x_off, int16_t* y_off, int16_t* z_off)
{ {
if (!dev) return false; if (!dev) return false;

View file

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

View file

@ -89,11 +89,11 @@ typedef enum {
*/ */
typedef enum { typedef enum {
lsm303d_a_scale_2 = 0, // default lsm303d_a_scale_2_g = 0, // default
lsm303d_a_scale_4, lsm303d_a_scale_4_g,
lsm303d_a_scale_6, lsm303d_a_scale_6_g,
lsm303d_a_scale_8, lsm303d_a_scale_8_g,
lsm303d_a_scale_16 lsm303d_a_scale_16_g
} lsm303d_a_scale_t; } lsm303d_a_scale_t;
@ -140,10 +140,10 @@ typedef enum {
*/ */
typedef enum { typedef enum {
lsm303d_m_scale_2 = 0, lsm303d_m_scale_2_Gs = 0,
lsm303d_m_scale_4, // default lsm303d_m_scale_4_Gs, // default
lsm303d_m_scale_8, lsm303d_m_scale_8_Gs,
lsm303d_m_scale_12 lsm303d_m_scale_12_Gs
} lsm303d_m_scale_t; } 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 { 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 { typedef struct {
@ -332,42 +332,6 @@ typedef struct {
} lsm303d_int_event_source_t; } 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 * @brief Click interrupt configuration for interrupt signals INT1/INT2
*/ */