Removed tasks from PID loop that don't belong there.
This commit is contained in:
parent
a7fae6b8f0
commit
afb6068400
|
@ -905,33 +905,19 @@ static FAST_CODE void subTaskPidController(timeUs_t currentTimeUs)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static FAST_CODE_NOINLINE void subTaskMainSubprocesses(timeUs_t currentTimeUs)
|
static FAST_CODE_NOINLINE void subTaskPidSubprocesses(timeUs_t currentTimeUs)
|
||||||
{
|
{
|
||||||
uint32_t startTime = 0;
|
uint32_t startTime = 0;
|
||||||
if (debugMode == DEBUG_PIDLOOP) {
|
if (debugMode == DEBUG_PIDLOOP) {
|
||||||
startTime = micros();
|
startTime = micros();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read out gyro temperature if used for telemmetry
|
|
||||||
if (feature(FEATURE_TELEMETRY)) {
|
|
||||||
gyroReadTemperature();
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef USE_MAG
|
#ifdef USE_MAG
|
||||||
if (sensors(SENSOR_MAG)) {
|
if (sensors(SENSOR_MAG)) {
|
||||||
updateMagHold();
|
updateMagHold();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_SDCARD
|
|
||||||
afatfs_poll();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(USE_VCP)
|
|
||||||
DEBUG_SET(DEBUG_USB, 0, usbCableIsInserted());
|
|
||||||
DEBUG_SET(DEBUG_USB, 1, usbVcpIsConnected());
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef USE_BLACKBOX
|
#ifdef USE_BLACKBOX
|
||||||
if (!cliMode && blackboxConfig()->device) {
|
if (!cliMode && blackboxConfig()->device) {
|
||||||
blackboxUpdate(currentTimeUs);
|
blackboxUpdate(currentTimeUs);
|
||||||
|
@ -943,6 +929,25 @@ static FAST_CODE_NOINLINE void subTaskMainSubprocesses(timeUs_t currentTimeUs)
|
||||||
DEBUG_SET(DEBUG_PIDLOOP, 3, micros() - startTime);
|
DEBUG_SET(DEBUG_PIDLOOP, 3, micros() - startTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void taskMain(timeUs_t currentTimeUs)
|
||||||
|
{
|
||||||
|
UNUSED(currentTimeUs);
|
||||||
|
|
||||||
|
#ifdef USE_SDCARD
|
||||||
|
afatfs_poll();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef USE_TELEMETRY
|
||||||
|
void subTaskTelemetryPollSensors(timeUs_t currentTimeUs)
|
||||||
|
{
|
||||||
|
UNUSED(currentTimeUs);
|
||||||
|
|
||||||
|
// Read out gyro temperature if used for telemmetry
|
||||||
|
gyroReadTemperature();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static FAST_CODE void subTaskMotorUpdate(timeUs_t currentTimeUs)
|
static FAST_CODE void subTaskMotorUpdate(timeUs_t currentTimeUs)
|
||||||
{
|
{
|
||||||
uint32_t startTime = 0;
|
uint32_t startTime = 0;
|
||||||
|
@ -1017,7 +1022,7 @@ FAST_CODE void taskMainPidLoop(timeUs_t currentTimeUs)
|
||||||
// 0 - gyroUpdate()
|
// 0 - gyroUpdate()
|
||||||
// 1 - subTaskPidController()
|
// 1 - subTaskPidController()
|
||||||
// 2 - subTaskMotorUpdate()
|
// 2 - subTaskMotorUpdate()
|
||||||
// 3 - subTaskMainSubprocesses()
|
// 3 - subTaskPidSubprocesses()
|
||||||
gyroUpdate(currentTimeUs);
|
gyroUpdate(currentTimeUs);
|
||||||
DEBUG_SET(DEBUG_PIDLOOP, 0, micros() - currentTimeUs);
|
DEBUG_SET(DEBUG_PIDLOOP, 0, micros() - currentTimeUs);
|
||||||
|
|
||||||
|
@ -1025,7 +1030,7 @@ FAST_CODE void taskMainPidLoop(timeUs_t currentTimeUs)
|
||||||
subTaskRcCommand(currentTimeUs);
|
subTaskRcCommand(currentTimeUs);
|
||||||
subTaskPidController(currentTimeUs);
|
subTaskPidController(currentTimeUs);
|
||||||
subTaskMotorUpdate(currentTimeUs);
|
subTaskMotorUpdate(currentTimeUs);
|
||||||
subTaskMainSubprocesses(currentTimeUs);
|
subTaskPidSubprocesses(currentTimeUs);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (debugMode == DEBUG_CYCLETIME) {
|
if (debugMode == DEBUG_CYCLETIME) {
|
||||||
|
|
|
@ -56,3 +56,6 @@ bool isAirmodeActivated();
|
||||||
timeUs_t getLastDisarmTimeUs(void);
|
timeUs_t getLastDisarmTimeUs(void);
|
||||||
bool isTryingToArm();
|
bool isTryingToArm();
|
||||||
void resetTryingToArm();
|
void resetTryingToArm();
|
||||||
|
|
||||||
|
void taskMain(timeUs_t currentTimeUs);
|
||||||
|
void subTaskTelemetryPollSensors(timeUs_t currentTimeUs);
|
||||||
|
|
|
@ -186,6 +186,8 @@ static void taskCalculateAltitude(timeUs_t currentTimeUs)
|
||||||
static void taskTelemetry(timeUs_t currentTimeUs)
|
static void taskTelemetry(timeUs_t currentTimeUs)
|
||||||
{
|
{
|
||||||
if (!cliMode && feature(FEATURE_TELEMETRY)) {
|
if (!cliMode && feature(FEATURE_TELEMETRY)) {
|
||||||
|
subTaskTelemetryPollSensors(currentTimeUs);
|
||||||
|
|
||||||
telemetryProcess(currentTimeUs);
|
telemetryProcess(currentTimeUs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -205,6 +207,9 @@ void taskCameraControl(uint32_t currentTime)
|
||||||
void fcTasksInit(void)
|
void fcTasksInit(void)
|
||||||
{
|
{
|
||||||
schedulerInit();
|
schedulerInit();
|
||||||
|
|
||||||
|
setTaskEnabled(TASK_SYSTEM, true);
|
||||||
|
|
||||||
setTaskEnabled(TASK_SERIAL, true);
|
setTaskEnabled(TASK_SERIAL, true);
|
||||||
rescheduleTask(TASK_SERIAL, TASK_PERIOD_HZ(serialConfig()->serial_update_rate_hz));
|
rescheduleTask(TASK_SERIAL, TASK_PERIOD_HZ(serialConfig()->serial_update_rate_hz));
|
||||||
|
|
||||||
|
@ -318,10 +323,19 @@ void fcTasksInit(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
cfTask_t cfTasks[TASK_COUNT] = {
|
cfTask_t cfTasks[TASK_COUNT] = {
|
||||||
|
[TASK_SYSTEM_LOAD] = {
|
||||||
|
.taskName = "SYSTEM",
|
||||||
|
.subTaskName = "LOAD",
|
||||||
|
.taskFunc = taskSystemLoad,
|
||||||
|
.desiredPeriod = TASK_PERIOD_HZ(10), // 10Hz, every 100 ms
|
||||||
|
.staticPriority = TASK_PRIORITY_MEDIUM_HIGH,
|
||||||
|
},
|
||||||
|
|
||||||
[TASK_SYSTEM] = {
|
[TASK_SYSTEM] = {
|
||||||
.taskName = "SYSTEM",
|
.taskName = "SYSTEM",
|
||||||
.taskFunc = taskSystem,
|
.subTaskName = "UPDATE",
|
||||||
.desiredPeriod = TASK_PERIOD_HZ(10), // 10Hz, every 100 ms
|
.taskFunc = taskMain,
|
||||||
|
.desiredPeriod = TASK_PERIOD_HZ(100),
|
||||||
.staticPriority = TASK_PRIORITY_MEDIUM_HIGH,
|
.staticPriority = TASK_PRIORITY_MEDIUM_HIGH,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -123,7 +123,7 @@ FAST_CODE cfTask_t *queueNext(void)
|
||||||
return taskQueueArray[++taskQueuePos]; // guaranteed to be NULL at end of queue
|
return taskQueueArray[++taskQueuePos]; // guaranteed to be NULL at end of queue
|
||||||
}
|
}
|
||||||
|
|
||||||
void taskSystem(timeUs_t currentTimeUs)
|
void taskSystemLoad(timeUs_t currentTimeUs)
|
||||||
{
|
{
|
||||||
UNUSED(currentTimeUs);
|
UNUSED(currentTimeUs);
|
||||||
|
|
||||||
|
@ -225,7 +225,7 @@ void schedulerInit(void)
|
||||||
{
|
{
|
||||||
calculateTaskStatistics = true;
|
calculateTaskStatistics = true;
|
||||||
queueClear();
|
queueClear();
|
||||||
queueAdd(&cfTasks[TASK_SYSTEM]);
|
queueAdd(&cfTasks[TASK_SYSTEM_LOAD]);
|
||||||
}
|
}
|
||||||
|
|
||||||
FAST_CODE void scheduler(void)
|
FAST_CODE void scheduler(void)
|
||||||
|
|
|
@ -58,6 +58,7 @@ typedef struct {
|
||||||
typedef enum {
|
typedef enum {
|
||||||
/* Actual tasks */
|
/* Actual tasks */
|
||||||
TASK_SYSTEM = 0,
|
TASK_SYSTEM = 0,
|
||||||
|
TASK_SYSTEM_LOAD,
|
||||||
TASK_GYROPID,
|
TASK_GYROPID,
|
||||||
TASK_ACCEL,
|
TASK_ACCEL,
|
||||||
TASK_ATTITUDE,
|
TASK_ATTITUDE,
|
||||||
|
@ -179,7 +180,7 @@ void schedulerResetTaskStatistics(cfTaskId_e taskId);
|
||||||
|
|
||||||
void schedulerInit(void);
|
void schedulerInit(void);
|
||||||
void scheduler(void);
|
void scheduler(void);
|
||||||
void taskSystem(timeUs_t currentTime);
|
void taskSystemLoad(timeUs_t currentTime);
|
||||||
|
|
||||||
#define LOAD_PERCENTAGE_ONE 100
|
#define LOAD_PERCENTAGE_ONE 100
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue