From ca4b1e99e247029fb2563898cc17373eb61d1aec Mon Sep 17 00:00:00 2001 From: rtlopez Date: Sat, 20 Apr 2024 23:59:14 +0200 Subject: [PATCH] imu sync single core + code tidy + cpu total --- docs/calculations.ods | Bin 55357 -> 52075 bytes lib/Espfc/src/Cli.h | 1 + lib/{Hal/src/Hal.h => Espfc/src/Hal/Pgm.h} | 8 +-- lib/Espfc/src/Model.h | 2 - lib/Espfc/src/Msp/Msp.h | 4 +- lib/Espfc/src/Sensor/GyroSensor.cpp | 9 --- lib/Espfc/src/Sensor/GyroSensor.h | 1 - lib/Espfc/src/SensorManager.cpp | 72 ++++++++------------- lib/Espfc/src/Stats.h | 5 +- lib/Hal/library.json | 3 - test/test_esc/test_esc.cpp | 1 - test/test_input_crsf/test_input_crsf.cpp | 1 - test/test_math/test_math.cpp | 6 +- 13 files changed, 41 insertions(+), 72 deletions(-) rename lib/{Hal/src/Hal.h => Espfc/src/Hal/Pgm.h} (78%) delete mode 100644 lib/Hal/library.json diff --git a/docs/calculations.ods b/docs/calculations.ods index 66bdd17917afabc71db6a80847576ce6e6d47696..7c0930d1bc52ffb340883a7d9b2c4a17c73b17fb 100644 GIT binary patch delta 45477 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 delta 48702 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

Tk-@ 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�p)0!ep+8kP5E1k|glm6udKk6%qK?5m z&Fnr@#kI^SoxLfzm7;&h7@gO;KMKMmm7&B}1=1R4+y#iT-QOgl^5DnaFXUISOtMR~+d*y2VW; z1#(cr2Afe|D0y<9yKk?}uj(3hsAWi-0dm$wfI&Q)Jw(N$wZ>9)>*rmbFS`==#MEJo>&* z9~i}j@9k|9XB;@4-94`?Q|!C*T>Mz>bs^ZO`$=d+&)iErZL~^b0V|i$uLdig`WeUn zU@u^gMw~W&d9uc6Kz$lJEN(&e?FXK_eV?D8>MAUzL&jnoqONyfTPbuUkFnmTmWiv; z&$VH%d3iC)MlUa|M(@`r_l-Y(g3s+MKg|XH9hLufm;H7nE`QG!kun&RVs$tgltr4G z>Hr&Rd|h^On?o-4tsYPa zd=ZrbyURM~-`Wgl1!?Z83p6o@bc`_F`j#tH53|p=>o1D?~c?v9rM+eh0td(%AM=wC7DD3yUypY6pr}~EMW=s z`2+{7K?83Q+k%zV5-3t>E+gqp$@EegK__fmHQnKD(HVm(mgy74ToP`k)zmC-Z0d~L zxMCUM_*wVC#Dq=Q!?yGg>lGbmyNR8pNi=#?R21!T?a8a*+BIf0Y7FdlFa?XY;7wHC z-f!k^@QUn@ajd3533(VH%H0zz!MBC^~fTXwkw0lg&x$ru2@_h{PVS@6Ic}5v*{iV59ve3oa)W1ryO zbD#sk=TzkYVLMo`AjnF*rR4sQ>7rD7k%A+Kgan31j z(avUe17iaC$!N1Mwo)X{FihCS-_~T@=L<3{M?%QZ6URNupiLuu2zJn;5fwxyh}f7E z_{YW9I#YFbUq^oerV*oU*3*vkG^B!(lAW4;4P%6NE{GlhNxE4e7$f%`QUQ=HNUV=s z>$~g!__>bDj?$gYlOV`0w@Oi8t3Yp*j6F-%^0h$E_4TvLxWt3}r;6n`+rylbTj9V7 zbLA<*{2%nDBQwoxCaa6KFpa|+6r`X|V_6I%VbexAF)QWIRBa7<$zFnWejpqZZcOkM zpE^9lmlgXPvO#K8>KZ~FdXTXRCC~*5`0{FgUJ!kRoea+Dl2CE$94i+u&OmDbmLa

{2A)aHIJ}h&E;S&phLvQfX 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 E8~-{|X}l&Z0yuHQXD-8e9Msz4lk4FzKg diff --git a/lib/Espfc/src/Cli.h b/lib/Espfc/src/Cli.h index e3958cae..574161b0 100644 --- a/lib/Espfc/src/Cli.h +++ b/lib/Espfc/src/Cli.h @@ -9,6 +9,7 @@ #include "Logger.h" #include "Device/GyroDevice.h" #include "platform.h" +#include "Hal/Pgm.h" #if defined(ESPFC_WIFI_ALT) #include diff --git a/lib/Hal/src/Hal.h b/lib/Espfc/src/Hal/Pgm.h similarity index 78% rename from lib/Hal/src/Hal.h rename to lib/Espfc/src/Hal/Pgm.h index b5d9c236..624a3acf 100644 --- a/lib/Hal/src/Hal.h +++ b/lib/Espfc/src/Hal/Pgm.h @@ -1,5 +1,4 @@ -#ifndef _HAL_H_ -#define _HAL_H_ +#pragma once #ifdef UNIT_TEST @@ -20,7 +19,6 @@ #endif // UNIT_TEST -#undef max -#undef min +//#undef max +//#undef min -#endif // _HAL_H_ diff --git a/lib/Espfc/src/Model.h b/lib/Espfc/src/Model.h index e82a5518..4a18ba54 100644 --- a/lib/Espfc/src/Model.h +++ b/lib/Espfc/src/Model.h @@ -3,9 +3,7 @@ #include #include - #include -#include #include "Debug_Espfc.h" #include "ModelConfig.h" diff --git a/lib/Espfc/src/Msp/Msp.h b/lib/Espfc/src/Msp/Msp.h index 549741db..e8c1724d 100644 --- a/lib/Espfc/src/Msp/Msp.h +++ b/lib/Espfc/src/Msp/Msp.h @@ -1,8 +1,8 @@ #ifndef _ESPFC_MSP_MSP_H_ #define _ESPFC_MSP_MSP_H_ -#include -#include +#include +#include "Hal/Pgm.h" extern "C" { #include "msp/msp_protocol.h" diff --git a/lib/Espfc/src/Sensor/GyroSensor.cpp b/lib/Espfc/src/Sensor/GyroSensor.cpp index 28ff5989..b877e847 100644 --- a/lib/Espfc/src/Sensor/GyroSensor.cpp +++ b/lib/Espfc/src/Sensor/GyroSensor.cpp @@ -59,15 +59,6 @@ int GyroSensor::begin() return 1; } -int GyroSensor::update() -{ - int status = read(); - - if (status) filter(); - - return status; -} - int GyroSensor::read() { if (!_model.gyroActive()) return 0; diff --git a/lib/Espfc/src/Sensor/GyroSensor.h b/lib/Espfc/src/Sensor/GyroSensor.h index e26130ca..8652e4b4 100644 --- a/lib/Espfc/src/Sensor/GyroSensor.h +++ b/lib/Espfc/src/Sensor/GyroSensor.h @@ -22,7 +22,6 @@ class GyroSensor: public BaseSensor GyroSensor(Model& model); int begin(); - int update() FAST_CODE_ATTR; int read() FAST_CODE_ATTR; int filter() FAST_CODE_ATTR; void postLoop(); diff --git a/lib/Espfc/src/SensorManager.cpp b/lib/Espfc/src/SensorManager.cpp index 9dacc6c2..a1cada94 100644 --- a/lib/Espfc/src/SensorManager.cpp +++ b/lib/Espfc/src/SensorManager.cpp @@ -18,40 +18,27 @@ int SensorManager::begin() int SensorManager::read() { - int ret = 0; _gyro.read(); + if(_model.state.loopTimer.syncTo(_model.state.gyroTimer)) { - ret = 1; _model.state.appQueue.send(Event(EVENT_GYRO_READ)); } - int status = 0; if(_model.state.accelTimer.syncTo(_model.state.gyroTimer)) { - status = _accel.update(); - if(status) - { - _model.state.appQueue.send(Event(EVENT_ACCEL_READ)); - } + _accel.update(); + _model.state.appQueue.send(Event(EVENT_ACCEL_READ)); + return 1; } - if (!status) - { - status = _mag.update(); - } + if(_mag.update()) return 1; - if(!status) - { - status = _baro.update(); - } + if(_baro.update()) return 1; - if(!status) - { - status = _voltage.update(); - } + if(_voltage.update()) return 1; - return ret; + return 0; } int SensorManager::preLoop() @@ -79,45 +66,40 @@ int SensorManager::fusion() // main task int SensorManager::update() { - int status = _gyro.update(); - - if(_model.state.gyroBiasSamples == 0) - { - _model.state.gyroBiasSamples = -1; - _fusion.restoreGain(); - } - - return status; + _gyro.read(); + return preLoop(); } // sub task int SensorManager::updateDelayed() { _gyro.postLoop(); - int status = _accel.update(); + + // update at most one sensor besides gyro + int status = 0; + if(_model.state.accelTimer.syncTo(_model.state.gyroTimer)) + { + _accel.update(); + status = 1; + } + + // delay imu update to next cycle if(_fusionUpdate) { _fusionUpdate = false; _fusion.update(); } - _fusionUpdate = status; // update in next loop cycle + _fusionUpdate = status; - if(!status) - { - status = _mag.update(); - } + if(status) return 1; - if(!status) - { - status = _baro.update(); - } + if(_mag.update()) return 1; - if(!status) - { - _voltage.update(); - } + if(_baro.update()) return 1; + + if(_voltage.update()) return 0; - return status; + return 0; } } diff --git a/lib/Espfc/src/Stats.h b/lib/Espfc/src/Stats.h index 0a16c777..4dabb6f5 100644 --- a/lib/Espfc/src/Stats.h +++ b/lib/Espfc/src/Stats.h @@ -154,8 +154,9 @@ class Stats float getCpuLoad() const { - float load = std::max(getLoad(COUNTER_CPU_0), getLoad(COUNTER_CPU_1)); - return load; + float maxLoad = std::max(getLoad(COUNTER_CPU_0), getLoad(COUNTER_CPU_1)); + float minLoad = std::min(getLoad(COUNTER_CPU_0), getLoad(COUNTER_CPU_1)); + return 0.7f * maxLoad + 0.3f * minLoad; } float getCpuTime() const diff --git a/lib/Hal/library.json b/lib/Hal/library.json deleted file mode 100644 index 00f5d9e1..00000000 --- a/lib/Hal/library.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "name": "Hal" -} diff --git a/test/test_esc/test_esc.cpp b/test/test_esc/test_esc.cpp index 2173d6b0..e5b7d48d 100644 --- a/test/test_esc/test_esc.cpp +++ b/test/test_esc/test_esc.cpp @@ -1,7 +1,6 @@ #include #include #include -#include #include #include #include "msp/msp_protocol.h" diff --git a/test/test_input_crsf/test_input_crsf.cpp b/test/test_input_crsf/test_input_crsf.cpp index 8442336f..6103b5a4 100644 --- a/test/test_input_crsf/test_input_crsf.cpp +++ b/test/test_input_crsf/test_input_crsf.cpp @@ -2,7 +2,6 @@ #include #include "Device/InputCRSF.h" #include -#include #include #include #include "msp/msp_protocol.h" diff --git a/test/test_math/test_math.cpp b/test/test_math/test_math.cpp index 857d6a6d..cef46ec9 100644 --- a/test/test_math/test_math.cpp +++ b/test/test_math/test_math.cpp @@ -1,6 +1,5 @@ #include #include -#include #include #include #include "msp/msp_protocol.h" @@ -128,10 +127,15 @@ void test_math_bits_msb() void test_math_clock_align() { + TEST_ASSERT_EQUAL_INT( 250, Math::alignToClock(1000, 332)); + TEST_ASSERT_EQUAL_INT( 333, Math::alignToClock(1000, 333)); + TEST_ASSERT_EQUAL_INT( 333, Math::alignToClock(1000, 334)); TEST_ASSERT_EQUAL_INT( 333, Math::alignToClock(1000, 400)); TEST_ASSERT_EQUAL_INT( 500, Math::alignToClock(1000, 500)); TEST_ASSERT_EQUAL_INT( 500, Math::alignToClock(1000, 800)); TEST_ASSERT_EQUAL_INT(1000, Math::alignToClock(1000, 2000)); + TEST_ASSERT_EQUAL_INT( 500, Math::alignToClock(8000, 500)); + TEST_ASSERT_EQUAL_INT( 476, Math::alignToClock(6667, 500)); } void test_math_peak_detect_full()