1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-22 07:45:29 +03:00
Commit graph

223 commits

Author SHA1 Message Date
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
jflyper
944a2986a5 Use busDevice_s for reconfigurability 2018-05-04 17:09:56 +09:00
Bruce Luckcuck
1bfc2c2fa7 Add descriptive enumeration for vcd_video_system values
Previously the values were numeric and ranged from 0 to 2. This change adds a descriptive value list as "AUTO", "PAL" and "NTSC".
2018-04-28 11:08:57 -04:00
blckmn
a9f74cd6df Removed excess trailing spaces before new lines on licenses. 2018-04-25 20:58:00 +10:00
Michael Keller
5c8f330c33
Merge pull request #5706 from ctzsnooze/yaw_spin_fix2
Yaw Spin Recovery
2018-04-25 00:23:08 +12:00
Michael Keller
ec583cf9e9
Merge pull request #5755 from mikeller/make_frsky_spi_telemetry_configurable
Made FrSky SPI telemetry and external telemetry values configurable.
2018-04-25 00:16:37 +12:00
Michael Keller
3ef12389da
Merge pull request #5743 from codecae/crsf_displayport
CMS Telemetry over CRSF w/ Lua Script (X9D, so far)
2018-04-25 00:09:58 +12:00
Curtis Bangert
9d4d3ad45c CMS Telemetry over CRSF w/ Lua Script (X9D, so far) 2018-04-23 22:34:30 -04: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
mikeller
d88bec63a8 Made FrSky SPI telemetry and external telemetry values configurable. 2018-04-24 00:14:50 +12: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
jflyper
f9f05ecad5 FLASH Full (re)configurability (#5720) 2018-04-20 07:55:17 +12:00
Alberto García Hierro
e192f82fcc Don't make the report_cell_voltage setting depend on IBUS (#5711)
report_cell_voltage was only compiled in when IBUS was enabled, but
it's used for several telemetry protocols. Now it only depends on
USE_TELEMETRY.
2018-04-19 21:06:39 +12:00
pulquero
a86aaeebd1 Improve ESC warning message and include current threshold check. (#5685)
Signed-off-by: Mark Hale <mark.hale@physics.org>
2018-04-18 00:25:36 +12:00
Míguel Ángel Mulero Martínez
802edf236b Fix Blackbox P interval (#5645) 2018-04-10 00:35:54 +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
Bryce Johnson
588addd6dd added crashflip_motor_percent. This will use the other motors while doing a turtle. (#5600) 2018-04-06 20:24:48 +12:00
Bruce Luckcuck
7bc600d651 Throttle limit feature (#5608)
Adds new throttle_limit_type and throttle_limit_percent parameters that allow the pilot to limit the maximum commanded throttle seen by the flight controller by either scaling or clipping the maximum throttle.  The default is 100 representing no limiting.  So as an example, if a pilot was to set throttle_limit_type = SCALE and throttle_limit_percent = 80 the throttle input would scale from 0 to 80% based on full stick deflection from the radio.

This capability replaces the method of limiting throttle in the radio which some pilots are using to manage throttle on tight courses or reduce overall battery consumption when the extra power isn't needed.

There is no effect on the maximum throttle seen by the motors so the mixer still has full authority.
2018-04-05 16:01:28 +12:00
Chris
c71cfe1b8c Cache up SDIO Writing, add option to enable clock bypass. (#5612)
* Speed up SDIO Writing, add option to enable clock bypass.

* Fix identation

* Requested changes

* Move PG SDIO into correct place.
2018-04-05 12:52:30 +12:00
Michael Keller
07cce64572
Added ESC temperature warning, fixed ESC warning issue with motor count > 8. (#5583) 2018-04-04 01:04:18 +12:00
codecae
bc824e42c2 Corrected CLI to include vtx_band=0 to enable freq selection mode. (#5465) 2018-04-03 19:59:02 +12:00
Michael Keller
83e614c139
Made MSC initialisation pin configurable. (#5535) 2018-03-27 01:04:59 +13:00
Michael Keller
4b20ab5d7b
Fixed naming inconsistency for OSD elements. (#5534) 2018-03-26 11:30:19 +13:00
joelucid
ee8daac41d ITerm rotation (#5469)
* ITerm rotation

* address requested changes

* now counting up

* scale errors according to Ki while rotating

* iterm_rotation profile setting

* revert to non scaled version, style related fixes

* Triggering a CI build.
2018-03-26 10:50:21 +13:00
etracer65
9edce2359a Add current battery voltage as an option for the OSD stats page (#5531)
Allows the user to configure a new OSD stat item called "BATTERY" that will display a live and updating battery voltage. This would allow the user to see how their battery was recovering after disarming by comparing to the stat "END BATTERY".
2018-03-25 13:56:25 +13:00
conkerkh
b9ab42d6a7 Enable Composite USB HID for all F4, add PG for USB device. (#5525) 2018-03-25 12:44:57 +13:00
joelucid
efda704ee5 Throttle boost (#5508)
* throttle boost which temporarily boosts throttle in both directions to improve response

* fix comment and use pt1FilterGain

* incorporate review suggestions

* incorporate review suggestions

* use float constant to avoid double promotion

* formatting changes

* formatting change

* hopefully last style changes
2018-03-25 11:33:22 +13:00
etracer65
c8a646ebc3 Cleanup 32K capable gyro includes (#5523)
Added a `USE_32K_CAPABLE_GYRO` define set in `common_fc_post.h` that replaces the repeated testing for each gyro define wherever 32KHz compatibility is checked.
2018-03-24 18:02:27 +13:00
joelucid
98a77dcd96 Discontinuity fix (#5509)
* use continuous feed-forward

* use continuous feed-forward

* formatting
2018-03-23 14:13:32 +13: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
Andrey Mironov
a453063dd7 Restricted Dterm lowpass filter options (#5492)
* Restricted allowed filter types for Dterm lowpass 1

* Fixed output of CLI lookup entires with skips

* Reverted trailing NULLs

* Revert whitespace changes
2018-03-22 10:28:10 +13:00
AJ Christensen
46291a8374 Dual-stage Gyro Filtering: PT1, Biquad, Butterworth, Denoise (FIR), FKF (fixed K), and Biquad RC+FIR2 (#5391)
* Dual-stage Gyro Filtering: PT1, FKF, and Biquad RC+FIR2

* Builds on the previous work of apocolipse.
* Fixes 'stage2'/'stage1' mis-naming to reflect where it is applied in the loop.
  That is, the older Biquad, PT1, Denoise (FIR) filters are 'stage2' - applied
  after dynamic and static notches (if enabled), and the controversial PT1,
  'fast Kalman' filter, and Biquad RC+FIR2 filters, are 'stage1'. e.g. before
  dynamic notch.
* FKF bruteforce Kalman gain removed. Calculate from half of PT1 RC constant,
  automatically taking loop-time into account.
* New union type definition for stage1 filtering.
* New gyro sensor members for stage1 filter application function and states for
  all three supported filter types
* New enum types for stage1 v. stage2. dterm lowpass type references 'stage2'.
* updates to CMS/MSP/FC to allow compilation (untested, probably breaks
  MSP, Lua, and ~comms with BFC~).
* Refactors FKF initialization, update and associated structures to be faster by
  not continuously calculating 'k'. Filter gain is calculated once during
  initialization from RC constant as per PT1 and Biquad RC+FIR2. It was
  discovered this converges to static value within 100 samples at 32kHz, so can
  be removed. Remove related interface (CLI) settings.
* update dterm_lowpass_type to use new 'TABLE_LOWPASS2_TYPE' (biquad/pt1/FIR)
* Stage 1 defaults to PT1, 763Hz (equivalent to Q400 / R88 from quasi-kalman
  filter) - suitable for 32kHz sampling modes. Can be switched to Biquad
  RC+FIR2, and FKF.
* Update `#if defined(USE_GYRO_SLEW_LIMITER) to `#ifdef`.
* Includes optional Lagged Moving Average 'smoothing' pipeline step, applied (in
  code) after the output of stage1.
* (diehertz): Removed redundant pointers from gyro filtering

* blackbox: fix indentation

* cms IMU menu: fix indentation

* filters: remove USE_GYRO_FIR_FILTER_DENOISE in filter type enum

* gyro sensors: go back to `if defined()` form. for slew limiter

* gyro sensors: increment parameter group version

* due to non-appending changes, the version must be bumped.
2018-03-21 15:52:59 +13:00
SteveCEvans
11fb4cb091 If RSSI Channel is set to Disabled when using S.Bus then generate RSS… (#5090)
* If RSSI Channel is set to Disabled when using S.Bus then generate RSSI signal using frame drop flags from the rx

* Set RSSI max level for S.Bus to 1024 so OSD defaults can be used

* Failsfafe must be detected rather than just reporting dropped frames

* Failsafe implies dropped frames

* Remove failsafe debug

* Use RSSI_SOURCE_RX_PROTOCOL

* Add rssi_from_rx_protocol to enable siqnal quality from rx to be processed as RSSI

* Use RSSI_MAX_VALUE definition

* Use rssi_from_rx_protocol flag for fport rx

* Update serialpassthrough help text

* Revert erroneous commit

* Use rssi_src_frame_errors boolean

* rssi_src_frame_errors = ON | OFF

* Moved rssi_src_frame_errors to end of rxConfig_t struct

* Add documentation of rssi_src_frame_errors

* Synthesise RX_FRAME_FAILSAFE flag to protect from bad implementation in receivers

* Match rx failsafe behaviour exactly

* Only set RX_FRAME_COMPLETE if valid frame is received

* RSSI_SOURCE_FRAME_ERRORS moved to end of rssiSource_e enum

* Removed superfluous else if clause

* Restore debug code

* Restore stateFlags

* Set RX_FRAME_DROPPED flag when failsafe is triggered
2018-03-21 13:36:23 +13:00
ctzsnooze
ab231b7c84 Second dterm pt1 (#5458)
* Second PT1 on DTerm

This PR replaces the default biquad filter with a second PT1 set to
200Hz.

Basically allows the user to enable a second, set point configurable,
PT1 type first order low-pass filter on DTerm.

This is useful because most noise in most logs arises from D, not P.

The default is set to on, at twice the normal Dterm setpoint.  This
provides greater Dterm cut than a single PT1, and twice the steepness
of cut above the second setpoint.  Modelling shows significant
reductions in higher frequency Dterm noise with only minor additional
delay.

The improvement in noise performance will be less than for biquad, but
the delay is considerably less.

If with the default settings the overall noise improves a lot, it may
be possible bring D both filtering set points to higher numbers (e.g.
140/280), or alternatively remove other filters such as the notch
filters, while maintaining an adequate level of control over noise.

* Update names, old defaults, fix whitespace

Defaults restored to biquad with second PT1 off.  ‘lpf’ retained as
abbreviation for values, otherwise generally remove ‘Filter’ where
redundant, replace ‘FilterLpf’ with ‘Lowpass’, etc, thanks Fujin and
DieHertz

* Remove underscore in lowpass_2, add hz to setpoint for lowpass

Thanks DieHertz

* completed replacing lpf with lowpass, added _hz to all lowpass set points in profile

Thanks DieHertz

* fix whitespace

fixed whitespace in settings.c

* whitespace attempt #57

* change lpf to lowpass where appropriate elsewhere

Note did not change OSD abbreviations, they are still LPF, and did not
change gyro_lpf anywhere.

* second attempt at a simple PT1 implementation

Basically copied from the DtermNotch implementation

* Second PT1 on DTerm

This PR replaces the default biquad filter with a second PT1 set to
200Hz.

Basically allows the user to enable a second, set point configurable,
PT1 type first order low-pass filter on DTerm.

This is useful because most noise in most logs arises from D, not P.

The default is set to on, at twice the normal Dterm setpoint.  This
provides greater Dterm cut than a single PT1, and twice the steepness
of cut above the second setpoint.  Modelling shows significant
reductions in higher frequency Dterm noise with only minor additional
delay.

The improvement in noise performance will be less than for biquad, but
the delay is considerably less.

If with the default settings the overall noise improves a lot, it may
be possible bring D both filtering set points to higher numbers (e.g.
140/280), or alternatively remove other filters such as the notch
filters, while maintaining an adequate level of control over noise.

* Rebase

* Remove underscore in lowpass_2, add hz to setpoint for lowpass

Thanks DieHertz

* completed replacing lpf with lowpass, added _hz to all lowpass set points in profile

Thanks DieHertz

* fix whitespace

fixed whitespace in settings.c

* whitespace attempt #57

* change lpf to lowpass where appropriate elsewhere

Note did not change OSD abbreviations, they are still LPF, and did not
change gyro_lpf anywhere.

* second attempt at a simple PT1 implementation

Basically copied from the DtermNotch implementation

* Whitespace fix - thanks, Ledvinap

* Fix PG issue

by moving added dterm_lowpass2_hz to bottom of struct

* Got rid of redundant indirection

* Fixed indentantion shifts
2018-03-21 01:40:23 +13:00
jflyper
462672ffb7 Increase ibata_offset range to accommodate certain Hall effect sensors (#5467) 2018-03-21 00:27:25 +13:00
jflyper
e3c258d65f Add inverted option (#4577) 2018-03-20 14:05:55 +13:00
Petr Ledvina
141d6ec30a Higher-order gyro filter (#5257)
* Implement nth order Butterworth

Uses biquad sections

* Purge RC+FIR2

* Add butterworth LPS as gyro filter

Replaces RC+FIR

* Make FKF code conditional

* Add USE_FIR_FILTER_DENOISE

Denoise is almost useless anyway ...
2018-03-15 01:45:20 +13:00
jflyper
416495e17a Convert BEEPER to USE_ scheme (#5433) 2018-03-11 09:28:08 +13:00
Austin
4d3666b77b Fix for minthrottle when feature 3D and PWM enabled (#5102)
* Fix for minthrottle when feature 3d and pwm enabled

* add parameters for min and max 3d output

* bug fix

* remove new parameters from msp

* remove new parameters again

* fixed indentation
2018-03-09 06:44:17 +13:00
SteveCEvans
0430fcb67d Add ledstrip_grb_rgb setting (GRB or RGB) to handle WS2811 or WS2812 … (#5255)
* Add ledstrip_grb_rgb setting (GRB or RGB) to handle WS2811 or WS2812 LED drivers

* Rename setting lookup table to lookupLedStripPackingOrder

* Fix call to ws2811UpdateStrip

* Fix unit test

* Use ledStripFormatRGB_e enumeration for RGB packing format

* Fix unit test

* Whoops. Make ledStripFormatRGB_e match lookupLedStripFormatRGB

* Applied review feedback

* Add documentation of ledstrip_grb_rgb
2018-03-06 09:39:14 +13:00
Andrey Mironov
e49dfb1634 Added F7 overclock (#5372) 2018-03-06 08:28:29 +13:00
Steffen Windoffer
2f8e59f8fc fix rate accel limit ranges (#5367) 2018-03-04 11:49:53 +13:00
etracer65
3b20e8279b Add accelerometer calibration values to the CLI - also change mag calib representation (#5354)
Allows the accelerometer calibration to be exported in a dump or diff and restored after upgrading.

The accelerometer calibration is specific to the frame and orientation in which the flight controller is installed.  The users should have a way to restore a correct setting during upgrades without having to recalibrate after every flash.  Replicates the way the magnetometer calibration is exported.

Added acc_calibration as an array type to the CLI.  For consistency changed magnetometer representation from magzero_X, magzero_Y, magzero_Z to be a single array mag_calibration.
2018-03-04 11:48:51 +13:00
Míguel Ángel Mulero Martínez
73eb5d396e Add compass QMC5883L driver (#5309) 2018-03-04 11:45:54 +13:00
Dominic Clifton
cde9a9517b SPRacingF7DUAL - Dual SIMULTANEOUS gyro support. (#5264)
* CF/BF - Set STM32F7 SPI FAST clock to 13.5Mhz - Gyros not stable at
27mhz.

* CF/BF - Initial SPRacingF7DUAL commit.

Support two simultaneous gyro support (code by Dominic Clifton and Martin Budden)
There are new debug modes so you can see the difference between each gyro.

Notes:
* spi bus instance caching broke spi mpu detection because the detection
tries I2C first which overwrites the selected bus instance when using
dual gyro.
* ALL other dual-gyro boards have one sensor per bus.  SPRacingF7DUAL is has two per bus and thus commit has a lot of changes to fix SPI/BUS/GYRO initialisation issues.

* CF/BF - Add SPRacingF4EVODG target.

This target adds a second gyro to the board using the SPI pads on the back of the board.

* CF/BF - Temporarily disable Gyro EXTI pin to allow NEO target to build.
2018-03-04 11:29:31 +13:00
Michael Keller
9bcc6aca8e
Revert "BEEPER Conversion to use USE_ scheme" (#5368) 2018-03-04 09:40:17 +13:00
jflyper
ea0db878bf Convert to USE_ scheme 2018-03-02 22:29:40 +09:00