Minor adjustments

git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@11756 110e8d01-0319-4d1e-a829-52ad28d1bb01
This commit is contained in:
Rocco Marco Guglielmi 2018-03-14 20:32:08 +00:00
parent 6198d6d965
commit 3d3363b7da
2 changed files with 63 additions and 11 deletions

View File

@ -709,6 +709,7 @@ void lsm303agrObjectInit(LSM303AGRDriver *devp) {
* @api
*/
void lsm303agrStart(LSM303AGRDriver *devp, const LSM303AGRConfig *config) {
uint32_t i;
uint8_t cr[6];
osalDbgCheck((devp != NULL) && (config != NULL));
@ -753,6 +754,54 @@ void lsm303agrStart(LSM303AGRDriver *devp, const LSM303AGRConfig *config) {
#endif
}
/* Storing sensitivity according to user settings */
if(devp->config->accfullscale == LSM303AGR_ACC_FS_2G) {
devp->accfullscale = LSM303AGR_ACC_2G;
for(i = 0; i < LSM303AGR_ACC_NUMBER_OF_AXES; i++) {
if(devp->config->accsensitivity == NULL)
devp->accsensitivity[i] = LSM303AGR_ACC_SENS_2G;
else
devp->accsensitivity[i] = devp->config->accsensitivity[i];
}
}
else if(devp->config->accfullscale == LSM303AGR_ACC_FS_4G) {
devp->accfullscale = LSM303AGR_ACC_4G;
for(i = 0; i < LSM303AGR_ACC_NUMBER_OF_AXES; i++) {
if(devp->config->accsensitivity == NULL)
devp->accsensitivity[i] = LSM303AGR_ACC_SENS_4G;
else
devp->accsensitivity[i] = devp->config->accsensitivity[i];
}
}
else if(devp->config->accfullscale == LSM303AGR_ACC_FS_8G) {
devp->accfullscale = LSM303AGR_ACC_8G;
for(i = 0; i < LSM303AGR_ACC_NUMBER_OF_AXES; i++) {
if(devp->config->accsensitivity == NULL)
devp->accsensitivity[i] = LSM303AGR_ACC_SENS_8G;
else
devp->accsensitivity[i] = devp->config->accsensitivity[i];
}
}
else if(devp->config->accfullscale == LSM303AGR_ACC_FS_16G) {
devp->accfullscale = LSM303AGR_ACC_16G;
for(i = 0; i < LSM303AGR_ACC_NUMBER_OF_AXES; i++) {
if(devp->config->accsensitivity == NULL)
devp->accsensitivity[i] = LSM303AGR_ACC_SENS_16G;
else
devp->accsensitivity[i] = devp->config->accsensitivity[i];
}
}
else
osalDbgAssert(FALSE, "lsm303dlhcStart(), accelerometer full scale issue");
/* Storing bias information */
if(devp->config->accbias != NULL)
for(i = 0; i < LSM303AGR_ACC_NUMBER_OF_AXES; i++)
devp->accbias[i] = devp->config->accbias[i];
else
for(i = 0; i < LSM303AGR_ACC_NUMBER_OF_AXES; i++)
devp->accbias[i] = LSM303AGR_ACC_BIAS;
#if LSM303AGR_SHARED_I2C
i2cAcquireBus((devp)->config->i2cp);
#endif /* LSM303AGR_SHARED_I2C */
@ -798,17 +847,20 @@ void lsm303agrStart(LSM303AGRDriver *devp, const LSM303AGRConfig *config) {
i2cReleaseBus((devp)->config->i2cp);
#endif /* LSM303AGR_SHARED_I2C */
devp->compfullscale = LSM303AGR_COMP_50GA;
for(i = 0; i < LSM303AGR_COMP_NUMBER_OF_AXES; i++) {
if(devp->config->compsensitivity == NULL) {
devp->compsensitivity[i] = LSM303AGR_COMP_SENS_50GA;
}
else {
devp->compsensitivity[i] = devp->config->compsensitivity[i];
}
}
/* This is the MEMS transient recovery time */
osalThreadSleepMilliseconds(5);
devp->state = LSM303AGR_READY;
/* Configuring sensitivity and bias of accelerometer.*/
acc_reset_sensivity(&(devp->acc_if));
acc_reset_bias(&(devp->acc_if));
/* Configuring sensitivity and bias of compass.*/
comp_reset_sensivity(&(devp->comp_if));
comp_reset_bias(&(devp->comp_if));
}
/**