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
|
||||
|
||||
// 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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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
|
||||
*/
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue