summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2014-07-31 10:39:52 +0100
committerDamien George <damien.p.george@gmail.com>2014-07-31 10:39:52 +0100
commitfa1ecda3fdaecd89b86bb63930a6521c8f63fe90 (patch)
tree48b51006e2f91d1a9ed2010769ec3336c750339d
parent3c4db9f91c01211aed47afe3efdd11477badc0bc (diff)
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.
-rw-r--r--stmhal/accel.c15
1 files 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);
}
/******************************************************************************/