stmhal, accel: Increase start-up times to 30ms; add extra 30ms delay.
For accel to start-up reliably, need to wait 30ms between on/off, and 30ms for it to enter active mode. With this fix the accel can be read immediately after initialising it. Addresses issue #763.
This commit is contained in:
parent
3c4db9f91c
commit
fa1ecda3fd
@ -83,11 +83,11 @@ STATIC void accel_start(void) {
|
|||||||
I2CHandle1.Init.OwnAddress2 = 0xfe; // unused
|
I2CHandle1.Init.OwnAddress2 = 0xfe; // unused
|
||||||
i2c_init(&I2CHandle1);
|
i2c_init(&I2CHandle1);
|
||||||
|
|
||||||
// turn off AVDD, wait 20ms, turn on AVDD, wait 20ms again
|
// turn off AVDD, wait 30ms, turn on AVDD, wait 30ms again
|
||||||
GPIOB->BSRRH = GPIO_PIN_5; // turn off
|
GPIOB->BSRRH = GPIO_PIN_5; // turn off
|
||||||
HAL_Delay(20);
|
HAL_Delay(30);
|
||||||
GPIOB->BSRRL = GPIO_PIN_5; // turn on
|
GPIOB->BSRRL = GPIO_PIN_5; // turn on
|
||||||
HAL_Delay(20);
|
HAL_Delay(30);
|
||||||
|
|
||||||
HAL_StatusTypeDef status;
|
HAL_StatusTypeDef status;
|
||||||
|
|
||||||
@ -100,11 +100,12 @@ STATIC void accel_start(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//printf("MemWrite\n");
|
// set MMA to active mode
|
||||||
uint8_t data[1];
|
uint8_t data[1] = {1}; // active mode
|
||||||
data[0] = 1; // active mode
|
|
||||||
status = HAL_I2C_Mem_Write(&I2CHandle1, MMA_ADDR, MMA_REG_MODE, I2C_MEMADD_SIZE_8BIT, data, 1, 200);
|
status = HAL_I2C_Mem_Write(&I2CHandle1, MMA_ADDR, MMA_REG_MODE, I2C_MEMADD_SIZE_8BIT, data, 1, 200);
|
||||||
//printf(" got %d\n", status);
|
|
||||||
|
// wait for MMA to become active
|
||||||
|
HAL_Delay(30);
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user