diff --git a/.gitea/graph-16g.png b/.gitea/graph-16g.png index 7f23c2b..f026fa3 100644 Binary files a/.gitea/graph-16g.png and b/.gitea/graph-16g.png differ diff --git a/.gitea/graph-2g.png b/.gitea/graph-2g.png index b3b53a5..e877b1c 100644 Binary files a/.gitea/graph-2g.png and b/.gitea/graph-2g.png differ diff --git a/.gitea/graph-4g.png b/.gitea/graph-4g.png index 19f62f2..c066c1f 100644 Binary files a/.gitea/graph-4g.png and b/.gitea/graph-4g.png differ diff --git a/.gitea/graph-8g.png b/.gitea/graph-8g.png index ecf345e..58211ea 100644 Binary files a/.gitea/graph-8g.png and b/.gitea/graph-8g.png differ diff --git a/README.md b/README.md index 14aeb5e..399b163 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,10 @@ x: 0.5480, y: -0.8800, z: -0.0720 mag: 1.0392 x: 0.5480, y: -0.8800, z: -0.0800 mag: 1.0398 x: 0.5480, y: -0.8960, z: -0.0960 mag: 1.0547 ``` + +> ### Notes +> FIFO is always and only 10-bit + ### Noise at 2G ![DC noise at 2G](.gitea/graph-2g.png) diff --git a/lis3dh.c b/lis3dh.c index c55a726..8ee185a 100644 --- a/lis3dh.c +++ b/lis3dh.c @@ -294,8 +294,19 @@ int lis3dh_read_fifo(lis3dh_t *lis3dh, struct lis3dh_fifo_data *fifo) { int err = 0; int i, idx; - scale = acc_shift(lis3dh); - sens = acc_sensitivity(lis3dh); + /* FIFO is always 10-bit */ + scale = 6; + + /* normal mode */ + if (lis3dh->cfg.range == LIS3DH_FS_2G) { + sens = 4; + } else if (lis3dh->cfg.range == LIS3DH_FS_4G) { + sens = 8; + } else if (lis3dh->cfg.range == LIS3DH_FS_8G) { + sens = 16; + } else { /* 16G */ + sens = 48; + } /* fifo buffer is max 32 */ fifo->size = lis3dh->cfg.fifo.fth > 32 ? 32 : lis3dh->cfg.fifo.fth; diff --git a/plot.gp b/plot.gp index d64880e..6686452 100644 --- a/plot.gp +++ b/plot.gp @@ -7,20 +7,17 @@ set key box opaque set ylabel "|[x y z]| - 1g" set xlabel "Samples over time" -set yrange [-0.2:0.2] +set yrange [-0.3:0.1] n(g) = g - 1.0 do for [g in "2g 4g 8g 16g"] { name = sprintf("graph-%s", g) out = sprintf("%s.png", name) - stub = sprintf("data/hr_%s_", g) - set title sprintf("[%s + HR] comparison of ODR setting effect on magnitude of [x y z] acc vector (- 1g)", g) + stub = sprintf("data/fifo_%s_", g) + set title sprintf("[%s FIFO] comparison of ODR setting effect on magnitude of [x y z] acc vector (- 1g)", g) set output out - plot stub."1.txt" u n(4) w p ps 0.3 t "1 Hz", \ - stub."10.txt" u n(4) w p ps 0.3 t "10 Hz", \ - stub."25.txt" u n(4) w p ps 0.3 t "25 Hz", \ - stub."50.txt" u n(4) w p ps 0.3 t "50 Hz", \ + plot stub."50.txt" u n(4) w p ps 0.3 t "50 Hz", \ stub."100.txt" u n(4) w p ps 0.3 t "100 Hz", \ stub."200.txt" u n(4) w p ps 0.3 t "200 Hz", \ stub."400.txt" u n(4) w p ps 0.3 t "400 Hz", \