mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-26 09:45:37 +03:00
Fixed moving averages
This commit is contained in:
parent
4fe68ce093
commit
a3742ff8b9
2 changed files with 7 additions and 6 deletions
|
@ -121,15 +121,16 @@ void taskSystem(uint32_t currentTime)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef SKIP_TASK_STATISTICS
|
#ifndef SKIP_TASK_STATISTICS
|
||||||
|
#define MOVING_SUM_COUNT 32
|
||||||
uint32_t checkFuncMaxExecutionTime;
|
uint32_t checkFuncMaxExecutionTime;
|
||||||
uint32_t checkFuncTotalExecutionTime;
|
uint32_t checkFuncTotalExecutionTime;
|
||||||
uint32_t checkFuncAverageExecutionTime;
|
uint32_t checkFuncMovingSumExecutionTime;
|
||||||
|
|
||||||
void getCheckFuncInfo(cfCheckFuncInfo_t *checkFuncInfo)
|
void getCheckFuncInfo(cfCheckFuncInfo_t *checkFuncInfo)
|
||||||
{
|
{
|
||||||
checkFuncInfo->maxExecutionTime = checkFuncMaxExecutionTime;
|
checkFuncInfo->maxExecutionTime = checkFuncMaxExecutionTime;
|
||||||
checkFuncInfo->totalExecutionTime = checkFuncTotalExecutionTime;
|
checkFuncInfo->totalExecutionTime = checkFuncTotalExecutionTime;
|
||||||
checkFuncInfo->averageExecutionTime = checkFuncAverageExecutionTime;
|
checkFuncInfo->averageExecutionTime = checkFuncMovingSumExecutionTime / MOVING_SUM_COUNT;
|
||||||
}
|
}
|
||||||
|
|
||||||
void getTaskInfo(cfTaskId_e taskId, cfTaskInfo_t * taskInfo)
|
void getTaskInfo(cfTaskId_e taskId, cfTaskInfo_t * taskInfo)
|
||||||
|
@ -141,7 +142,7 @@ void getTaskInfo(cfTaskId_e taskId, cfTaskInfo_t * taskInfo)
|
||||||
taskInfo->staticPriority = cfTasks[taskId].staticPriority;
|
taskInfo->staticPriority = cfTasks[taskId].staticPriority;
|
||||||
taskInfo->maxExecutionTime = cfTasks[taskId].maxExecutionTime;
|
taskInfo->maxExecutionTime = cfTasks[taskId].maxExecutionTime;
|
||||||
taskInfo->totalExecutionTime = cfTasks[taskId].totalExecutionTime;
|
taskInfo->totalExecutionTime = cfTasks[taskId].totalExecutionTime;
|
||||||
taskInfo->averageExecutionTime = cfTasks[taskId].averageExecutionTime;
|
taskInfo->averageExecutionTime = cfTasks[taskId].movingSumExecutionTime / MOVING_SUM_COUNT;
|
||||||
taskInfo->latestDeltaTime = cfTasks[taskId].taskLatestDeltaTime;
|
taskInfo->latestDeltaTime = cfTasks[taskId].taskLatestDeltaTime;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -223,7 +224,7 @@ void scheduler(void)
|
||||||
DEBUG_SET(DEBUG_SCHEDULER, 3, checkFuncExecutionTime);
|
DEBUG_SET(DEBUG_SCHEDULER, 3, checkFuncExecutionTime);
|
||||||
#endif
|
#endif
|
||||||
#ifndef SKIP_TASK_STATISTICS
|
#ifndef SKIP_TASK_STATISTICS
|
||||||
checkFuncAverageExecutionTime = (checkFuncAverageExecutionTime * 31 + checkFuncExecutionTime) / 32;
|
checkFuncMovingSumExecutionTime += checkFuncExecutionTime - checkFuncMovingSumExecutionTime / MOVING_SUM_COUNT;
|
||||||
checkFuncTotalExecutionTime += checkFuncExecutionTime; // time consumed by scheduler + task
|
checkFuncTotalExecutionTime += checkFuncExecutionTime; // time consumed by scheduler + task
|
||||||
checkFuncMaxExecutionTime = MAX(checkFuncMaxExecutionTime, checkFuncExecutionTime);
|
checkFuncMaxExecutionTime = MAX(checkFuncMaxExecutionTime, checkFuncExecutionTime);
|
||||||
#endif
|
#endif
|
||||||
|
@ -273,7 +274,7 @@ void scheduler(void)
|
||||||
|
|
||||||
#ifndef SKIP_TASK_STATISTICS
|
#ifndef SKIP_TASK_STATISTICS
|
||||||
const uint32_t taskExecutionTime = micros() - currentTimeBeforeTaskCall;
|
const uint32_t taskExecutionTime = micros() - currentTimeBeforeTaskCall;
|
||||||
selectedTask->averageExecutionTime = ((uint32_t)selectedTask->averageExecutionTime * 31 + taskExecutionTime) / 32;
|
selectedTask->movingSumExecutionTime += taskExecutionTime - selectedTask->movingSumExecutionTime / MOVING_SUM_COUNT;
|
||||||
selectedTask->totalExecutionTime += taskExecutionTime; // time consumed by scheduler + task
|
selectedTask->totalExecutionTime += taskExecutionTime; // time consumed by scheduler + task
|
||||||
selectedTask->maxExecutionTime = MAX(selectedTask->maxExecutionTime, taskExecutionTime);
|
selectedTask->maxExecutionTime = MAX(selectedTask->maxExecutionTime, taskExecutionTime);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -122,7 +122,7 @@ typedef struct {
|
||||||
|
|
||||||
#ifndef SKIP_TASK_STATISTICS
|
#ifndef SKIP_TASK_STATISTICS
|
||||||
/* Statistics */
|
/* Statistics */
|
||||||
uint32_t averageExecutionTime; // Moving average over 32 samples
|
uint32_t movingSumExecutionTime; // moving sum over 32 samples
|
||||||
uint32_t maxExecutionTime;
|
uint32_t maxExecutionTime;
|
||||||
uint32_t totalExecutionTime; // total time consumed by task since boot
|
uint32_t totalExecutionTime; // total time consumed by task since boot
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue