lsm303agr: check WHO_AM_I first, release bus if device is not detected
This commit is contained in:
parent
16394c1650
commit
66ca8833c1
|
@ -787,6 +787,22 @@ msg_t lsm303agrStart(LSM303AGRDriver *devp, const LSM303AGRConfig *config) {
|
||||||
|
|
||||||
devp->config = config;
|
devp->config = config;
|
||||||
|
|
||||||
|
#if (LSM303AGR_SHARED_I2C == TRUE) || (LSM303AGR_SHARED_SPI == TRUE)
|
||||||
|
lsm303agrAccureBus(devp->config);
|
||||||
|
#endif /* LSM303AGR_SHARED_I2C || LSM303AGR_SHARED_SPI */
|
||||||
|
lsm303agrStartBus(devp->config);
|
||||||
|
|
||||||
|
/* Check WHO_I_AM */
|
||||||
|
lsm303agrReadRegister(devp->config, LSM303AGR_SAD_ACC,
|
||||||
|
LSM303AGR_AD_WHO_AM_I_A, &devid, 1);
|
||||||
|
if (devid != 0x33)
|
||||||
|
{
|
||||||
|
#if (LSM303AGR_SHARED_I2C == TRUE) || (LSM303AGR_SHARED_SPI == TRUE)
|
||||||
|
lsm303agrReleaseBus(devp->config);
|
||||||
|
#endif /* LSM303AGR_SHARED_I2C || LSM303AGR_SHARED_SPI */
|
||||||
|
return MSG_RESET;
|
||||||
|
}
|
||||||
|
|
||||||
/* Configuring Accelerometer subsystem.*/
|
/* Configuring Accelerometer subsystem.*/
|
||||||
|
|
||||||
/* Control register 1 configuration block.*/
|
/* Control register 1 configuration block.*/
|
||||||
|
@ -867,19 +883,6 @@ msg_t lsm303agrStart(LSM303AGRDriver *devp, const LSM303AGRConfig *config) {
|
||||||
for(i = 0; i < LSM303AGR_ACC_NUMBER_OF_AXES; i++)
|
for(i = 0; i < LSM303AGR_ACC_NUMBER_OF_AXES; i++)
|
||||||
devp->accbias[i] = LSM303AGR_ACC_BIAS;
|
devp->accbias[i] = LSM303AGR_ACC_BIAS;
|
||||||
|
|
||||||
#if (LSM303AGR_SHARED_I2C == TRUE) || (LSM303AGR_SHARED_SPI == TRUE)
|
|
||||||
lsm303agrAccureBus(devp->config);
|
|
||||||
#endif /* LSM303AGR_SHARED_I2C || LSM303AGR_SHARED_SPI */
|
|
||||||
lsm303agrStartBus(devp->config);
|
|
||||||
|
|
||||||
/* Check WHO_I_AM */
|
|
||||||
lsm303agrReadRegister(devp->config, LSM303AGR_SAD_ACC,
|
|
||||||
LSM303AGR_AD_WHO_AM_I_A, &devid, 1);
|
|
||||||
if (devid != 0x33)
|
|
||||||
{
|
|
||||||
return MSG_RESET;
|
|
||||||
}
|
|
||||||
|
|
||||||
lsm303agrWriteRegister(devp->config, LSM303AGR_SAD_ACC,
|
lsm303agrWriteRegister(devp->config, LSM303AGR_SAD_ACC,
|
||||||
LSM303AGR_AD_CTRL_REG1_A, cr, 4);
|
LSM303AGR_AD_CTRL_REG1_A, cr, 4);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue