1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-26 01:35:41 +03:00
Commit graph

670 commits

Author SHA1 Message Date
ctzsnooze
705d3939eb Initial default suggestions for 3.4
Set default RC smoothing channels to RPYT

first attempt at enabling features by default

update filter notes
2018-06-09 22:26:00 +12:00
AJ Christensen
b1069027c3 gyro sensors: use axis_e enum for consistency 2018-06-09 14:25:52 +12:00
AJ Christensen
03b480a8ef gyro sensors/debug: record standard deviation for roll *only*
* visibile in the DEBUG_GYRO_RAW[3]
2018-06-09 14:18:47 +12:00
AJ Christensen
f2cc9acc1f gyro sensors/debug: standardize gyro debugging enum elements
* will require coordination with BFC of course.
* rationale: previously `DEBUG_GYRO_NOTCH` debugging was used to grab the
  scaled, unfiltered gyro readings, prior to the FFT running. This has been
  updated to `DEBUG_GYRO_SCALED`.

  similarly, `DEBUG_GYRO` debugging was used to record the filtered gyro. This
  is updated to `GYRO_FILTERED`.

  interestingly, `DEBUG_GYRO` was also used for movement threshold calibration.
  This has been updated to be `DEBUG_GYRO_CALIBRATION` and also now stores
  per-axis standard deviation.

  Application of filter position moved slightly for logical grouping, has no
  effect due to LTI.
2018-06-07 17:17:26 +12:00
mikeller
f32731638d Removed default changes from this pull request. 2018-06-03 22:44:42 +12:00
mikeller
75693fbd5b Added defaults and MSP support to filter settings. 2018-06-03 22:44:42 +12:00
Michael Keller
d330ad519e
Merge pull request #6004 from mikeller/add_esc_sensor_offset
Added offset parameter to ESC sensor current calculation to compensate for non-ESC consumption.
2018-05-30 22:45:50 +12:00
mikeller
670cd49bd6 Added offset parameter to ESC sensor current calculation to compensate for non-ESC consumption. 2018-05-30 00:38:33 +12:00
AJ Christensen
a63c8b0079 gyro & d-term filters: remove filtering options except biquad/pt1
* through extensive testing prior to the beginning of the RC cycle, we have
  discovered that the simplest combination of filters appears to be up to four
  PT1 filters: two for gyro, and two for d-term.
* non-cascaded biquad filter plumbing is retained for noisy setups and the
  dynamic notch bandpass, although gyro and d-term variants of the filtering may
  eventually be removed in favor of pt1
* update all related unit tests
2018-05-29 10:54:46 +12:00
Michael Keller
69a80a3bb0
Merge pull request #5965 from loopur/mybranch
Add barometer sensor QMP6988
2018-05-25 15:54:47 +12:00
mikeller
2feae20c32 Replaced instances of '#include <platform.h>' with '#include "platform.h"'. 2018-05-24 23:46:19 +12:00
Michael Keller
e605b497e8
Merge pull request #5932 from etracer65/gyro_cal_settings
Make gyro calibration period user configurable and rename moron_threshold
2018-05-24 21:13:47 +12:00
Andrey Mironov
3733640c08 Changed NOINLINE to be applied conditionally on ITCM presence 2018-05-23 16:34:01 +03:00
Andrey Mironov
d8dd6f29f8 Set FAST_RAM to go into .fastram_data by default. Added FAST_RAM_NOINIT 2018-05-23 14:40:33 +03:00
Bruce Luckcuck
8f6f4bf4c4 Make gyro calibration period user configurable and rename moron_threshold
Gryo calibration period can be configured in 1/100 second intervals using `gyro_calib_duration` (default is 125 or 1.25 seconds).

Renamed the `moron_threshold` parameter to `gyro_calib_noise_limit`. Functionally it is unchanged.
2018-05-23 07:14:52 -04:00
Loopur
495cfb4d07 Add barometer sensor QMP6988 2018-05-18 16:26:07 +08:00
Michael Keller
b5521b927d
Merge pull request #5909 from etracer65/gyro_calib_cleanup
Gyro calibration cleanup and use floating point calculations for zero offset
2018-05-17 23:19:43 +12:00
Michael Keller
82500afb1b
Merge pull request #5902 from mikeller/optimise_gyro_sanity_checks_f7
Optimised gyro sanity checks for F7.
2018-05-17 23:16:38 +12:00
Michael Keller
edfa6cfcb0
Merge pull request #5900 from jflyper/bfdev-drop-stale-gyro-support
Gradually retire stale/unused acc/gyro support
2018-05-17 23:16:21 +12:00
Bruce Luckcuck
4913099803 Gyro calibration cleanup
Data type and variable name cleanup.

Calculate the calibration sum using floats to prevent possibilities of future overflows.

Rename the calibratingG element to cyclesRemaining to be more representative of its purpose. Change its data type to int32_t to avoid calculations with signed and unsigned variables.

Fix the zero offset calculation from the calibration results to return a floating point result rather than using integer math. This may result in slight improvements in reduced gyro drift.
2018-05-16 20:38:34 -04:00
Bruce Luckcuck
ce170990a2 Fix gyro calibration zero offset calculation
It seems like the gyro calibration sample count overflow fix (#5898) caused a downstream problem with the math to calculate the zero offset.  Casting the components of the formula to (float) solves the problem.
2018-05-16 13:06:07 -04:00
mikeller
0263428be7 Optimised gyro sanity checks for F7. 2018-05-16 22:45:50 +12:00
jflyper
6c044829cc Mark unused acc/gyro support toward retirement. 2018-05-16 14:31:39 +09:00
Bruce Luckcuck
e4e4948c2a Fix numeric overflow for gyro calibration samples when using 32KHz sampling
The current data type was uint16 and that would overflow when using 32KHz sampling.  This caused the calibration to only run for about 0.9 seconds instead of the expected 3 seconds.  At 32KHz the sample count is 96774 which overflows uint16 so changed the data types to uint32.
2018-05-15 13:24:08 -04:00
mikeller
ede204aa81 Removed some target dependencies, and added makefile target 'check-target-independence' to find dependencies. 2018-05-14 19:13:37 +12:00
Michael Keller
b0ee38d77b
Merge pull request #5807 from etracer65/gyro_both_validation
Only allow gyro_to_use = BOTH if both detected gyros are the same type
2018-05-05 18:34:42 +12:00
Bruce Luckcuck
34bdfc00e7 Update gyroregisters cli command to display both gyros
If gyro_to_use = BOTH, then display the registers for both active gyros.
2018-05-04 11:46:05 -04:00
Bruce Luckcuck
809c2a950b Update RPM data in smartport and frsky_hub telemetry
Both previously displayed eRPM.  frsky_hub RPM data is constrained to int16 so the value sent is RPM/10.

Updates per review and function renaming
2018-05-04 07:53:18 -04:00
Bruce Luckcuck
063f3829d4 Display ESC telemetry as real RPM in the OSD
The telemetry data provides eRPM/100.  Added a `motor_poles` parameter (defaulting to 14) that is used to calculate the physical RPM.

RPM = (telemetry_rpm * 100) / (motor_poles / 2)

Most motors we commonly use are 14 poles, but the user can adjust if needed for their setup.

Also calculate actual RPM for DEBUG_ESC_SENSOR_RPM, but to fit with in int16 the log value will be RPM/10.
2018-05-04 07:51:16 -04:00
Michael Keller
36c543e547
Merge pull request #5800 from etracer65/gyro_to_use_default_fix
Fix dual gyro default logic
2018-05-04 21:14:00 +12:00
Bruce Luckcuck
ff59c37fdb Only allow gyro_to_use = BOTH if both detected gyros are the same type
Since we currently don't have per gyro configuration, trying to use two different gyro types simultaneously may not provide good results or lead to other unforeseen situations like attempting to initialize with settings not applicable to both hardware types.

This logic looks at the detected gyro types and resets to use only the first one if the user selected "BOTH" and they're different hardware types.
2018-05-03 10:34:13 -04:00
Andrey Mironov
cb9e1ef58c
Merge pull request #5768 from etracer65/esc_combined_overflow
Fix potential overflow in combined ESC sensor data
2018-05-03 11:00:28 +03:00
Bruce Luckcuck
8abbb84a55 Fix dual gyro default logic
With the changes to add dual gyro support and the SPRACINGF7DUAL target, the defaulting logic of which gyro(s) to use was changed. The logic defaulted to using "BOTH" unless the target specifically selected a gyro.

I think this logic is backwards in that the first gyro should be selected by default unless the target specifies something different.  The previous logic would cause all of the previous dual-gyro targets to default to "BOTH" even though they have different gyro types.  This is probably not a good idea and definitely would cause an unexpected change for the users.

The SPRACINGF7DUAL target has two of the same gyro so defaulting to "BOTH" is appropriate.  So now the target specifies that both gyros should be used in this case as the default.
2018-05-02 20:06:08 -04:00
Bruce Luckcuck
f8bee2feff Fix potential overflow in combined ESC sensor data
The calculated combined ESC sensor data could potentially overflow in some extreme cases and the problem would be more likely in cases with more than 4 motors.
2018-04-25 12:02:25 -04:00
blckmn
a9f74cd6df Removed excess trailing spaces before new lines on licenses. 2018-04-25 20:58:00 +10:00
Bruce Luckcuck
0a0add8c56 Yaw spin recovery optimize (#3)
* PID controller unittest

* Clean code for yaw spin recovery

* Yaw spin recovery optimizations

* Flash size optimizations, use 50% throttle when airmode is off, and override pidsum_limit_yaw

Also rebasing from betaflight/master
2018-04-24 14:02:36 +12:00
ctzsnooze
41fb37a264 Clean code for yaw spin recovery 2018-04-24 13:51:06 +12:00
J Blackman
c1fa9a610b
Merge pull request #5742 from blckmn/licence_update
Licence update
2018-04-22 19:23:52 +10:00
blckmn
b6422db597 All applicable files now updated. 2018-04-22 12:13:33 +10:00
Bruce Luckcuck
087837ffea Change gyro overflow handling to be based on runtime detected gyro (#5730)
Previously the gyro_overflow_detect and fallback slew filter were based on target definitions to determine whether the flight controller had an affected gyro to enable protection. The problem is that some targets are available with multiple gyro options and if one of those options was an affected gyro then all flight controllers for that target would have the oveflow code enabled even if they had a non-affected gyro.  Also targets that include multiple gyros on-board and are selectable at runtime were not differentiated and forced overflow handling on even if the selected gyro was not affected.

For non-affected gyros the overflow handling code is not required and reduces recovery performance so it's not desirable to have it enabled when unnecessary.

In the case of dual-gyro targets if gyro_to_use = BOTH then if either is an affected gyro then overflow handling will be enabled.
2018-04-22 12:16:00 +12:00
blckmn
916de26ad8 Files with bad CRLF 2018-04-22 09:31:43 +10:00
blckmn
46fe22b4bd Direct license replacement 2018-04-22 09:22:46 +10:00
pulquero
a51bea1ebc Fixes to ranges of esc warning thresholds. (#5726)
Signed-off-by: Mark Hale <mark.hale@physics.org>
2018-04-21 18:12:11 +12:00
Andrey Mironov
bee2bacb66
Fixed ownership of MPU_CS resource in case of multiple gyros (#5715) 2018-04-20 00:13:28 +03:00
Andrey Mironov
bf984f39b1 F7 optimizations (#5674)
* Revert "Revert "Rewritten F7 dshot to LL (draft)" (#5430)"

This reverts commit aa42a69d2f.

* Reworked F7 linker scripts to maximize performance of both F74x and F72x

* Some comments and changes from original F7 HAL DSHOT

* Prohibit inlining of some functions to place them in ITCM-RAM

* Fixed usartTargetConfigure implicit declaration

* Moved back to SRAM1 as main RAM

* Added SRAM2 attribute

* Fixed LL DSHOT FOR SPRF7DUAL and probably other adv TIM users

* Fixed SPRF7DUAL rev. A motor order

* Enabled CCM for data on F40x

* Fixed F7 startup assembly symbols

* Fixed KISSFCV2F7 linker script

* Added a quick way of building F7 targets only

* Got rid of the useless F7 target script

* Added NOINLINE and got rid of useless __APPLE__ define

* Added some important functions to ITCM

* Added NOINLINE macro for tests

* Copy to ITCM before passing execution into it

* Minimized cache footprint of motor output code

* Evicted low-impact functions from ITCM

* Switched MATEKF722 and SPRACINGF7DUAL to burst DSHOT

* Switched CLRACINGF7 to burst DSHOT

* Moved UART RX&TX buffers to DTCM-RAM to avoid cache incoherency

* Marked taskMainPidLoop for ITCM-RAM, disallowed inlining per-function

* Revert "Added a quick way of building F7 targets only"

This reverts commit 2294518998.
2018-04-20 08:37:32 +12:00
Michael Keller
e0dcea4d48
Added checks for ESC_SENSOR feature being enabled when reading ESC sensor data. (#5663) 2018-04-11 23:31:14 +12:00
Bruce Luckcuck
9a7533f57d Expose vbat ADC divider and multiplier parameters in CLI (#5641)
Previously only vbat_scale was exposed. Adds vbat_divider and vbat_multiplier parameters.

Note that all of these parameters only apply to the first voltage sensor (VOLTAGE_SENSOR_ADC_VBAT).  There is the capability to have multiple sensors and those will not have their parameters exposed.  Currently there are no target definitions that use multiple sensors.
2018-04-07 12:26:16 +12:00
Michael Keller
b5c0076bc8
Added USE_ESC_SENSOR_INFO define, cleaned up USE_ESC_SENSOR define. (#5580) 2018-04-01 11:33:07 +12:00
Andrey Mironov
172642383d
Fixed notch Q calculation to be dimensionless as it should (#5529)
* Fixed notch Q calculation to be dimensionless as it should

* Get rid of one division and leverage multiply-accumulate instr
2018-03-24 20:27:39 +03:00
etracer65
062ef77276 Rework gyro sample rate and DLPF configuration and expose additional filter cutoffs (#5483)
The old gyro_lpf setting was based on the DLPF_CFG values for the MPU6050 gyro and the enumeration was inaccurate and misleading.  For example, the default "OFF" setting did not disable the DLPF, but actually set it to around 250hz.  The actual cutoff frequency for each setting varies by gyro hardware so the literal frequencies in the enumeration were also incorrect.

Removed gyro_lpf and replaced it with gyro_hardware_lpf (8KHz) and gyro_32khz_hardware_lpf (32KHz).  The parameters were renamed to indicate that they are hardware filtering options to differentiate from the many software lowpass filtering options.

gyro_hardware_lpf - This parameter sets the filtering and sample rate options for 8KHz gyros (or 32KHz capable gyros running in 8KHz mode).

- NORMAL - default setting that is equivalent to the previous "OFF" setting.  Configures 8KHz sampling with ~250Hz filter cutoff.
- EXPERIMENTAL - 8KHz sampling with a higher frequency filter cutoff (around 3000hz).  Considerably more noisy and requires additional software filtering.  Note that for the MPU6000 Invensense doesn't officially document the filter cutoff frequency for this selection and simply lists it as "reserved".  In testing it's clear that a higher frequency filter cutoff is being selected due to the increased noise, but the actual cutoff frequency is unknown.
- 1KHZ_SAMPLING - 1KHz sample rate with and approximate 188Hz filter cutoff.

Note that the following additional 1KHz sample rate options with lower filter cutoffs have been eliminated - "98HZ", "42HZ", "20HZ", "10HZ", "5HZ".  It seems unlikely that these are still needed are probably no longer viable and flight performance would be very poor.

gyro_32khz_hardware_lpf - This parameter sets the filtering options while running in 32KHz mode on capable gyros.  It also exposes a new high frequency filter cutoff mode.

- NORMAL - The default and matches the current settings used for 32KHz mode.  Provides a filter cutoff around 3000Hz.
- EXPERIMENTAL - Selects a filter cutoff around 8000Hz.  This is a very noisy setting and will require substantial software filtering.

The default values for both 8KHz and 32KHz sample rates were chosen to match the previous defaults and users should not experience any performance differences.

Normalized the gyro initialization.  Previously there was little consistency on how the initialization was performed and the settings interpreted.  For example, MPU9250 used a completely different logic tree when configuring the registers.

Disconnected the literal parameter value from the gyro initialization.  The gyro_lpf parameter contained a number from 0-7 that was literally applied to the configuration register during the gyro initialization.  This caused some older gyro initializations to be incorrect as they used a different register layout (MPU3050 and L3G4200D).  By transitioning to a logical selection the actual value applied to the hardware register is abstracted.  This will better future-proof the design as new gyros may have a different register structure that may be incompatible with the old method.

Added a gyroregisters command to the CLI that is used to read the current register settings from the gyro and dump them to the CLI.  This is used to verify the configuration in comparison to the datasheets for the various gyros.  Testing empirically by looking at the relative noise from the gyros can give a rough estimate whether the different options are selecting correctly, but it's not very precise.  The code for the gyroregisters CLI command is wrapped inside #ifdef USE_GYRO_REGISTER_DUMP blocks to allow easy disabling.  It's currently enabled for all targets but we may decide to disable before release or only limit to targets with more available space (>=F4).
2018-03-22 14:02:30 +13:00