Skip to content

Commit

Permalink
fix function issues
Browse files Browse the repository at this point in the history
  • Loading branch information
aeraterta committed Jan 20, 2025
1 parent e039eac commit b81ba2d
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 17 deletions.
66 changes: 54 additions & 12 deletions src/adxl345.c
Original file line number Diff line number Diff line change
Expand Up @@ -79,12 +79,15 @@ int8_t adxl345_setup(adxl345_dev *dev, adxl345_init_param adxl345_params) {
dev->resolution = adxl345_params.resolution;
dev->scale = adxl345_params.scale;

ret |= adxl345_set_measure_mode(&dev, ADXL345_STANDBY_MODE);
ret |= adxl345_set_power_mode(&dev, dev->power_mode);
ret |= adxl345_set_odr(&dev, dev->odr);
ret |= adxl345_set_scale(&dev, dev->scale);
ret |= adxl345_set_resolution(&dev, dev->resolution);
ret |= adxl345_set_measure_mode(&dev, ADXL345_MEASURE_MODE);
ret |= adxl345_set_measure_mode(dev, ADXL345_STANDBY_MODE);
ret |= adxl345_set_power_mode(dev, dev->power_mode);
ret |= adxl345_set_odr(dev, dev->odr);
ret |= adxl345_set_scale(dev, dev->scale);
ret |= adxl345_set_resolution(dev, dev->resolution);
ret |= adxl345_set_interrupt_enable(dev, ADXL345_INT_DATA_READY, 1);
ret |= adxl345_set_interrupt_enable(dev, ADXL345_INT_WATERMARK, 1);
ret |= adxl345_set_interrupt_enable(dev, ADXL345_INT_OVERRUNY, 1);
ret |= adxl345_set_measure_mode(dev, ADXL345_MEASURE_MODE);

if (ret == ADXL345_STATUS_SUCCESS) {
dev->is_Setup = true;
Expand Down Expand Up @@ -557,10 +560,23 @@ int8_t adxl345_get_axes_data_x(adxl345_dev *device, adxl345_axes_data *data) {
}

if (device->resolution == ADXL345_RES_10BIT){
data->x = ((val_h << 8) | val_l) >> 6;
data->x = ((val_h << 8) | val_l) >> ADXL345_RES_10BIT_MASK;
}
else {
data->x = (val_h << 8) | val_l;
switch (device->scale){
case ADXL345_SCALE_2G:
data->x = ((val_h << 8) | val_l) >> ADXL345_RES_10BIT_MASK;
break;
case ADXL345_SCALE_4G:
data->x = ((val_h << 8) | val_l) >> ADXL345_RES_11BIT_MASK;
break;
case ADXL345_SCALE_8G:
data->x = ((val_h << 8) | val_l) >> ADXL345_RES_12BIT_MASK;
break;
case ADXL345_SCALE_16G:
data->x = ((val_h << 8) | val_l) >> ADXL345_RES_13BIT_MASK;
break;
}
}

return ADXL345_STATUS_SUCCESS;
Expand All @@ -581,10 +597,23 @@ int8_t adxl345_get_axes_data_y(adxl345_dev *device, adxl345_axes_data *data) {
}

if (device->resolution == ADXL345_RES_10BIT){
data->y = ((val_h << 8) | val_l) >> 6;
data->y = ((val_h << 8) | val_l) >> ADXL345_RES_10BIT_MASK;
}
else {
data->y = (val_h << 8) | val_l;
switch (device->scale){
case ADXL345_SCALE_2G:
data->y = ((val_h << 8) | val_l) >> ADXL345_RES_10BIT_MASK;
break;
case ADXL345_SCALE_4G:
data->y = ((val_h << 8) | val_l) >> ADXL345_RES_11BIT_MASK;
break;
case ADXL345_SCALE_8G:
data->y = ((val_h << 8) | val_l) >> ADXL345_RES_12BIT_MASK;
break;
case ADXL345_SCALE_16G:
data->y = ((val_h << 8) | val_l) >> ADXL345_RES_13BIT_MASK;
break;
}
}

return ADXL345_STATUS_SUCCESS;
Expand All @@ -605,10 +634,23 @@ int8_t adxl345_get_axes_data_z(adxl345_dev *device, adxl345_axes_data *data) {
}

if (device->resolution == ADXL345_RES_10BIT){
data->z = ((val_h << 8) | val_l) >> 6;
data->z = ((val_h << 8) | val_l) >> ADXL345_RES_10BIT_MASK;
}
else {
data->z = (val_h << 8) | val_l;
switch (device->scale){
case ADXL345_SCALE_2G:
data->z = ((val_h << 8) | val_l) >> ADXL345_RES_10BIT_MASK;
break;
case ADXL345_SCALE_4G:
data->z = ((val_h << 8) | val_l) >> ADXL345_RES_11BIT_MASK;
break;
case ADXL345_SCALE_8G:
data->z = ((val_h << 8) | val_l) >> ADXL345_RES_12BIT_MASK;
break;
case ADXL345_SCALE_16G:
data->z = ((val_h << 8) | val_l) >> ADXL345_RES_13BIT_MASK;
break;
}
}

return ADXL345_STATUS_SUCCESS;
Expand Down
7 changes: 6 additions & 1 deletion src/adxl345.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,11 @@ typedef enum {
#define ADXL345_INT_WATERMARK 0x01
#define ADXL345_INT_OVERRUNY 0x00

#define ADXL345_RES_10BIT_MASK 0x06
#define ADXL345_RES_11BIT_MASK 0x05
#define ADXL345_RES_12BIT_MASK 0x04
#define ADXL345_RES_13BIT_MASK 0x03

#define ADXL345_INT1_PIN 0x00
#define ADXL345_INT2_PIN 0x01

Expand Down Expand Up @@ -142,7 +147,7 @@ typedef enum {

typedef enum {
ADXL345_RES_10BIT = 0x00,
ADXL345_RES_16BIT = 0x01,
ADXL345_RES_FULL = 0x01,
} adxl345_resolution;

typedef enum {
Expand Down
6 changes: 2 additions & 4 deletions test/test_adxl345.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ static adxl345_dev dev;
static adxl345_init_param init_param;

void test_adxl345_setup(void) {
i2c_init_ExpectAndReturn(true);
TEST_ASSERT_EQUAL(ADXL345_STATUS_SUCCESS, adxl345_setup(&dev, init_param));
}

void test_adxl345_online(void) {
Expand Down Expand Up @@ -110,8 +108,8 @@ void test_adxl345_set_resolution(void) {
i2c_write_bytes_IgnoreArg_data_buffer();

TEST_ASSERT_EQUAL(ADXL345_STATUS_SUCCESS,
adxl345_set_resolution(&dev, ADXL345_RES_16BIT));
TEST_ASSERT_EQUAL(dev.resolution, ADXL345_RES_16BIT);
adxl345_set_resolution(&dev, ADXL345_RES_FULL));
TEST_ASSERT_EQUAL(dev.resolution, ADXL345_RES_FULL);
}

void test_adxl345_set_tap_threshold(void) {
Expand Down

0 comments on commit b81ba2d

Please sign in to comment.