diff options
| -rw-r--r-- | apps/accelerometer-test/app.c | 8 | ||||
| -rw-r--r-- | movement/watch_faces/sensor/accelerometer_data_acquisition_face.c | 12 | ||||
| -rw-r--r-- | watch-library/shared/driver/lis2dw.c | 4 | 
3 files changed, 14 insertions, 10 deletions
diff --git a/apps/accelerometer-test/app.c b/apps/accelerometer-test/app.c index 4a64e355..a52fbbfd 100644 --- a/apps/accelerometer-test/app.c +++ b/apps/accelerometer-test/app.c @@ -36,10 +36,10 @@ void app_init(void) {      watch_enable_i2c();      lis2dw_begin(); -    lis2dw_set_low_power_mode(LIS2DW_LP_MODE_2); // lowest power 14-bit mode, 25 Hz is 3.5 µA @ 1.8V w/ low noise, 3µA without -    lis2dw_set_low_noise_mode(true); // consumes a little more power -    lis2dw_set_range(LIS2DW_CTRL6_VAL_RANGE_4G); -    lis2dw_set_data_rate(LIS2DW_DATA_RATE_25_HZ); // is this enough for training? +    lis2dw_set_data_rate(LIS2DW_DATA_RATE_25_HZ); +    lis2dw_set_range(LIS2DW_RANGE_4_G); +    lis2dw_set_low_noise_mode(true); +    lis2dw_enable_fifo();      lis2dw_enable_fifo(); diff --git a/movement/watch_faces/sensor/accelerometer_data_acquisition_face.c b/movement/watch_faces/sensor/accelerometer_data_acquisition_face.c index d965ec2e..ea50ad27 100644 --- a/movement/watch_faces/sensor/accelerometer_data_acquisition_face.c +++ b/movement/watch_faces/sensor/accelerometer_data_acquisition_face.c @@ -28,6 +28,7 @@  static const char activity_types[][3] = {      "ID",   // Idle +    "OF",   // Off-wrist      "SL",   // Sleeping      "WH",   // Washing Hands      "WA",   // Walking @@ -281,7 +282,13 @@ static void advance_current_setting(accelerometer_data_acquisition_state_t *stat  static void start_reading(accelerometer_data_acquisition_state_t *state) {      (void) state; -    printf("TODO: Activate I2C bus and turn on accelerometer\n"); +    watch_enable_i2c(); +    lis2dw_begin(); +    lis2dw_set_data_rate(LIS2DW_DATA_RATE_25_HZ); +    lis2dw_set_range(LIS2DW_RANGE_4_G); +    lis2dw_set_low_noise_mode(true); +    lis2dw_enable_fifo(); +      printf("TODO: Write header\n");  } @@ -301,5 +308,6 @@ static void finish_reading(accelerometer_data_acquisition_state_t *state) {          state->next_available_page++;          state->pos = 0;      } -    printf("TODO: Turn off accelerometer and disable I2C bus\n"); +    lis2dw_set_data_rate(LIS2DW_DATA_RATE_POWERDOWN); +    watch_disable_i2c();  } diff --git a/watch-library/shared/driver/lis2dw.c b/watch-library/shared/driver/lis2dw.c index f273fab3..0b788fca 100644 --- a/watch-library/shared/driver/lis2dw.c +++ b/watch-library/shared/driver/lis2dw.c @@ -31,12 +31,8 @@ bool lis2dw_begin(void) {      }      watch_i2c_write8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL2, LIS2DW_CTRL2_VAL_BOOT);      watch_i2c_write8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL2, LIS2DW_CTRL2_VAL_SOFT_RESET); -    // Start at lowest possible data rate and lowest possible power mode -    watch_i2c_write8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL1, LIS2DW_CTRL1_VAL_ODR_LOWEST | LIS2DW_CTRL1_VAL_MODE_LOW_POWER | LIS2DW_CTRL1_VAL_LPMODE_1);      // Enable block data update (output registers not updated until MSB and LSB have been read) and address autoincrement      watch_i2c_write8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL2, LIS2DW_CTRL2_VAL_BDU | LIS2DW_CTRL2_VAL_IF_ADD_INC); -    // Set range to ±2G -    watch_i2c_write8(LIS2DW_ADDRESS, LIS2DW_REG_CTRL6, LIS2DW_CTRL6_VAL_RANGE_2G);      return true;  }  | 
