diff --git a/sbs.conf b/sbs.conf index dda21f77fe9e1ee94b8ff4105cfd4e719d0d8901..6fb11ea4a1c011f2b6f176d684f27dd20f3509ca 100644 --- a/sbs.conf +++ b/sbs.conf @@ -517,7 +517,7 @@ Main: test-rls Type: test BoardId: stm32f407vg_skyward_tortellino BinName: test-lsm9ds1-fifo -Include: %shared %spi +Include: %shared %spi %logger Defines: -DDEBUG Main: drivers/test-lsm9ds1-fifo @@ -525,6 +525,6 @@ Main: drivers/test-lsm9ds1-fifo Type: test BoardId: stm32f407vg_skyward_tortellino BinName: test-lis3dsh -Include: %shared %spi +Include: %shared %spi Defines: Main: drivers/test-lis3dsh diff --git a/src/shared/diagnostic/SkywardStack.h b/src/shared/diagnostic/SkywardStack.h index 11134a161cde691dc48204e07af230199b919c73..fa6205dc86cc10d48bed09f2f204f215c3cef0b1 100644 --- a/src/shared/diagnostic/SkywardStack.h +++ b/src/shared/diagnostic/SkywardStack.h @@ -25,7 +25,7 @@ #include <algorithm> -static const unsigned int STACK_MIN_FOR_SKYWARD = 16*1024; +static const unsigned int STACK_MIN_FOR_SKYWARD = 4*1024; inline unsigned int skywardStack(unsigned int stack) { diff --git a/src/shared/logger/Logger.h b/src/shared/logger/Logger.h index 0794e0fa6f67f2780226b17ec41612edecce2610..cfbcea6edf03ba2869b8406427d00c408b97fb71 100644 --- a/src/shared/logger/Logger.h +++ b/src/shared/logger/Logger.h @@ -174,12 +174,11 @@ private: log(s); } - static const unsigned int filenameMaxRetry = - 100; ///< Limit on new filename - static const unsigned int maxRecordSize = 256; ///< Limit on logged data - static const unsigned int numRecords = 1024; ///< Size of record queues - static const unsigned int bufferSize = 64 * 1024; ///< Size of each buffer - static const unsigned int numBuffers = 8; ///< Number of buffers + static const unsigned int filenameMaxRetry = 100; ///< Limit on new filename + static const unsigned int maxRecordSize = 64; ///< Limit on logged data + static const unsigned int numRecords = 256; ///< Size of record queues + static const unsigned int bufferSize = 16 * 256; ///< Size of each buffer + static const unsigned int numBuffers = 4; ///< Number of buffers /** * A record is a single serialized logged class. Records are used to diff --git a/src/tests/drivers/test-lsm9ds1-fifo.cpp b/src/tests/drivers/test-lsm9ds1-fifo.cpp index 48c1e4e71d78ed63663912a6e0642db3c635e985..96b420f8868a355c3cea61e05229e294424f9df4 100644 --- a/src/tests/drivers/test-lsm9ds1-fifo.cpp +++ b/src/tests/drivers/test-lsm9ds1-fifo.cpp @@ -26,6 +26,7 @@ #include "drivers/HardwareTimer.h" #include "drivers/spi/SPIDriver.h" #include "sensors/LSM9DS1/LSM9DS1_AxelGyro.h" +#include "diagnostic/CpuMeter.h" #include "logger/Logger.h" using namespace miosix; @@ -64,6 +65,13 @@ volatile uint32_t delta; // LSM9DS1 obj LSM9DS1_XLG* lsm9ds1 = nullptr; +//struct for the logger +struct IMUSample +{ + lsm9ds1XLGSample sample; + int avgCPU; +}; + // Interrupt handlers void __attribute__((naked)) EXTI13_IRQHandler() { @@ -92,8 +100,6 @@ void __attribute__((used)) EXTI13_IRQHandlerImpl() void gpioConfig(); void timer5Config(); void EXTI1Config(); -void fakeLogger(lsm9ds1XLGSample sample); -void printLogger(); int main() { @@ -102,9 +108,10 @@ int main() uint32_t dt; uint64_t timestamp = 0; + Logger& logger = Logger::instance(); + logger.start(); + gpioConfig(); - Thread::sleep(5000); - return 0; timer5Config(); EXTI1Config(); @@ -120,7 +127,6 @@ int main() //start sampling for (;;) { - //printf("%d\n", GpioINT1::value()); if (flagSPIReadRequest && fifo_counter < FIFO_SAMPLES) { flagSPIReadRequest = false; @@ -128,10 +134,12 @@ int main() lsm9ds1->onSimpleUpdate(); for(int i=0 ; i < FIFO_WATERMARK; i++) { - lsm9ds1XLGSample sample = lsm9ds1->getLsm9ds1FIFO()[i]; + IMUSample s; + s.sample = lsm9ds1->getLsm9ds1FIFO()[i]; timestamp += dt; - sample.timestamp = timestamp; - fakeLogger(sample); + s.sample.timestamp = timestamp; + s.avgCPU = averageCpuUtilization(); + logger.log(s); } LED1.low(); fifo_counter++; @@ -143,7 +151,8 @@ int main() } } - printLogger(); + logger.stop(); + LED1.low(); LED2.low(); @@ -222,36 +231,4 @@ void EXTI1Config() // PC13 // Enable the interrupt in the interrupt controller NVIC_EnableIRQ(IRQn_Type::EXTI15_10_IRQn); NVIC_SetPriority(IRQn_Type::EXTI15_10_IRQn, 47); -} - -uint16_t counter = 0; -float ax[FIFO_WATERMARK*FIFO_SAMPLES], - ay[FIFO_WATERMARK*FIFO_SAMPLES], - az[FIFO_WATERMARK*FIFO_SAMPLES], - gx[FIFO_WATERMARK*FIFO_SAMPLES], - gy[FIFO_WATERMARK*FIFO_SAMPLES], - gz[FIFO_WATERMARK*FIFO_SAMPLES]; - -uint64_t t[FIFO_WATERMARK*FIFO_SAMPLES]; - -void fakeLogger(lsm9ds1XLGSample sample) -{ - ax[counter] = sample.axelData.getX(); - ay[counter] = sample.axelData.getY(); - az[counter] = sample.axelData.getZ(); - gx[counter] = sample.gyroData.getX(); - gy[counter] = sample.gyroData.getY(); - gz[counter] = sample.gyroData.getZ(); - t[counter] = sample.timestamp; - counter++; -} - -void printLogger() -{ - for(int i = 0; i < counter; i++) - { - printf("%lld>>%.3f,%.3f,%.3f,%.3f,%.3f,%.3f\n", t[i],ax[i],ay[i],az[i], - gx[i],gy[i],gz[i]); - - } } \ No newline at end of file