From 1e5608ee7675371b595ce8e6d9526ee35b6c205c Mon Sep 17 00:00:00 2001 From: Gunar Schorcht Date: Thu, 4 Jan 2018 17:35:24 +0100 Subject: [PATCH] minor changes --- examples/lsm303d/lsm303d_example.c | 4 +-- extras/lsm303d/README.md | 26 +++++++------- extras/lsm303d/lsm303d.c | 29 +++++++++------ extras/lsm303d/lsm303d.h | 20 +++++------ extras/lsm303d/lsm303d_types.h | 58 ++++++------------------------ 5 files changed, 55 insertions(+), 82 deletions(-) diff --git a/examples/lsm303d/lsm303d_example.c b/examples/lsm303d/lsm303d_example.c index d75d506..d4823d4 100644 --- a/examples/lsm303d/lsm303d_example.c +++ b/examples/lsm303d/lsm303d_example.c @@ -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); diff --git a/extras/lsm303d/README.md b/extras/lsm303d/README.md index 47e4ca4..58c5e75 100644 --- a/extras/lsm303d/README.md +++ b/extras/lsm303d/README.md @@ -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); diff --git a/extras/lsm303d/lsm303d.c b/extras/lsm303d/lsm303d.c index c9ae0ab..be54e0d 100644 --- a/extras/lsm303d/lsm303d.c +++ b/extras/lsm303d/lsm303d.c @@ -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; diff --git a/extras/lsm303d/lsm303d.h b/extras/lsm303d/lsm303d.h index 63930cf..80526ea 100644 --- a/extras/lsm303d/lsm303d.h +++ b/extras/lsm303d/lsm303d.h @@ -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); /** diff --git a/extras/lsm303d/lsm303d_types.h b/extras/lsm303d/lsm303d_types.h index 9279a55..e029af8 100644 --- a/extras/lsm303d/lsm303d_types.h +++ b/extras/lsm303d/lsm303d_types.h @@ -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 */