minor changes
This commit is contained in:
parent
e62924e2a1
commit
1e5608ee76
5 changed files with 55 additions and 82 deletions
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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,7 +592,6 @@ 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,7 +1390,7 @@ 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,7 +1414,7 @@ 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;
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue