drivers/lis2dh12: power mode -> resolution
This is easier to understand.
This commit is contained in:
parent
0ede891755
commit
db0edd3ec1
@ -74,28 +74,28 @@ typedef enum {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
typedef enum {
|
typedef enum {
|
||||||
LIS2DH12_RATE_1HZ = 0x1, /**< sample with 1Hz @ all power modes */
|
LIS2DH12_RATE_1HZ = 0x1, /**< sample with 1Hz @ all resolutions */
|
||||||
LIS2DH12_RATE_10HZ = 0x2, /**< sample with 10Hz @ all power modes */
|
LIS2DH12_RATE_10HZ = 0x2, /**< sample with 10Hz @ all resolutions */
|
||||||
LIS2DH12_RATE_25HZ = 0x3, /**< sample with 25Hz @ all power modes */
|
LIS2DH12_RATE_25HZ = 0x3, /**< sample with 25Hz @ all resolutions */
|
||||||
LIS2DH12_RATE_50HZ = 0x4, /**< sample with 50Hz @ all power modes */
|
LIS2DH12_RATE_50HZ = 0x4, /**< sample with 50Hz @ all resolutions */
|
||||||
LIS2DH12_RATE_100HZ = 0x5, /**< sample with 100Hz @ all power modes */
|
LIS2DH12_RATE_100HZ = 0x5, /**< sample with 100Hz @ all resolutions */
|
||||||
LIS2DH12_RATE_200HZ = 0x6, /**< sample with 200Hz @ all power modes */
|
LIS2DH12_RATE_200HZ = 0x6, /**< sample with 200Hz @ all resolutions */
|
||||||
LIS2DH12_RATE_400HZ = 0x7, /**< sample with 400Hz @ all power modes */
|
LIS2DH12_RATE_400HZ = 0x7, /**< sample with 400Hz @ all resolutions */
|
||||||
LIS2DH12_RATE_1620HZ = 0x8, /**< sample with 1620HZ @ Low Power*/
|
LIS2DH12_RATE_1620HZ = 0x8, /**< sample with 1620HZ @ 8-bit */
|
||||||
LIS2DH12_RATE_VERYHIGH = 0x9, /**< sample with 1344Hz @ High resolution or \
|
LIS2DH12_RATE_VERYHIGH = 0x9, /**< sample with 1344Hz @ High resolution or \
|
||||||
5376Hz @ Low Power*/
|
5376Hz @ 8-bit */
|
||||||
} lis2dh12_rate_t;
|
} lis2dh12_rate_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Available power modes
|
* @brief Available resolutions
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
typedef enum {
|
typedef enum {
|
||||||
LIS2DH12_POWER_DOWN = 0, /**< power down the device */
|
LIS2DH12_POWER_DOWN = 0, /**< power down the device */
|
||||||
LIS2DH12_POWER_LOW = 1, /**< low power mode */
|
LIS2DH12_POWER_LOW = 1, /**< 8-bit mode */
|
||||||
LIS2DH12_POWER_NORMAL = 2, /**< normal mode */
|
LIS2DH12_POWER_NORMAL = 2, /**< 10-bit mode */
|
||||||
LIS2DH12_POWER_HIGH = 3, /**< high resolution */
|
LIS2DH12_POWER_HIGH = 3, /**< 12-bit mode */
|
||||||
} lis2dh12_powermode_t;
|
} lis2dh12_resolution_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief LIS2DH12 configuration parameters
|
* @brief LIS2DH12 configuration parameters
|
||||||
@ -114,7 +114,7 @@ typedef struct {
|
|||||||
#endif
|
#endif
|
||||||
lis2dh12_scale_t scale; /**< sampling sensitivity used */
|
lis2dh12_scale_t scale; /**< sampling sensitivity used */
|
||||||
lis2dh12_rate_t rate; /**< sampling rate used */
|
lis2dh12_rate_t rate; /**< sampling rate used */
|
||||||
lis2dh12_powermode_t powermode; /**< power mode used*/
|
lis2dh12_resolution_t resolution; /**< resolution used */
|
||||||
} lis2dh12_params_t;
|
} lis2dh12_params_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -387,27 +387,23 @@ int lis2dh12_set_powermode(const lis2dh12_t *dev, lis2dh12_powermode_t powermode
|
|||||||
int lis2dh12_set_highpass(const lis2dh12_t *dev, const lis2dh12_highpass_t *config);
|
int lis2dh12_set_highpass(const lis2dh12_t *dev, const lis2dh12_highpass_t *config);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set the reference value to control the high-pass reference.
|
* @brief Change device resolution
|
||||||
* In LIS2DH12_HP_MODE_REFERENCE the reference value is used to filter data
|
|
||||||
* on all axis. Subtracts reference value from acceleration.
|
|
||||||
* Note: LSB changes according to LIS2DH12_SCALE
|
|
||||||
*
|
*
|
||||||
* @param[in] dev device descriptor
|
* @param[in] dev device descriptor
|
||||||
* @param[in] reference reference value [8 Bit]
|
* @param[in] resolution change to given resolution
|
||||||
*
|
*
|
||||||
* @return LIS2DH12_OK on success
|
* @return LIS2DH12_OK on success
|
||||||
*/
|
*/
|
||||||
int lis2dh12_set_reference(const lis2dh12_t *dev, uint8_t reference);
|
int lis2dh12_set_resolution(const lis2dh12_t *dev, lis2dh12_resolution_t resolution);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Read the reference value
|
* @brief Get device resolution
|
||||||
*
|
*
|
||||||
* @param[in] dev device descriptor
|
* @param[in] dev device descriptor
|
||||||
* @param[out] data reference value read from device
|
|
||||||
*
|
*
|
||||||
* @return LIS2DH12_OK on success
|
* @return Current device resolution settings
|
||||||
*/
|
*/
|
||||||
int lis2dh12_read_reference(const lis2dh12_t *dev, uint8_t *data);
|
lis2dh12_resolution_t lis2dh12_get_resolution(const lis2dh12_t *dev);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set click configuration
|
* @brief Set click configuration
|
||||||
|
|||||||
@ -67,8 +67,8 @@ extern "C" {
|
|||||||
#ifndef LIS2DH12_PARAM_RATE
|
#ifndef LIS2DH12_PARAM_RATE
|
||||||
#define LIS2DH12_PARAM_RATE LIS2DH12_RATE_100HZ
|
#define LIS2DH12_PARAM_RATE LIS2DH12_RATE_100HZ
|
||||||
#endif
|
#endif
|
||||||
#ifndef LIS2DH12_PARAM_POWERMODE
|
#ifndef LIS2DH12_PARAM_RESOLUTION
|
||||||
#define LIS2DH12_PARAM_POWERMODE LIS2DH12_POWER_NORMAL
|
#define LIS2DH12_PARAM_RESOLUTION LIS2DH12_POWER_NORMAL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef LIS2DH12_PARAMS
|
#ifndef LIS2DH12_PARAMS
|
||||||
@ -79,14 +79,14 @@ extern "C" {
|
|||||||
.int2_pin = LIS2DH12_PARAM_INT_PIN2, \
|
.int2_pin = LIS2DH12_PARAM_INT_PIN2, \
|
||||||
.scale = LIS2DH12_PARAM_SCALE, \
|
.scale = LIS2DH12_PARAM_SCALE, \
|
||||||
.rate = LIS2DH12_PARAM_RATE, \
|
.rate = LIS2DH12_PARAM_RATE, \
|
||||||
.powermode = LIS2DH12_PARAM_POWERMODE, \
|
.resolution = LIS2DH12_PARAM_RESOLUTION, \
|
||||||
}
|
}
|
||||||
#else /* MODULE_LIS2DH12_INT */
|
#else /* MODULE_LIS2DH12_INT */
|
||||||
#define LIS2DH12_PARAMS { \
|
#define LIS2DH12_PARAMS { \
|
||||||
LIS2DH12_PARAMS_BUSCFG, \
|
LIS2DH12_PARAMS_BUSCFG, \
|
||||||
.scale = LIS2DH12_PARAM_SCALE, \
|
.scale = LIS2DH12_PARAM_SCALE, \
|
||||||
.rate = LIS2DH12_PARAM_RATE, \
|
.rate = LIS2DH12_PARAM_RATE, \
|
||||||
.powermode = LIS2DH12_PARAM_POWERMODE, \
|
.resolution = LIS2DH12_PARAM_RESOLUTION, \
|
||||||
}
|
}
|
||||||
#endif /* MODULE_LIS2DH12_INT */
|
#endif /* MODULE_LIS2DH12_INT */
|
||||||
#endif /* LIS2DH12_PARAMS */
|
#endif /* LIS2DH12_PARAMS */
|
||||||
|
|||||||
@ -167,9 +167,6 @@ int lis2dh12_init(lis2dh12_t *dev, const lis2dh12_params_t *params)
|
|||||||
|
|
||||||
_release(dev);
|
_release(dev);
|
||||||
|
|
||||||
/* set powermode */
|
|
||||||
lis2dh12_set_powermode(dev, dev->p->powermode);
|
|
||||||
|
|
||||||
DEBUG("[lis2dh12] initialization successful\n");
|
DEBUG("[lis2dh12] initialization successful\n");
|
||||||
return LIS2DH12_OK;
|
return LIS2DH12_OK;
|
||||||
}
|
}
|
||||||
@ -460,27 +457,27 @@ int lis2dh12_read_click_src(const lis2dh12_t *dev, LIS2DH12_CLICK_SRC_t *data) {
|
|||||||
return LIS2DH12_OK;
|
return LIS2DH12_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int lis2dh12_set_powermode(const lis2dh12_t *dev, lis2dh12_powermode_t powermode) {
|
int lis2dh12_set_resolution(const lis2dh12_t *dev, lis2dh12_resolution_t resolution)
|
||||||
|
{
|
||||||
assert(dev);
|
assert(dev);
|
||||||
|
|
||||||
LIS2DH12_CTRL_REG1_t reg1 = {0};
|
LIS2DH12_CTRL_REG1_t reg1;
|
||||||
LIS2DH12_CTRL_REG4_t reg4 = {0};
|
LIS2DH12_CTRL_REG4_t reg4;
|
||||||
|
|
||||||
_acquire(dev);
|
_acquire(dev);
|
||||||
reg1.reg = _read(dev, REG_CTRL_REG1);
|
reg1.reg = _read(dev, REG_CTRL_REG1);
|
||||||
reg4.reg = _read(dev, REG_CTRL_REG4);
|
reg4.reg = _read(dev, REG_CTRL_REG4);
|
||||||
|
|
||||||
/* set power mode */
|
/* set power mode */
|
||||||
if (powermode == LIS2DH12_POWER_LOW) {
|
if (resolution == LIS2DH12_POWER_LOW) {
|
||||||
reg1.bit.LPen = 1;
|
reg1.bit.LPen = 1;
|
||||||
reg4.bit.HR = 0;
|
reg4.bit.HR = 0;
|
||||||
}
|
}
|
||||||
else if (powermode == LIS2DH12_POWER_HIGH) {
|
else if (resolution == LIS2DH12_POWER_HIGH) {
|
||||||
reg1.bit.LPen = 0;
|
reg1.bit.LPen = 0;
|
||||||
reg4.bit.HR = 1;
|
reg4.bit.HR = 1;
|
||||||
}
|
}
|
||||||
else if (powermode == LIS2DH12_POWER_NORMAL) {
|
else if (resolution == LIS2DH12_POWER_NORMAL) {
|
||||||
reg1.bit.LPen = 0;
|
reg1.bit.LPen = 0;
|
||||||
reg4.bit.HR = 0;
|
reg4.bit.HR = 0;
|
||||||
}
|
}
|
||||||
@ -495,6 +492,29 @@ int lis2dh12_set_powermode(const lis2dh12_t *dev, lis2dh12_powermode_t powermode
|
|||||||
return LIS2DH12_OK;
|
return LIS2DH12_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lis2dh12_resolution_t lis2dh12_get_resolution(const lis2dh12_t *dev)
|
||||||
|
{
|
||||||
|
assert(dev);
|
||||||
|
|
||||||
|
LIS2DH12_CTRL_REG1_t reg1;
|
||||||
|
LIS2DH12_CTRL_REG4_t reg4;
|
||||||
|
|
||||||
|
_acquire(dev);
|
||||||
|
reg1.reg = _read(dev, REG_CTRL_REG1);
|
||||||
|
reg4.reg = _read(dev, REG_CTRL_REG4);
|
||||||
|
_release(dev);
|
||||||
|
|
||||||
|
if (!reg1.bit.ODR) {
|
||||||
|
return LIS2DH12_POWER_DOWN;
|
||||||
|
}
|
||||||
|
if (reg1.bit.LPen) {
|
||||||
|
return LIS2DH12_POWER_LOW;
|
||||||
|
}
|
||||||
|
if (reg4.bit.HR) {
|
||||||
|
return LIS2DH12_POWER_HIGH;
|
||||||
|
}
|
||||||
|
return LIS2DH12_POWER_NORMAL;
|
||||||
|
}
|
||||||
int lis2dh12_set_datarate(const lis2dh12_t *dev, lis2dh12_rate_t rate) {
|
int lis2dh12_set_datarate(const lis2dh12_t *dev, lis2dh12_rate_t rate) {
|
||||||
|
|
||||||
assert(dev);
|
assert(dev);
|
||||||
@ -539,7 +559,7 @@ int lis2dh12_poweron(const lis2dh12_t *dev)
|
|||||||
|
|
||||||
/* set default param values */
|
/* set default param values */
|
||||||
lis2dh12_set_datarate(dev, dev->p->rate);
|
lis2dh12_set_datarate(dev, dev->p->rate);
|
||||||
lis2dh12_set_powermode(dev, dev->p->powermode);
|
lis2dh12_set_resolution(dev, dev->p->resolution);
|
||||||
|
|
||||||
return LIS2DH12_OK;
|
return LIS2DH12_OK;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user