From fa1ecda3fdaecd89b86bb63930a6521c8f63fe90 Mon Sep 17 00:00:00 2001 From: Damien George <damien.p.george@gmail.com> Date: Thu, 31 Jul 2014 10:39:52 +0100 Subject: [PATCH] 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. --- stmhal/accel.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/stmhal/accel.c b/stmhal/accel.c index cfc80f9d3..e846ca4e7 100644 --- a/stmhal/accel.c +++ b/stmhal/accel.c @@ -83,11 +83,11 @@ STATIC void accel_start(void) { I2CHandle1.Init.OwnAddress2 = 0xfe; // unused 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 - HAL_Delay(20); + HAL_Delay(30); GPIOB->BSRRL = GPIO_PIN_5; // turn on - HAL_Delay(20); + HAL_Delay(30); HAL_StatusTypeDef status; @@ -100,11 +100,12 @@ STATIC void accel_start(void) { } } - //printf("MemWrite\n"); - uint8_t data[1]; - data[0] = 1; // active mode + // set MMA to active mode + uint8_t data[1] = {1}; // active mode 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); } /******************************************************************************/ -- GitLab