mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-25 17:25:18 +03:00
rc curves generation simplified
This commit is contained in:
parent
122c3f5a29
commit
7eb2419ef9
5 changed files with 17 additions and 15 deletions
|
@ -732,8 +732,7 @@ static bool isEEPROMContentValid(void)
|
|||
|
||||
void activateControlRateConfig(void)
|
||||
{
|
||||
generatePitchRollCurve(currentControlRateProfile);
|
||||
generateYawCurve(currentControlRateProfile);
|
||||
generateRcCurves(currentControlRateProfile);
|
||||
generateThrottleCurve(currentControlRateProfile, &masterConfig.escAndServoConfig);
|
||||
}
|
||||
|
||||
|
|
|
@ -459,13 +459,13 @@ void applyStepAdjustment(controlRateConfig_t *controlRateConfig, uint8_t adjustm
|
|||
case ADJUSTMENT_RC_RATE:
|
||||
newValue = constrain((int)controlRateConfig->rcRate8 + delta, 0, 250); // FIXME magic numbers repeated in serial_cli.c
|
||||
controlRateConfig->rcRate8 = newValue;
|
||||
generatePitchRollCurve(controlRateConfig);
|
||||
generateRcCurves(controlRateConfig);
|
||||
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_RC_RATE, newValue);
|
||||
break;
|
||||
case ADJUSTMENT_RC_EXPO:
|
||||
newValue = constrain((int)controlRateConfig->rcExpo8 + delta, 0, 100); // FIXME magic numbers repeated in serial_cli.c
|
||||
controlRateConfig->rcExpo8 = newValue;
|
||||
generatePitchRollCurve(controlRateConfig);
|
||||
generateRcCurves(controlRateConfig);
|
||||
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_RC_EXPO, newValue);
|
||||
break;
|
||||
case ADJUSTMENT_THROTTLE_EXPO:
|
||||
|
|
|
@ -33,17 +33,21 @@ static int16_t lookupYawRC[YAW_LOOKUP_LENGTH]; // lookup table for
|
|||
static int16_t lookupThrottleRC[THROTTLE_LOOKUP_LENGTH]; // lookup table for expo & mid THROTTLE
|
||||
int16_t lookupThrottleRCMid; // THROTTLE curve mid point
|
||||
|
||||
void generatePitchRollCurve(controlRateConfig_t *controlRateConfig)
|
||||
int16_t computeRcCurvePoint(uint8_t expo, uint8_t i)
|
||||
{
|
||||
for (int i = 0; i < PITCH_LOOKUP_LENGTH; i++) {
|
||||
lookupPitchRollRC[i] = (2500 + controlRateConfig->rcExpo8 * (i * i - 25)) * i * (int32_t) controlRateConfig->rcRate8 / 2500;
|
||||
}
|
||||
return (2500 + expo * (i * i - 25)) * i / 25;
|
||||
}
|
||||
|
||||
void generateYawCurve(controlRateConfig_t *controlRateConfig)
|
||||
void generateRcCurves(controlRateConfig_t *controlRateConfig)
|
||||
{
|
||||
for (int i = 0; i < YAW_LOOKUP_LENGTH; i++) {
|
||||
lookupYawRC[i] = (2500 + controlRateConfig->rcYawExpo8 * (i * i - 25)) * i / 25;
|
||||
uint8_t i;
|
||||
|
||||
for (i = 0; i < PITCH_LOOKUP_LENGTH; i++) {
|
||||
lookupPitchRollRC[i] = computeRcCurvePoint(controlRateConfig->rcExpo8, i);
|
||||
}
|
||||
|
||||
for (i = 0; i < YAW_LOOKUP_LENGTH; i++) {
|
||||
lookupYawRC[i] = computeRcCurvePoint(controlRateConfig->rcYawExpo8, i);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -17,8 +17,7 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
void generatePitchRollCurve(controlRateConfig_t *controlRateConfig);
|
||||
void generateYawCurve(controlRateConfig_t *controlRateConfig);
|
||||
void generateRcCurves(controlRateConfig_t *controlRateConfig);
|
||||
void generateThrottleCurve(controlRateConfig_t *controlRateConfig, escAndServoConfig_t *escAndServoConfig);
|
||||
|
||||
int16_t rcLookupPitchRoll(int32_t tmp);
|
||||
|
|
|
@ -186,7 +186,7 @@ static int callCounts[CALL_COUNT_ITEM_COUNT];
|
|||
#define CALL_COUNTER(item) (callCounts[item])
|
||||
|
||||
extern "C" {
|
||||
void generatePitchRollCurve(controlRateConfig_t *) {
|
||||
void generateRcCurves(controlRateConfig_t *) {
|
||||
callCounts[COUNTER_GENERATE_PITCH_ROLL_CURVE]++;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue