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