From 377dc48c7f68f460ec278ed78136ee144361e65c Mon Sep 17 00:00:00 2001
From: Andrea Milluzzo <andrea.milluzzo@skywarder.eu>
Date: Thu, 28 May 2020 14:33:16 +0200
Subject: [PATCH] [LSM9DS1] timestamp problem not fixed. for more than
 fifo_watermark samples for each fifo sampling.

---
 src/shared/sensors/LSM9DS1/LSM9DS1_AxelGyro.cpp |  2 +-
 src/tests/drivers/test-lsm9ds1-fifo.cpp         | 13 +++++++------
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/src/shared/sensors/LSM9DS1/LSM9DS1_AxelGyro.cpp b/src/shared/sensors/LSM9DS1/LSM9DS1_AxelGyro.cpp
index 6ff0b898f..6ef5aa228 100644
--- a/src/shared/sensors/LSM9DS1/LSM9DS1_AxelGyro.cpp
+++ b/src/shared/sensors/LSM9DS1/LSM9DS1_AxelGyro.cpp
@@ -236,7 +236,7 @@ bool LSM9DS1_XLG::onSimpleUpdate()
         }
 
         // compute delta time for each sample
-        uint64_t dt = delta / fifo_watermark;
+        uint64_t dt = delta / last_fifo_level;
         fifo_num++;
 
         // convert & store
diff --git a/src/tests/drivers/test-lsm9ds1-fifo.cpp b/src/tests/drivers/test-lsm9ds1-fifo.cpp
index 26e2f0979..3457b84e3 100644
--- a/src/tests/drivers/test-lsm9ds1-fifo.cpp
+++ b/src/tests/drivers/test-lsm9ds1-fifo.cpp
@@ -62,7 +62,7 @@ static const uint8_t FIFO_WATERMARK       = 12;
 static const uint16_t FIFO_SAMPLES        = 1000;
 static const uint8_t TEMP_DIV_FREQ        = 20;
 static const uint16_t MAG_SAMPLING_PERIOD = 10;  // 100Hz
-static const uint16_t FIFO_SAMPLING_PERIOD = 25.5 * 1000 / 476.0f;
+static const uint16_t FIFO_SAMPLING_PERIOD = 84;
 
 // High Resolution hardware timer using TIM5
 HardwareTimer<uint32_t> hrclock(
@@ -124,7 +124,7 @@ int main()
 
     lsm9ds1_xlg = new LSM9DS1_XLG(bus, cs_XLG, LSM9DS1_XLG::AxelFSR::FS_8,
                                   LSM9DS1_XLG::GyroFSR::FS_245,
-                                  LSM9DS1_XLG::ODR::ODR_952, TEMP_DIV_FREQ);
+                                  LSM9DS1_XLG::ODR::ODR_238, TEMP_DIV_FREQ);
 
     lsm9ds1_m = new LSM9DS1_M(bus, cs_M, LSM9DS1_M::MagFSR::FS_8,
                               LSM9DS1_M::ODR::ODR_80);
@@ -150,10 +150,11 @@ int main()
         // an interrupt is set: time to dump the FIFO
         
         //if (miosix::getTick() - lastFifotick >= FIFO_SAMPLING_PERIOD)
-        if (flagSPIReadRequest)
+        //if (flagSPIReadRequest)
+        if ((miosix::getTick() - lastFifotick >= FIFO_SAMPLING_PERIOD) && flagSPIReadRequest == true)
         {
             flagSPIReadRequest = false;
-            //lastFifotick = miosix::getTick();
+            lastFifotick = miosix::getTick();
             // dump the fifo
             lsm9ds1_xlg->onSimpleUpdate();
 
@@ -165,8 +166,8 @@ int main()
                 logger.log(XLGsample);
                 LED2.low();
             }
-                //lsm9ds1debug debugstats = lsm9ds1_xlg->getFIFOStats();
-                //logger.log(debugstats);
+                lsm9ds1debug debugstats = lsm9ds1_xlg->getFIFOStats();
+                logger.log(debugstats);
 
             if (lastTempcount == TEMP_DIV_FREQ)
             {
-- 
GitLab