Defaults will be the same regardless of whether the target has `USE_DYN_LPF` included. Previously the defaults would vary and it wouldn't be obvious why.
Defaults are as follows:
gyro lowpass 1: 150/BIQUAD
gyro lowpass 2: OFF
dterm lowpass 1: 150/BIQUAD
dterm lowpass 2: 150/BIQUAD
Nothing has changed int eh dynamic lowpass logic. If it's enabled those settings will be used in place of the static lowpass cutoff.
Needs coordination with the Configurator to change the defaults used when re-eanbling the lowpass filters as they are currently based on previous version settings and will dfault to inappropriate values.
RPM Filter currently doesn't support dual-gyro running in "BOTH" mode. Switch to the "FIRST" gyro if configured for "BOTH" and RPM filter is enabled.
Once RPM filter is updated to support dual-gyro using both sensors then this check should be removed.
Since we really can't conditionally build the list of options, it's possible to select an invalid blackbox device type using CLI `set blackbox_device =`. This change validates that the selected device is included in the code and if not resets to "no logging".
PLL-HSE working
PLL-HSI working
Move SystemCoreClockUpdate in SystemInit to end
Switching from HSI-PLL to HSE-PLL (and back) is working
It works during various levels of overclocking.
Renamed CLI variable hse_mhz to system_hse_mhz
Restored the original position of the spectrum bind code
The internal logic of the spectrum bind code will prevent binding
process to fire if executed after soft reset.
Remove stale call to delay
Add a comment about call to spektrumBind placement
Declared SystemXXXSource functions, handled sign-ness warning.
Cleaned up commented out sections
USB clock generation for F446
Default HSE value for backward compatibility
Cleaned up more unused stuff
Handle non-F4 targets
Added comment about PLL_M selection
Removed fake gyro/acc from test target
Officially Invensense lists the experimentl mode as "unsupported" on the MPU60x0 series. Previously it was added to allow testing. It's been determined that it's not a viable gyro filtering operational mode.
Also change "experimental" DLPF support available for F4 or higher. Few F3 boards have gyros that can use this mode anyway. Saves 200 bytes.
The dynamic filter is not usefull with gyro loop times less than 2KHz so disable the feature and prevent the code from running in this circumstance.
In `isDynamicFilterActive()` we can't just rely on the feature because the feature will be disabled after the gyro has initialized and is running - possibly running into the underflow/wedging problem. And unfortunately we can't disable the feature earlier because we need to know the `targetLooptime` which is determined during gyro init.
Restructures the PID controller to decouple feedforward from D.
Cleaned up the structure of the PID controller; moved some feature-based enhancements out of the main structure.
Feedforward becomes a separate component of the PID controller and there is now:
f_pitch
f_roll
f_yaw
The default values of 60 for pitch and roll matches the default setpoint weight used in BF3.4. Yaw previously had no setpoint weight capability so the default here needs to be discussed. Currently it's also set to 60 and flight testing seems positive. Feedforward on yaw adds a lot of value so I don't think we want to default to 0. Instead we need decide on the default.
All occurences of setpoint weight have been replaced by feedforward. "setpoint_relax_ratio" has been renamed to "feedforward_transition".
The pidSum now consists of P + I + D + F.
D has been added back for yaw (disabled by default with d_yaw = 0). We've found little need for D for normal quads but it may have value for other configurations - particularly tricopters.
Updated CMS menus to support adjusting the feedforward for each axis.
Changed the default for "rc_interp_ch" to be "RPYT". Need yaw to be smoothed to support feedforward.
Open issues:
Needs BFC support
- Need to add support for the axis "F" gains.
- Remove "setpoint weight" slider.
- Rename "D Setpoint transition" to "Feedforward transition"
Needs BBE support
- Header "setpoint_relaxation_ratio" has been renamed "feedforward_transition"
- Header "dterm_setpoint_weight" has been replaced with an array named "feed_forward_weight".
example: H feed_forward_weight:65,60,60 (R,P,Y)
- PID component "AXISF" has been added for all axes. Should be handled like P, I and D values.
- PidSum calculation needs to include F.
Needs LUA script support
- Support the renamed "setpoint_relax_ratio".
- Support for feedforward weight on all 3 axes.
Open code issues:
- rc_adjustments.c - support for adjusting feedforward weight for all axes. Currently only supporting roll - needs coordination with BFC.
Change the logic to not modify rcCommand directly and instead apply the additional throttle directly in the mixer.
Also move the logic to the attitude task instead of having it calculate in the PID loop. The logic relies on an angle that's only updated in the attitude task so there was no point in running the calculation every PID loop.