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

62 commits

Author SHA1 Message Date
borisbstyle
b9e16ef243 Merge branch 'aux_failsafe' into betaflight
Conflicts:
	src/main/config/config.c
2015-09-25 15:34:57 +02:00
borisbstyle
bc7dfb5ff5 Fix for changing PID's for users with Inflight Adjustments
Users who upgraded from 1.9 and have inflight adjustments configured now
experience changed PID's. Sometimes even to dangerous and unflyable
situation. Sometimes rx boots slower than the FC

This is because AUX channels go low and usually thats where they change
things.

IMO the new failsafe behaviour for AUX should be midrc default like
before!

cleanup
2015-09-24 15:16:51 +02:00
borisbstyle
5a1301f73d Merge branch 'master' into betaflight
Conflicts:
	Makefile
	src/main/io/serial_cli.c
	src/main/main.c
	src/main/sensors/initialisation.c
	src/main/sensors/initialisation.h
2015-09-11 11:19:25 +02:00
ProDrone
5ca5c2d161 Adapted RX suspend & resume on EEPROM read & write
Modified to make mechanism use time instead of counters for call
frequency independency.
Skipping RC samples uses a counter for time independency.

Also LED and beeper patterns were changed by previous implementation.
Corrected with RX supend/resume feedback to failsafe system.
2015-09-07 14:19:12 +02:00
borisbstyle
febee3fb90 Merge branch 'master' into betaflight
Conflicts:
	src/main/drivers/system.c
	src/main/rx/rx.h
2015-09-07 10:08:34 +02:00
Dominic Clifton
9208b8701a Merge pull request #1255 from ProDrone/pr1233_rxfail_mode_changes_1
Changed behavior of PR #1233 - solves issue #1254
2015-09-05 23:01:11 +01:00
Dominic Clifton
0caf8a65ba Merge pull request #852 from ProDrone/Failsafe_features_1
Failsafe - New failsafe functionality (Phase 1)
2015-09-05 22:50:34 +01:00
ProDrone
f0681de53d Updates and feature additions to failsafe system.
- Added failsafe flightmode and rc control box.

To make failsafe procedure a separate flight mode and make it possible
to trigger failsafe with an AUX switch.

- Failsafe mode is activated when failsafe is active.

RC link lost is simulated with the failsafe AUX switch.
When NOT armed: failsafe switch to failsafe mode is shown in GUI (mode
tab).

- Activate failsafe mode with AUX switch.

- Prevent arming when failsafe via AUX switch is active (safety issue).

- Make failsafe disarm if motors armed and throttle was LOW (2D & 3D)
for `failsafe_throttle_low_delay` time (__JustDisarmEvent__).

Applied code changes to effectively add pull request: Make failsafe
disarm if motors armed and throttle low #717.

- Use failsafeIsMonitoring() to actually start monitoring.

- Added `failsafe_kill_switch` to code.

When set to 1 (0 is default), the failsafe switch will instantly disarm
(__KillswitchEvent__) instead of executing the landings procedure.
Arming is NOT locked after
this, so the craft could be re-armed if needed.
This is intended for racing quads where damage and danger must be
minimized in case of a pilot error.

- Added `failsafe_throttle_low_delay`, adapted documentation.

Used to adjust the time throttle level must have been LOW
to _only disarm_ instead of _full failsafe procedure_
(__JustDisarmEvent__).

- Updated the failsafe documentation.

- Re-enable arming at end of failsafe procedure.

At the end of a handled failsafe event, that means: auto-landing,
__JustDisarmEvent__ or __KillswitchEvent__, the RX link is monitored for
valid data.
Monitoring is a part of the failsafe handling, which means the craft is
still in failsafe mode while this is done.
Arming is re-enabled (allowed) when there is a valid RX link for more
then XX seconds, where XX depends on the handled event like this:
1. XX = 30 seconds after auto landing.
2. XX = 3 seconds after __JustDisarmEvent__.
3. XX = 0 seconds after __KillswitchEvent__.

NOTE: When armed via an AUX switch, you will have to switch to the
disarmed position at the very end to be able to re-arm.
The failsafe mode will not end until you do.

- __KillswitchEvent__ has now priority over __JustDisarmEvent__

- Apply rxfail values instantly when failsafe switch is ON

- Added missing cases to display.c

Show M when failsafe is monitoring for RX recovery (AND disarming when
armed with a switch).

===

Reworked the code from counter-based to time-based.

- AUX failsafe switch now has identical behavior to RX loss.

- Added RX failure and RX recovery timing.

- __KillswitchEvent__ skips RX failure detection delay (direct disarm).

===

[UNIT TESTS]

Adapted failsafe related unittests from counter-based to time-based

- Added failsafeOnValidDataFailed() to some tests

- Removed duplicate test setup from rc_controls_unittest.cc

- Removed magic numbers from rx_ranges_unittest.cc and rx_rx_unittest.cc

- Reworked all test-cases for flight_failsafe_unittest.cc
2015-09-04 16:55:40 +02:00
ProDrone
3a13edfdad Fix false RX loss detection on EEPROM read/write
The problem is caused by hardware counters (timekeeping and PPM/PWM
measurement) that keep running while the firmware is frozen. The result
is misinterpretation of received data.

EEPROM read & write now call a suspend and resume function to make RX
ignore incoming wrong data during reads/writes (and flush the wrong data
on resume).

Fixes issue #1257

(+1 squashed commit)
- Moved the check for skipSamples to the right place.

As commented by hydra
2015-09-04 16:54:25 +02:00
ProDrone
a46832fd85 Changed behavior of PR #1233 and doc update
Stick channels only have AUTO and HOLD mode.
AUX channels only have SET and HOLD mode.
Added check to parameter in CLI.
Modified rx.md to reflect changes (and more).

+1 squashed commit:

- A cleaner approach for the same functionality

Basically addressing all comments from Hydra
2015-09-04 16:51:19 +02:00
borisbstyle
4899c0898d rebase correction 2015-09-02 00:41:12 +02:00
borisbstyle
82e23fd437 rework RC Smoothing 2015-09-02 00:31:46 +02:00
borisbstyle
60955fc27d RC Smoothing
fix loopcount

Improve AUX logic // initial factor set to 1

Better Delta approach

FIX AUX CALC

Update refresh rates
2015-09-02 00:30:36 +02:00
Nicholas Sherlock
f29b9dd329 Blackbox: Use rx getters instead of importing private state directly 2015-08-28 21:26:11 +12:00
Nicholas Sherlock
b6a75cb3f1 Add Blackbox logging of rx loss state flags
Closes #1266
2015-08-28 17:26:45 +12:00
Dominic Clifton
3f8363f908 Merge pull request #1233 from cleanflight/rxfail-auto-mode
Failsafe - Add rxfail `auto` mode.
2015-08-20 02:05:51 +01:00
Dominic Clifton
2c79b9777e Large code re-organization which separates some key tasks in the rx
code.

Tested with X8R in SBus and PWM, and Spek Sat, GR-24 PPM, PWM and SUMD,
Spek PPM
2015-08-20 01:46:29 +01:00
Dominic Clifton
a030d4dd9e Failsafe - Add rxfail auto mode. Allow rxfail to be used for all
channels, not just aux channel.
2015-08-20 01:37:29 +01:00
ProDrone
95840ae512 rcData[] is keeping the right values now.
Logic for valid flightchannel detection is inverted in order to detect
the first flightchannel failure instead of waiting to check them all.

Clear PWM channel capture on read.

This invalidates the control channels on read. They are validated by
receiving a good value BEFORE the aux channels are received. This is
done because control channels configures to go OFF on failsafe are
detected with a PWM capture time-out. Time-out took so long that all aux
channels where overwritten by their RX configured failsafe values BEFORE
the invalid (=OFF) control channel was detected.
2015-08-08 10:45:03 +02:00
Dominic Clifton
9d3276b222 Code and documentation cleanup of rc calibration.
Note: since it didn't actually calibrate anything it has been renamed to
rxrange.

Added ability to reset rxranges using `rxrange reset` - this follows the
same pattern as other cli commands.
2015-08-04 01:13:28 +01:00
Dominic Clifton
27f8223de7 Merge branch 'rc-calibration' of
https://github.com/digitalentity/cleanflight into
digitalentity-rc-calibration

Conflicts:
	docs/Rx.md
	src/main/io/serial_cli.c
	src/main/rx/rx.c
	src/main/rx/rx.h
2015-08-04 00:06:12 +01:00
Dominic Clifton
1ef2d8ea4d Cleanup PWM rx loss detection. 2015-08-03 20:17:47 +01:00
Dominic Clifton
490268d2fc Failsafe - Allow AUX channels to HOLD their last value or be SET to a
specific value when RX loss is detected.

Tested with SBus, PWM & PPM.
2015-08-03 18:16:28 +01:00
Dominic Clifton
3436b08575 Failsafe - Remove magic number usage. Cleanup whitespace 2015-08-03 17:03:53 +01:00
ProDrone
08b376f2a5 RPY to mid-stick and T to lowest (or mid for 3D).
On bad (out-of-range) pulses; ROLL, PITCH, YAW will go to `mid_rc` and
THROTTLE will go to `rx_min_usec` (to `mid_rc` for 3D mode). So these
channels will no longer be set by the user directly.
Fallback values for the aux switches (0 .. max) can be set with this
version. Since these switches may trigger all kind of things, the user
needs control over them in case of a RX failsafe event.

A single flight control channel failure (first 4) when using parallel
PWM is interpreted as a failure for all flight control channels (first
4), since the craft may be uncontrollable when one channel is down. (+4
squashed commit)

Squashed commit:

[dbfea9e] Apply fallback values also when serial_rx init failed and/or
RX
disconnected and/or no signal received.

[b5a2ecd] Added get/set MSP commands for RXFAIL config

Bumped API minor version up.

[c0e31ce] minor change for coding standard

[322705f] Added programmable RX channel defaults on rx lost Update #2
2015-07-31 14:35:14 +02:00
digitalentity
2614111c39 Implemented RC calibration and unit-tests
Added rc calibration docs to Rx.md
2015-07-16 08:49:18 +10:00
Dominic Clifton
7a01bab50f Constrain invalid values by using rx_min_usec and rc_max_usec. Provide
sensible/fix min/max settings for those settings.

This fixes erratic flight behaviour before failsafe kicks in on SBus
receivers.

An X8R SBus RX in failsafe mode outputs 880 on all channels.

See #918 and #919
2015-05-20 00:28:52 +01:00
Dominic Clifton
67c6967da7 Ensure rx signal loss detection works for parallel pwm. 2015-05-19 22:48:05 +01:00
DaTwo
38308020a1 Update rx.c 2015-05-07 04:47:03 -07:00
DaTwo
98a9826bdf Update rx.c 2015-05-07 04:20:20 -07:00
Dominic Clifton
bad0b1b04d Fix random RX loss beep when using Serial RX receivers. 2015-04-23 16:36:56 +02:00
Dominic Clifton
fbc3a8e1eb Correct rx channel min/max pulse checking so that it is inclusive to
match the documentation.  Add first unit tests for code in rx.c.
2015-04-19 13:22:32 +01:00
Dominic Clifton
c8c0c85656 First-cut of a refactored failsafe system.
* fixes issue where indicators would flash when SBus RX entered failsafe
mode.
* fixes bug where turning off a TX for an SBus RX would instantly disarm
when using a switch to arm when the channel went outside the arming
range.
* introduces failsafe phases to make the system more understandable.
* allows the system to ask if rxSignalIsBeing received for all RX
systems: PPM/PWM/SerialRX/MSP.  Also works when a serial data signal is
still being received but the data stream indicates a failsafe condition
- e.g.  SBus failsafe flags.
* failsafe settings are no-longer per-profile.

Untested: Sumd/Sumh/XBus/MSP (!)
Tested: SBus X8R, Lemon RX Sat, X8R in PWM, Spektrum PPM.
2015-04-16 01:31:12 +01:00
Dominic Clifton
f28158a5a7 Cleanup debug code. 2015-04-14 13:59:11 +01:00
Dominic Clifton
1e7fb08b9d Ensure failsafe is not reset when using stale serial rx channel data. 2015-03-15 22:05:54 +01:00
Dominic Clifton
7d6e4aa390 Updating the SerialRX drivers so they can report back a failsafe
condition.  Improve SumD driver, when a failsafe is detected the values
from the frame will be used (same behaviour as SBus when SBus RX reports
failsafe).
2015-03-14 23:28:38 +01:00
Dominic Clifton
e40a3663d2 Remove failsafe vtable usage. 2015-03-09 23:19:21 +01:00
Dominic Clifton
1c9ebf9437 Use received Serial RX data even when serial rx reports failsafe. 2015-03-03 23:17:25 +00:00
Dominic Clifton
5163bef0b2 Refactor serial port configuration, stage 1.
Tested and working:
* multiple MSP ports at different baud rates.
* cli on any MSP port.
* GPS
* gps passthough on currently active cli port.

Example config used for testing:

feature SOFTSERIAL
feature GPS
feature RX_PPM
serial_port_1_functions = 1
serial_port_1_baudrate = 115200
serial_port_2_functions = 128
serial_port_2_baudrate = 115200
serial_port_3_functions = 1
serial_port_3_baudrate = 19200
serial_port_4_functions = 0
serial_port_4_baudrate = 0

Known broken:
* Telemetry and shared serial ports
* Telemetry when unarmed.

Probably broken:
* Blackbox on shared port.

Untested.
* Serial RX.
* Blackbox.
2015-02-12 01:28:53 +00:00
Dominic Clifton
c85919325c Exclude a bit more code when USE_ADC is not defined for a target. 2015-01-30 22:43:04 +01:00
Dominic Clifton
bcedbd77fb Adding a FIXME regarding changing serialrx_provider at runtime. 2015-01-27 23:18:05 +01:00
Stefan Grufman
12f45b4f04 Merge branch 'master' into xbus_jr01 2015-01-24 13:54:58 +01:00
Ben Hitchcock
82161882bb Bugfix for situations where Rx mapping is being used, and failsafe is kicking in unecessarily. An example is when a GPS is being used on UART2 (Rx pin 4), with the mapping of AET4R123. This code prevents failsafe being triggered by GPS data on Rx pin 4. 2015-01-17 22:29:06 +08:00
Stefan Grufman
0a3a8667d1 Merge branch 'master' into xbus_jr01 2015-01-15 20:15:36 +01:00
Petr Ledvina
6b5f1fc38b fix index overflow in channel mapping 2015-01-09 10:52:46 +01:00
Dominic Clifton
fd86014308 Update RX_MSP to support 18 channels. Fix MSP_SET_RAW_RC / channel
mapping problem.
2015-01-08 09:03:57 +00:00
Stefan Grufman
d3b21f8e36 Messed up the numbers, now changed to correct RJ01. 2014-12-27 14:52:06 +01:00
Stefan Grufman
e8e53ab7f1 Added initial suport for Align JR01 DMSS (i.e. satellite receiver for JR systems) support. 2014-12-27 14:01:40 +01:00
Stefan Grufman
981adf51d9 Cleanup for coding standard. 2014-12-21 17:01:14 +01:00
Stefan Grufman
509f73853d Added initial version of JRPropo XBUS Mode B support. 2014-12-15 22:15:47 +01:00