Normalized values in Q12
This commit is contained in:
@@ -9,6 +9,8 @@
|
||||
#include "freertos/queue.h"
|
||||
#include "freertos/task.h"
|
||||
|
||||
#include "fixedpoint.h"
|
||||
|
||||
#define BMI160_MAX_WRITE_LEN 32
|
||||
#define BMI160_SAMPLE_QUEUE_LEN 16
|
||||
#define BMI160_QUEUE_MIN_FREE_SLOTS 1
|
||||
@@ -222,12 +224,21 @@ esp_err_t imu_read(const bmi160_t *dev, bmi160_value_t *value)
|
||||
|
||||
uint8_t data[20];
|
||||
ESP_ERROR_CHECK(bmi160_read_registers(dev, BMI160_REG_DATA, data, BMI160_SIZE_REG_DATA));
|
||||
value->acc.x = data[14] | (data[15] << 8);
|
||||
value->acc.y = data[16] | (data[17] << 8);
|
||||
value->acc.z = data[18] | (data[19] << 8);
|
||||
value->gyr.x = data[8] | (data[9] << 8);
|
||||
value->gyr.y = data[10] | (data[11] << 8);
|
||||
value->gyr.z = data[12] | (data[13] << 8);
|
||||
|
||||
int16_t acc_x = data[14] | (data[15] << 8); // unbiased raw
|
||||
int16_t acc_y = data[16] | (data[17] << 8); // unbiased raw
|
||||
int16_t acc_z = data[18] | (data[19] << 8); // unbiased raw
|
||||
int16_t gyr_x = data[8] | (data[9] << 8); // unbiased raw
|
||||
int16_t gyr_y = data[10] | (data[11] << 8); // unbiased raw
|
||||
int16_t gyr_z = data[12] | (data[13] << 8); // unbiased raw
|
||||
|
||||
value->acc.x = FIXED_FROM_RATIO(acc_x, 2048, 12);
|
||||
value->acc.y = FIXED_FROM_RATIO(acc_y, 2048, 12);
|
||||
value->acc.z = FIXED_FROM_RATIO(acc_z, 2048, 12);
|
||||
|
||||
value->gyr.x = FIXED_FROM_RATIO((int32_t)gyr_x * 5, 82, 12);
|
||||
value->gyr.y = FIXED_FROM_RATIO((int32_t)gyr_y * 5, 82, 12);
|
||||
value->gyr.z = FIXED_FROM_RATIO((int32_t)gyr_z * 5, 82, 12);
|
||||
|
||||
uint8_t time[3];
|
||||
ESP_ERROR_CHECK(bmi160_read_registers(dev, BMI160_REG_SENSORTIME, time, BMI160_SIZE_SENSORTIME));
|
||||
|
||||
Reference in New Issue
Block a user