mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-25 01:05:27 +03:00
Merge pull request #9803 from fgiudice98/blackbox-freq-cms
This commit is contained in:
commit
a0f6a91033
8 changed files with 106 additions and 55 deletions
|
@ -60,7 +60,7 @@ gyroDev_t gyroDev;
|
|||
|
||||
TEST(BlackboxTest, TestInitIntervals)
|
||||
{
|
||||
blackboxConfigMutable()->p_ratio = 32;
|
||||
blackboxConfigMutable()->sample_rate = 4; // sample_rate = PID loop frequency / 16
|
||||
// 250Hz PIDloop
|
||||
targetPidLooptime = 4000;
|
||||
blackboxInit();
|
||||
|
@ -72,9 +72,10 @@ TEST(BlackboxTest, TestInitIntervals)
|
|||
targetPidLooptime = 2000;
|
||||
blackboxInit();
|
||||
EXPECT_EQ(16, blackboxIInterval);
|
||||
EXPECT_EQ(0, blackboxPInterval);
|
||||
EXPECT_EQ(16, blackboxPInterval);
|
||||
EXPECT_EQ(4096, blackboxSInterval);
|
||||
|
||||
blackboxConfigMutable()->sample_rate = 1; // sample_rate = PID loop frequency / 2
|
||||
// 2kHz PIDloop
|
||||
targetPidLooptime = 500;
|
||||
blackboxInit();
|
||||
|
@ -82,6 +83,7 @@ TEST(BlackboxTest, TestInitIntervals)
|
|||
EXPECT_EQ(2, blackboxPInterval);
|
||||
EXPECT_EQ(16384, blackboxSInterval);
|
||||
|
||||
blackboxConfigMutable()->sample_rate = 2;
|
||||
// 4kHz PIDloop
|
||||
targetPidLooptime = 250;
|
||||
blackboxInit();
|
||||
|
@ -89,6 +91,7 @@ TEST(BlackboxTest, TestInitIntervals)
|
|||
EXPECT_EQ(4, blackboxPInterval);
|
||||
EXPECT_EQ(32768, blackboxSInterval);
|
||||
|
||||
blackboxConfigMutable()->sample_rate = 3;
|
||||
// 8kHz PIDloop
|
||||
targetPidLooptime = 125;
|
||||
blackboxInit();
|
||||
|
@ -99,7 +102,7 @@ TEST(BlackboxTest, TestInitIntervals)
|
|||
|
||||
TEST(BlackboxTest, Test_500Hz)
|
||||
{
|
||||
blackboxConfigMutable()->p_ratio = 32;
|
||||
blackboxConfigMutable()->sample_rate = 0;
|
||||
// 500Hz PIDloop
|
||||
targetPidLooptime = 2000;
|
||||
blackboxInit();
|
||||
|
@ -117,7 +120,7 @@ TEST(BlackboxTest, Test_500Hz)
|
|||
|
||||
TEST(BlackboxTest, Test_1kHz)
|
||||
{
|
||||
blackboxConfigMutable()->p_ratio = 32;
|
||||
blackboxConfigMutable()->sample_rate = 0;
|
||||
// 1kHz PIDloop
|
||||
targetPidLooptime = 1000;
|
||||
blackboxInit();
|
||||
|
@ -143,7 +146,7 @@ TEST(BlackboxTest, Test_1kHz)
|
|||
|
||||
TEST(BlackboxTest, Test_2kHz)
|
||||
{
|
||||
blackboxConfigMutable()->p_ratio = 32;
|
||||
blackboxConfigMutable()->sample_rate = 1;
|
||||
// 2kHz PIDloop
|
||||
targetPidLooptime = 500;
|
||||
blackboxInit();
|
||||
|
@ -176,7 +179,7 @@ TEST(BlackboxTest, Test_2kHz)
|
|||
|
||||
TEST(BlackboxTest, Test_8kHz)
|
||||
{
|
||||
blackboxConfigMutable()->p_ratio = 32;
|
||||
blackboxConfigMutable()->sample_rate = 3;
|
||||
// 8kHz PIDloop
|
||||
targetPidLooptime = 125;
|
||||
blackboxInit();
|
||||
|
@ -199,18 +202,18 @@ TEST(BlackboxTest, Test_8kHz)
|
|||
EXPECT_TRUE(blackboxShouldLogPFrame());
|
||||
}
|
||||
|
||||
TEST(BlackboxTest, Test_zero_p_ratio)
|
||||
TEST(BlackboxTest, Test_zero_p_interval)
|
||||
{
|
||||
blackboxConfigMutable()->p_ratio = 0;
|
||||
// 1kHz PIDloop
|
||||
targetPidLooptime = 1000;
|
||||
blackboxConfigMutable()->sample_rate = 4;
|
||||
// 250Hz PIDloop
|
||||
targetPidLooptime = 4000;
|
||||
blackboxInit();
|
||||
EXPECT_EQ(32, blackboxIInterval);
|
||||
EXPECT_EQ(8, blackboxIInterval);
|
||||
EXPECT_EQ(0, blackboxPInterval);
|
||||
EXPECT_TRUE(blackboxShouldLogIFrame());
|
||||
EXPECT_FALSE(blackboxShouldLogPFrame());
|
||||
|
||||
for (int ii = 0; ii < 31; ++ii) {
|
||||
for (int ii = 0; ii < 7; ++ii) {
|
||||
blackboxAdvanceIterationTimers();
|
||||
EXPECT_FALSE(blackboxShouldLogIFrame());
|
||||
EXPECT_FALSE(blackboxShouldLogPFrame());
|
||||
|
@ -222,9 +225,8 @@ TEST(BlackboxTest, Test_zero_p_ratio)
|
|||
|
||||
TEST(BlackboxTest, Test_CalculatePDenom)
|
||||
{
|
||||
blackboxConfigMutable()->p_ratio = 0;
|
||||
blackboxConfigMutable()->sample_rate = 0;
|
||||
// note I-frame is logged every 32ms regardless of PIDloop rate
|
||||
// so p_ratio is 32 when blackbox logging rate is 1kHz
|
||||
|
||||
// 1kHz PIDloop
|
||||
targetPidLooptime = 1000;
|
||||
|
@ -266,19 +268,19 @@ TEST(BlackboxTest, Test_CalculateRates)
|
|||
{
|
||||
// 1kHz PIDloop
|
||||
targetPidLooptime = 1000;
|
||||
blackboxConfigMutable()->p_ratio = 32;
|
||||
blackboxConfigMutable()->sample_rate = 0;
|
||||
blackboxInit();
|
||||
EXPECT_EQ(32, blackboxIInterval);
|
||||
EXPECT_EQ(1, blackboxPInterval);
|
||||
EXPECT_EQ(1, blackboxGetRateDenom());
|
||||
|
||||
blackboxConfigMutable()->p_ratio = 16;
|
||||
blackboxConfigMutable()->sample_rate = 1;
|
||||
blackboxInit();
|
||||
EXPECT_EQ(32, blackboxIInterval);
|
||||
EXPECT_EQ(2, blackboxPInterval);
|
||||
EXPECT_EQ(2, blackboxGetRateDenom());
|
||||
|
||||
blackboxConfigMutable()->p_ratio = 8;
|
||||
blackboxConfigMutable()->sample_rate = 2;
|
||||
blackboxInit();
|
||||
EXPECT_EQ(32, blackboxIInterval);
|
||||
EXPECT_EQ(4, blackboxPInterval);
|
||||
|
@ -287,43 +289,43 @@ TEST(BlackboxTest, Test_CalculateRates)
|
|||
|
||||
// 8kHz PIDloop
|
||||
targetPidLooptime = 125;
|
||||
blackboxConfigMutable()->p_ratio = 32; // 1kHz logging
|
||||
blackboxConfigMutable()->sample_rate = 3; // 1kHz logging
|
||||
blackboxInit();
|
||||
EXPECT_EQ(256, blackboxIInterval);
|
||||
EXPECT_EQ(8, blackboxPInterval);
|
||||
EXPECT_EQ(8, blackboxGetRateDenom());
|
||||
|
||||
blackboxConfigMutable()->p_ratio = 48; // 1.5kHz logging
|
||||
blackboxConfigMutable()->sample_rate = 4; // 500Hz logging
|
||||
blackboxInit();
|
||||
EXPECT_EQ(256, blackboxIInterval);
|
||||
EXPECT_EQ(5, blackboxPInterval);
|
||||
EXPECT_EQ(5, blackboxGetRateDenom());
|
||||
EXPECT_EQ(16, blackboxPInterval);
|
||||
EXPECT_EQ(16, blackboxGetRateDenom());
|
||||
|
||||
blackboxConfigMutable()->p_ratio = 64; // 2kHz logging
|
||||
blackboxConfigMutable()->sample_rate = 2; // 2kHz logging
|
||||
blackboxInit();
|
||||
EXPECT_EQ(256, blackboxIInterval);
|
||||
EXPECT_EQ(4, blackboxPInterval);
|
||||
EXPECT_EQ(4, blackboxGetRateDenom());
|
||||
|
||||
blackboxConfigMutable()->p_ratio = 128; // 4kHz logging
|
||||
blackboxConfigMutable()->sample_rate = 1; // 4kHz logging
|
||||
blackboxInit();
|
||||
EXPECT_EQ(256, blackboxIInterval);
|
||||
EXPECT_EQ(2, blackboxPInterval);
|
||||
EXPECT_EQ(2, blackboxGetRateDenom());
|
||||
|
||||
blackboxConfigMutable()->p_ratio = 256; // 8kHz logging
|
||||
blackboxConfigMutable()->sample_rate = 0; // 8kHz logging
|
||||
blackboxInit();
|
||||
EXPECT_EQ(256, blackboxIInterval);
|
||||
EXPECT_EQ(1, blackboxPInterval);
|
||||
EXPECT_EQ(1, blackboxGetRateDenom());
|
||||
|
||||
// 0.126 PIDloop
|
||||
// 0.126 PIDloop = 7.94kHz
|
||||
targetPidLooptime = 126;
|
||||
blackboxConfigMutable()->p_ratio = 32; // 1kHz logging
|
||||
blackboxConfigMutable()->sample_rate = 3; // 0.992kHz logging
|
||||
blackboxInit();
|
||||
EXPECT_EQ(253, blackboxIInterval);
|
||||
EXPECT_EQ(7, blackboxPInterval);
|
||||
EXPECT_EQ(7, blackboxGetRateDenom());
|
||||
EXPECT_EQ(8, blackboxPInterval);
|
||||
EXPECT_EQ(8, blackboxGetRateDenom());
|
||||
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue