tidying
This commit is contained in:
parent
509bae290b
commit
31bcd4d12f
26
README.md
26
README.md
@ -4,11 +4,23 @@
|
|||||||
|
|
||||||
```
|
```
|
||||||
$ ./lis3dh
|
$ ./lis3dh
|
||||||
init OK
|
x: 0.5520 g, y: -0.8800 g, z: 0.0760 g, mag: 1.0416
|
||||||
configure OK
|
x: 0.5560 g, y: -0.9000 g, z: -0.0040 g, mag: 1.0579
|
||||||
poll OK
|
x: 0.5840 g, y: -0.8680 g, z: 0.0360 g, mag: 1.0468
|
||||||
read OK
|
x: 0.5440 g, y: -0.8680 g, z: 0.0920 g, mag: 1.0285
|
||||||
x: 0.552, y: -0.864, z: -0.152
|
x: 0.5240 g, y: -0.9000 g, z: -0.0600 g, mag: 1.0432
|
||||||
mag: 1.04
|
x: 0.6040 g, y: -0.8960 g, z: 0.1000 g, mag: 1.0852
|
||||||
deinit OK
|
x: 0.5440 g, y: -0.8680 g, z: 0.0000 g, mag: 1.0244
|
||||||
|
x: 0.5720 g, y: -0.9040 g, z: -0.0160 g, mag: 1.0699
|
||||||
|
x: 0.5480 g, y: -0.8680 g, z: 0.0200 g, mag: 1.0267
|
||||||
|
x: 0.5360 g, y: -0.9120 g, z: 0.0240 g, mag: 1.0581
|
||||||
|
x: 0.5600 g, y: -0.9040 g, z: 0.0000 g, mag: 1.0634
|
||||||
|
x: 0.5960 g, y: -0.8760 g, z: 0.0640 g, mag: 1.0615
|
||||||
|
x: 0.5360 g, y: -0.8960 g, z: -0.0040 g, mag: 1.0441
|
||||||
|
x: 0.5320 g, y: -0.8800 g, z: -0.0080 g, mag: 1.0283
|
||||||
|
x: 0.5520 g, y: -0.9000 g, z: -0.0440 g, mag: 1.0567
|
||||||
|
x: 0.5760 g, y: -0.8800 g, z: 0.0320 g, mag: 1.0522
|
||||||
|
x: 0.5560 g, y: -0.8840 g, z: -0.0240 g, mag: 1.0446
|
||||||
|
x: 0.5120 g, y: -0.9040 g, z: -0.0360 g, mag: 1.0395
|
||||||
|
x: 0.6000 g, y: -0.8720 g, z: 0.0320 g, mag: 1.0590
|
||||||
```
|
```
|
14
lis3dh.c
14
lis3dh.c
@ -32,6 +32,7 @@ int lis3dh_init(lis3dh_t *lis3dh) {
|
|||||||
int lis3dh_configure(lis3dh_t *lis3dh) {
|
int lis3dh_configure(lis3dh_t *lis3dh) {
|
||||||
|
|
||||||
uint8_t ctrl_reg1, ctrl_reg4;
|
uint8_t ctrl_reg1, ctrl_reg4;
|
||||||
|
uint8_t ref;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
|
||||||
/* last 0b111 enables Z, Y and X axis */
|
/* last 0b111 enables Z, Y and X axis */
|
||||||
@ -46,9 +47,19 @@ int lis3dh_configure(lis3dh_t *lis3dh) {
|
|||||||
ctrl_reg4 |= 0x08;
|
ctrl_reg4 |= 0x08;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* set LPen */
|
||||||
|
if (lis3dh->cfg.mode == LIS3DH_MODE_LP) {
|
||||||
|
ctrl_reg1 |= 0b1000;
|
||||||
|
}
|
||||||
|
|
||||||
err |= lis3dh->dev.write(REG_CTRL_REG1, ctrl_reg1);
|
err |= lis3dh->dev.write(REG_CTRL_REG1, ctrl_reg1);
|
||||||
err |= lis3dh->dev.write(REG_CTRL_REG4, ctrl_reg4);
|
err |= lis3dh->dev.write(REG_CTRL_REG4, ctrl_reg4);
|
||||||
|
|
||||||
|
/* read REFERENCE to clear internal filter struct */
|
||||||
|
err |= lis3dh->dev.read(REG_REFERENCE, &ref, 1);
|
||||||
|
|
||||||
|
/* sleep for a period TBD ~ ODR */
|
||||||
|
lis3dh->dev.sleep(5000); /* 5 ms */
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,7 +132,7 @@ static uint8_t acc_sensitivity(lis3dh_t *lis3dh) {
|
|||||||
if (mode == LIS3DH_MODE_LP) {
|
if (mode == LIS3DH_MODE_LP) {
|
||||||
return 192;
|
return 192;
|
||||||
} else if (mode == LIS3DH_MODE_NORMAL) {
|
} else if (mode == LIS3DH_MODE_NORMAL) {
|
||||||
return 148;
|
return 48;
|
||||||
} else {
|
} else {
|
||||||
return 12;
|
return 12;
|
||||||
}
|
}
|
||||||
@ -145,6 +156,7 @@ int lis3dh_read(lis3dh_t *lis3dh) {
|
|||||||
have the device auto-increment the address. */
|
have the device auto-increment the address. */
|
||||||
err |= lis3dh->dev.read(REG_OUT_X_L | 0x80, data, 6);
|
err |= lis3dh->dev.read(REG_OUT_X_L | 0x80, data, 6);
|
||||||
|
|
||||||
|
/* x,y,z are now in mg */
|
||||||
x = (((int16_t)((data[0] << 8) | data[1])) >> scale) * sens;
|
x = (((int16_t)((data[0] << 8) | data[1])) >> scale) * sens;
|
||||||
y = (((int16_t)((data[2] << 8) | data[3])) >> scale) * sens;
|
y = (((int16_t)((data[2] << 8) | data[3])) >> scale) * sens;
|
||||||
z = (((int16_t)((data[4] << 8) | data[5])) >> scale) * sens;
|
z = (((int16_t)((data[4] << 8) | data[5])) >> scale) * sens;
|
||||||
|
1
lis3dh.h
1
lis3dh.h
@ -4,6 +4,7 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
/* rates */
|
/* rates */
|
||||||
|
#define LIS3DH_ODR_POWEROFF 0b0000
|
||||||
#define LIS3DH_ODR_1_HZ 0b0001
|
#define LIS3DH_ODR_1_HZ 0b0001
|
||||||
#define LIS3DH_ODR_10_HZ 0b0010
|
#define LIS3DH_ODR_10_HZ 0b0010
|
||||||
#define LIS3DH_ODR_25_HZ 0b0011
|
#define LIS3DH_ODR_25_HZ 0b0011
|
||||||
|
32
main.c
32
main.c
@ -23,31 +23,33 @@ int main() {
|
|||||||
lis.dev.deinit = i2c_deinit;
|
lis.dev.deinit = i2c_deinit;
|
||||||
|
|
||||||
|
|
||||||
if (!lis3dh_init(&lis)) {
|
if (lis3dh_init(&lis)) {
|
||||||
puts("init OK");
|
puts("init ERR");
|
||||||
}
|
}
|
||||||
|
|
||||||
lis.cfg.mode = LIS3DH_MODE_NORMAL;
|
lis.cfg.mode = LIS3DH_MODE_NORMAL;
|
||||||
lis.cfg.range = LIS3DH_FS_2G;
|
lis.cfg.range = LIS3DH_FS_2G;
|
||||||
lis.cfg.rate = LIS3DH_ODR_100_HZ;
|
lis.cfg.rate = LIS3DH_ODR_100_HZ;
|
||||||
|
|
||||||
if (!lis3dh_configure(&lis)) {
|
if (lis3dh_configure(&lis)) {
|
||||||
puts("configure OK");
|
puts("configure ERR");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!lis3dh_poll(&lis)) {
|
for(int i=0; i<100; i++) {
|
||||||
puts("poll OK");
|
if (lis3dh_poll(&lis)) {
|
||||||
|
puts("poll ERR");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lis3dh_read(&lis)) {
|
||||||
|
puts("read ERR");
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("x: % 04.04f g, y: % 04.04f g, z: % 04.04f g, mag:% 04.04f\n",
|
||||||
|
lis.acc.x, lis.acc.y, lis.acc.z, accel_mag(&lis));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!lis3dh_read(&lis)) {
|
if (lis3dh_deinit(&lis)) {
|
||||||
puts("read OK");
|
puts("deinit ERR");
|
||||||
}
|
|
||||||
|
|
||||||
printf("x: %.3g, y: %.3g, z: %.3g\n", lis.acc.x, lis.acc.y, lis.acc.z);
|
|
||||||
printf("mag: %.3g\n", accel_mag(&lis));
|
|
||||||
|
|
||||||
if (!lis3dh_deinit(&lis)) {
|
|
||||||
puts("deinit OK");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user