Commit Graph

10929 Commits

Author SHA1 Message Date
SteveCEvans 5558174d33 Support programming of Arduino devices in serial passthrough mode (#5129)
* Support DTR in serial passthrough mode to enable programming of Arduino
based devices such as MinimOSD.

Use 'serialpassthrough 5 57600 rxtx 56' and then use Ardino to program MinimOSD
Use 'serialpassthrough 5 115200' and then use MWOSD configurator to setup

* Fix comment for CDC_SetCtrlLineStateCb routine

* Handle F7 CDC interface

* Use strToPin() to allow easy port/pin specification

* Fix use of CDC_SetCtrlLineStateCb for all processor types

* Only set baud when specified

* Fix unit tests for cli

* Only register callback if needed

* Fix white space

* Provide implementation of IOConfigGPIO in SITL

* Update serialpassthrough help text

* DTR handling through serial drivers

* Fix F3, F7 and SITL builds

* If serialpassthrough command specifies baud rate of 0, set baud rate over USB. MWOSD configurator can now access config and reflash MinimOSD without rebooting and changing baud rate.

* Fix F3 build

* Fix failing unit tests

* Use resources to declare DTR pin assignment

* Don't assert DTR during normal operation as MW_OSD doesn't like it

* MW_OSD must be built with MAX_SOFTRESET defined in order to support DTR resets

* Minimise changes after dropping DTR pin param from serialpassthrough cmd

* Remove DTR pin param from serialpassthrough cmd

* Treat ioDtrTag as boolean in conditional statements

* Tidy buffer check

* Check buffer size in CDC_Itf_Control

* Fix unit test

* Add documentation for DTR

* Add note on MAX_SOFTRESET to documentation

* Remove superfluous function definitions

* Fix tabs

* Fix tabs

* Removed superfluous entried from vtable

* Backout whitespace changes unrelated to this PR

* Pass true/false to IOWrite()

* Fix line coding packing

* Add LINE_CODING structure defintion

* Revise serial documentation

* Prevent tx buffer overflow in serialPassthrough()

* Revert change unrelated to PR

* Review feedback from ledvinap

* Fix unit test

* Use PINIO to drive DTR

* Fix unit test

* Remove change unrelated to PR

* Fix SITL build

* Use shifted bits for mask definition

* Fix serialpassthrough documentation

* Only compile PINIO functionality if USE_PINIO defined

* IOConfigGPIO not needed

* Move cbCtrlLine callback to cli.c

* serialPassthrough params changed

* Check packed structure size

* Fix unit test

* Tidy up baud rate handling
2018-03-21 23:17:31 +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
Michael Keller a579fc5b22
Revert "Reinstate software serial (#5480)" (#5486)
This reverts commit f7c10593be.
2018-03-21 15:28:56 +13:00
jflyper f7c10593be Reinstate software serial (#5480) 2018-03-21 14:06:53 +13:00
mice5 93d86f3dab [KAKUTEF4] Move ADC to DMA2_Stream0 to avoid conflict (#5481)
* Move ADC to DMA2_Stream0 to avoid conflict

Motor 6 output is declared to use DMA2_ST4, which is used by default by ADC so Dshot is not possible on that output.

* Omitting channel defines

ADC channels are inferred from corresponding pins.
2018-03-21 13:48:08 +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 d2bc4e5af5 F7 Internal ADC (VREFINT and TEMPSENSOR) (#5322) 2018-03-21 00:52:37 +13:00
jflyper 462672ffb7 Increase ibata_offset range to accommodate certain Hall effect sensors (#5467) 2018-03-21 00:27:25 +13:00
etracer65 6b1336a940 Make OSD stats page follow the state of the OSD disable switch mode (#5463)
Previously the OSD stats would always display even if the OSD disable switch mode was active.

Additionally, since the OSD stats page must now be dynamically refreshed rather than only rendered once at disarm, "live" stats like RTC clock and the timer "ON TIME" continue to update and display current information.  All other stats related to the previous flight remain static as of the disarming.
2018-03-21 00:21:08 +13:00
Miroslav Drbal [ApoC] 3ce8223c96 Dynamic filter performance improvement for 16k and 32k gyro loop frequency (#5450)
* * FAST_RAM-ing variables used to compute FFT
* Eradicated global static variables in favour of define
* FFT_WINDOW_SIZE / 2 replaced with FFT_BIN_COUNT
* Limit call count of filters update to necessary minimum on 32k and 16k gyro sampling rate
* Dynamic filter recalculation freq. is at least FFT_SAMPLING_RATE + update time
* Moved global variables used in local scope only to local scope

* * Based on diehertzs review I removed all 0 initializations of global variables

* * Fixed calculation of update frequency for center frequency filter, thx rav-rav for pointing the problem

* * Silenced the warning signed vs unsigned comparison

* * Replaced magick values 3*4 and 12 with preprocessor macro as requested by DieHertz

* * Replaced hardcoded axis count with proper preprocessor macro
2018-03-21 00:17:34 +13:00
conkerkh c182748dbb SDIO rewrite in baremetal, fixes for WORMFC. (#5441)
* SDIO rewrite in baremetal, fixes for WORMFC.

* Fix identation, move LED TIM

* Fix identation
2018-03-21 00:08:34 +13:00
Konstantin Sharlaimov eb70859e4a MSPv2 implementation (#3977)
Some refactoring

Refactor CRC calculations; Unsigned type for size and offset
2018-03-20 14:20:07 +13:00
jflyper e3c258d65f Add inverted option (#4577) 2018-03-20 14:05:55 +13:00
Michael Keller 2ba0f74f5f
Fixed puntuation in documentation. Also, testing [ci skip] (#5474) 2018-03-20 13:17:15 +13:00
Michael Keller 499d619e27
Updated release notes to include information about the AKK / RDQ VTX fix branch. [ci skip] (#5472) 2018-03-20 12:43:57 +13:00
Míguel Ángel Mulero Martínez 44b19f3cdb Fix MSP values of the MAG (#5451)
The MAG only shows positive values in the configurator. This fixes it.
2018-03-16 08:09:13 +13:00
etracer65 0e051bebb2 Simplify CLI case-insensitive by using new strcasestr() (#5449)
Remove string lowercase function from cli.c and use the new strcasestr() added to string_light.c
2018-03-16 07:41:00 +13:00
jflyper 6056ee1740 Uniformly reduce UART buffer sizes to 128 bytes (#5432) 2018-03-15 20:26:13 +13:00
etracer65 abe5b61ff8 IMU attitude estimate accelerated convergence after disarming (#5425)
After disarming and allowing the gyros to settle with no motion, temporarily increase the dcmKpGain to rapidly converge on the correct attitude as indicated by the accelerometer (if present).

Addresses the case of the attitude estimate becoming significantly incorrect after a crash due to high gyro rates.  While the estimate will eventually converge, it does so quite slowly.  The pilot may re-arm before the estimate has corrected leading to instant flips in self-leveling modes.  By speeding up the convergence when disarmed we help reduce this risk.
2018-03-15 20:17:19 +13:00
Michael Keller 509d386f14
Merge pull request #3030 from cleanflight/fix-osd-vtx-power (#5423)
Fix OSD VTX power display.  Only one character for the power is needed.
2018-03-15 02:40:09 +13:00
Michael Keller b0e3da51ea
Merge pull request #3031 from cleanflight/fix-osd-slave-settings (#5424)
CF/BF - Fix OSD slave settings not being saved/reset.
2018-03-15 02:39:26 +13:00
adrianmiriuta c2898a4fd9 review of #4986 (#5422)
* review #4986 v1

* jfliper requested changes

* correction
2018-03-15 02:37:39 +13:00
githubDLG b286c061e6 New target CrazyBeeF3FR (#5420)
* Create target.c

* Add files via upload

* add new target

add new target, CrazyBeeF3FR

* Update target.h

* Update target.h

* Update target.c

* Update target.h

* Update target.c

* Update target.h

* move the 2 jpg to the docs/boards

* add jpg file to docs/boards/

* update picture links of .md file

* try relative reference the pic

* upadte defines form

-#define BEEPER                  PC15
+#define USE_BEEPER
+#define BEEPER_PIN              PC15

#define GYRO
#define USE_GYRO

#define ACC
#define USE_ACC
2018-03-15 02:32:14 +13:00
Michael Keller dd25358a63
Merge pull request #3028 from cleanflight/improve-osd-slave-comms (#5405)
Improve OSD slave timeout/disconnect/reconnect handling.
2018-03-15 02:30:46 +13:00
jflyper 85b922383b MSP_RAW_IMU to convert accADC from float to integer (#5417) 2018-03-15 02:24:39 +13:00
etracer65 f674b01bc8 Change ACC health check to use averaged rather than only the last (#5413)
The function imuIsAccelerometerHealthy() was only using the last ACC sample to determine if the sensor was returning "healthy" data.  This then controlled whether the IMU attitude calculation considered ACC data at all.  There were two problems with this:

1. A single sample from the ACC can be very noisy and exceed the check threshold resulting in a false negative on the health of the sensor.
2. The attitude calculations exclusively used the averaged ACC samples so there was an inconsistency in checking only the last sample to determine if the data was useful.

This change should lead to fewer occurences of the ACC sensor data being ignored in the attitude estimation which should in turn improve the overall estimate.
2018-03-15 02:19:13 +13:00
Petr Ledvina eee15e7ca4 Implement minimalistic strcasestr (#5411)
* Implement minimalistic strcasestr

* fixup! Implement minimalistic strcasestr

* Add _GNU_SOURCE

Enable gcc extensions

* fixup! fixup! Implement minimalistic strcasestr
2018-03-15 02:17:23 +13:00
ileou 31b3959221 Update Building in Ubuntu.md (#5408)
Adjust the ARM_SDK_DIR variable in TOOLS.MK file with the "gcc-arm-none-eabi-xxx" version.
2018-03-15 02:14:33 +13:00
azolyoung 0d3ca7fa6d add a wiki link in the release notes for the update of runcam in BF3.3 (#5403) 2018-03-15 02:08:09 +13:00
etracer65 27bc23c3bb Suppress OSD stats screen if runaway takeoff triggered the disarm (#5402)
and OSD_WARNINGS is visible in the OSD.

The stats screen was preventing the user from knowing that a disarm might be casued by runaway takeoff.  If the warnings element is visible it will have the message "RUNAWAY" but the disarm it triggers caused the stats display to replace the screen.

The change prevents the stats page from displaying if the ARMING_DISABLED_RUNAWAY_TAKEOFF flag is set and the OSD_WARNINGS element is visible.  Otherwise the stats screen is displayed as normal.
2018-03-15 02:04:16 +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
etracer65 35f5e5025f Fix OSD "DISARMED" blanking the display when armed (#5384)
Changed the logic so that if currently armed and the previous arming state was disarmed, then blank out the message for just this single iteration. This should allow any elements behind to be properly displayed when armed.
2018-03-13 09:31:52 +13:00
Petr Ledvina 2abcaebd81 Reimplement strtol/strtoul/atoi (#5400)
newlibc version is pulling in (part of) locale support

Adapted from uClibc source code
Addded support for 0b.... prefix for binary numbers
2018-03-13 09:24:15 +13:00
Dominic Clifton 0a2e5a5878 CF/BF - Update DSP_Lib and STM32F7/Drivers/CMSIS to CMSIS 5.3.0. (#5431)
* CF/BF - Update DSP_Lib and STM32F7/Drivers/CMSIS to CMSIS 5.3.0.

CMSIS 5.3.0 - https://github.com/ARM-software/CMSIS_5/releases/tag/5.3.0

* cleanup lib.

* pfft

* relocate driver files from lib/main/CMSIS/CM* to lib/main/STM32xx
folders

* Move DSP folder inside CM5.

It came from the same source as the other files inside CM5

* Remove the CM5 folder and move the files in it one level up.
2018-03-12 09:34:43 +13:00
jflyper 416495e17a Convert BEEPER to USE_ scheme (#5433) 2018-03-11 09:28:08 +13:00
Dominic Clifton aa42a69d2f Revert "Rewritten F7 dshot to LL (draft)" (#5430)
This reverts commit fa3c7e0833.
2018-03-09 23:39:04 +03:00
J Blackman f00575ef76
Merge pull request #5407 from larryho5/betaflight_3_3_0_R3
- fixed TBS BST "Rates" was missing problem
2018-03-09 14:56:27 +11:00
etracer65 f97df6827e Change CLI "get" to be case-insensitive (#5382)
Matches the behavior of the "set" command.
2018-03-09 06:50:31 +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
etracer65 18b857de65 Correct nested if else for USE_MAG and USE_GPS (#5414)
If USE_MAG was undefined but USE_GPS was defined, then the "else if" would incorrectly apply to a condition above making the USE_GPS section unlikely to execute.
2018-03-08 09:48:22 +13:00
larryho5 4fc43bfcc0 - fixed TBS BST "Rates" was missing problem 2018-03-07 17:26:59 +08: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
Hector Hind 94f06e1e05 Fix FPVM_BETAFLIGHTF7 & OMNIBUSF7V2 Gyro/Acc Alignment. (#5375) 2018-03-06 08:30:02 +13:00
Andrey Mironov e49dfb1634 Added F7 overclock (#5372) 2018-03-06 08:28:29 +13:00
codecae d004cf5fb7 Improved VTX update scheduling to reduce update delays (#5340) 2018-03-06 08:27:50 +13:00
Andrey Mironov a24daa78d0 Fixed possibility of getting stuck in F7 bootloader mode (#5370) 2018-03-04 22:45:40 +13:00
Steffen Windoffer 2f8e59f8fc fix rate accel limit ranges (#5367) 2018-03-04 11:49:53 +13:00
Andrey Mironov 8319c6c6d1 Unified enabling of EXTI for gyro on F7 with other targets (#5364) 2018-03-04 11:49:36 +13:00
Michael Keller f73ada0687
Enabled Dshot burst by default for DALRCF405. (#5362) 2018-03-04 11:49:15 +13:00