Commit Graph

364 Commits

Author SHA1 Message Date
Daniel Agar 26f00609ac multirotor_motor_limits only publish for MC 2017-09-19 02:25:30 +01:00
David Sidrane bcb89f54e2 px4iofirmware:Removed FMUv1 and px4io-v1
Removed FMUv1 and px4io-v1, defaulting to px4io-v2
   were appicable.
2017-09-10 13:37:23 -04:00
Julien Lecoeur 6e35cb002f PX4IO interface protocol: Fix rounding error
Issue: This conversion test failed with gcc 7.1.1 and clang 4.0.1:
```
ERROR [tests] conversion fail: input:  -0.8188, intermediate: -8187, result:  -0.8187
conv FAILED
Command 'tests' failed, returned -1
```

Fix: explicit rounding
2017-08-10 03:09:33 -04:00
Lorenz Meier dc2a2a9552 IO: Better formatting 2017-05-04 22:57:47 +02:00
Lorenz Meier 1bb56e775e IO: Fix access to free memory
The free memory was accessed from interrupt context where it should not be accessed from. We build the statistic now at a fixed rate while not armed.
2017-05-04 22:32:52 +02:00
Lorenz Meier 3d2d6c4fdc IO: Add lazy atomic OR, AND and CLEAR functions for flags
IO needs atomic updates of a few critical status flags, but doing these always atomic (with interrupts disabled) might cause a too high interrupts disabled interval. In order to avoid this only operations that change the state of the target variable are done with interrupts disabled, while operations without an effect on the target variable are not executed.
2017-05-04 07:46:57 +02:00
Werner Stern dc6b688a6a fixed px4io firmware read-modify-write bug 2017-05-04 07:46:57 +02:00
David Sidrane 05ceeec1ba piofirmware:Base the debug message buffer size on the defconfig
Recover 16 bytes. Size of debug max message is 40 so limit
  the usart tx buffer to same size.
2017-05-02 07:40:50 +02:00
Lorenz Meier 60a022329f IO Firmware: Use new RC lib format 2017-05-02 07:40:50 +02:00
Daniel Agar 3721fb9d52 cmake cleanup nuttx dependency handling (#7007)
- closes #6501
 - closes #6820
 - closes #6881
2017-04-17 20:57:35 -04:00
David Sidrane 5abdb8fbe9 Fixed spelling - onshot->oneshot 2017-03-23 08:28:15 +01:00
David Sidrane b01768addc px4iofirmware mixer uses new Oneshot API
As discusssed in https://github.com/PX4/Firmware/pull/6678#discussion_r104177663
   this take the safe approach to only call up_pwm_update on a valid mix
   it does keep intatct the riginal author (OA) had an intent.
2017-03-23 08:28:15 +01:00
David Sidrane 6309642c37 px4iofirmware registers uses new Oneshot API
1) Use up_pwm_retrigger to triger onshot
   2) Updated comment to explain why a rate of zero makes sense
      to set oneshot mode.
   3) Updated copyright
2017-03-23 08:28:15 +01:00
Mark Whitehorn 9e3488af46 don't update servos if mixer_mix_threadsafe() failed to run 2017-03-23 08:28:15 +01:00
Mark Whitehorn 2d5588ae02 simplify oneshot mode selection; use zero PWM rate as indicator
cleanup and remove unused (new) params
2017-03-23 08:28:15 +01:00
Mark Whitehorn aa9fbbedd5 add oneshot mode capability
change fmu to task

increase fmu_servo task priority to max and enable true oneshot

use lowest FMU priority which minimizes jitter

constrain oneshot updates to control group 0 events
2017-03-23 08:28:15 +01:00
Beat Küng e7db0ed098 test_mixer & mixer: use memmove instead of memcpy
Both, src & dst use the same array, thus potentially overlapping.
Behavior of memcpy in that case is undefined.
2017-01-18 18:23:42 +01:00
Lorenz Meier 1155a4725b PX4IO: Fix mixer load corner case in string termination 2017-01-14 07:47:03 -08:00
Lorenz Meier 2cabc4866a PX4IO: Use mixer header for buffer length 2017-01-03 20:32:33 -05:00
Lorenz Meier d401252c9e IO firmware: Convert magic numbers to defines
This is necessary to allow more and better unit testing.
2017-01-03 20:32:33 -05:00
Lorenz Meier 89b37fd727 IO: Add missing float header 2016-12-27 21:00:51 +01:00
Andrew Tridgell d150b4b084 px4iofirmware: fixed a bug with override handling
this fixes a race condition between the DMA completion handler
updating registers in px4io and the mixer used for handling the
override state. The register set code could set r_page_servos[]
between the time when pwm_limit_calc() is called and the servos are
actually output.
2016-12-26 16:32:33 +01:00
Lorenz Meier 074e666b95 PX4IO: Robustify firmware for mixer load operation
This change makes the mixer load and reset operation closer to thread-safe. It was guarded one-way before and in only one location. This change ensures that its being locked out from both directions. The accesses to the locking variables still need work because they are non-atomic.
2016-12-26 13:41:36 +01:00
David Sidrane b7d7b567c0 Changes to px4iofirmware for Upstrem Nuttx c++ init and logging changes 2016-12-21 08:34:21 +01:00
David Sidrane d6098c8226 Adding Nuttx Build infrastructure 2016-12-21 08:34:20 +01:00
Roman d221313dfb implemented mapping between desired thrust and applied pwm in
multirotor mixer.

Signed-off-by: Roman <bapstroman@gmail.com>
2016-12-15 23:39:53 +01:00
Paul Riseborough 57a6faf8a2 px4iofirmware: remove unused defines 2016-12-13 16:14:15 +01:00
Bart Slinger a7c8d77453 Generic helicopter mixer
fix code style
2016-12-10 14:45:49 +01:00
Mark Whitehorn fc906a79b0 delete commented code 2016-12-10 12:56:39 +01:00
Mark Whitehorn f0b41a0e52 change main trims to normalized values 2016-12-10 12:56:39 +01:00
Mark Whitehorn dbc149c224 change trim units from absolute usec to normalized values 2016-12-10 12:56:39 +01:00
Mark Whitehorn a0c8a78a14 use trim values to set mixer:scaler.offset
clamp mixer output offset to [-.2,.2] ([-2000, 2000] in mixer file)

add 8 main PWM trim parameters

add long desc to parameters and bump minor parameter version
2016-12-10 12:56:39 +01:00
Bartosz Wawrzacz 619efa7b45 [PX4IO/PWM driver] Added trim values to the PWM output drivers 2016-12-10 12:56:39 +01:00
Daniel Agar 1a1b8f69ac PX4IO add page setup case for thermal 2016-12-05 10:23:46 +01:00
Lorenz Meier 9f14ace0fa IO: Allow control of the blue led state as function of a Pixhawk 2.1 heater 2016-12-05 10:23:46 +01:00
Carlo Wood 04aa2bb3a4 Add missing header files.
These headers files were missing from the header files that
I added them to; the fact that they were missing didn't
lead to compile errors because by coincidence the missing
headers are included in the source files before including
these headers. But, after the reordering of header inclusions
by Tools/fix_headers.sh, these cases will give rise to compiler
errors.
2016-11-13 19:36:27 +01:00
Benoit3 83e9e1c382 The goal of this patch is to allow compatibility with GR12/GR16/GR24 graupner receiver by :
- allowing decoding of SUMD frame with failsafe bit set
- updating stack failsafe state with the sumd failsafe info

Refer to #5817 issue
2016-11-12 14:28:57 +01:00
Julian Oes af5d2c488c st24: fix RC lost detection based on error count
The packet_count was actually an error_count, therefore we should
process RC input only when the error_count since the last packet is 0.

Also, this commit fixes the RSSI scaling for st24.
2016-10-19 09:22:57 +02:00
Roman c2a511d81d multirotor mixer slew rate limiting: naming and fixes
- avoid dividing by zero when calculating max delta output
- better comments when calculating max delta output
- better naming of functions and variables

Signed-off-by: Roman <bapstroman@gmail.com>
2016-09-30 13:55:53 +02:00
Roman 2607769470 slew rate limiting: moved logic to multirotor mixer
Signed-off-by: Roman <bapstroman@gmail.com>
2016-09-30 13:55:53 +02:00
Roman 66ddea01d1 implemented slew-rate 2016-09-30 13:55:53 +02:00
Carlo Wood 77d356d275 Target specific optimization control.
This allows one to set a semi-colon separated list of regular
expressions in the environment variable PX4_NO_OPTIMIZATION
to control which (cmake generated) targets should be compiled
without optimization.

Suppressing optimization can be necessary for debugging in
a debugger, especially when trying to step through the code
or needing to print variables that otherwise are optimized out.

EXAMPLE

export PX4_NO_OPTIMIZATION="px4;^modules__uORB;^modules__systemlib$"

will result in the following messages during cmake configuration:

[...]
-- Disabling optimization for target 'platforms__posix__px4_layer'
because it matches the regexp 'px4' in env var PX4_NO_OPTIMIZATION
-- Disabling optimization for target 'modules__systemlib' because it
matches the regexp '^modules__systemlib$' in env var PX4_NO_OPTIMIZATION
-- Disabling optimization for target 'modules__uORB' because it matches
the regexp '^modules__uORB' in env var PX4_NO_OPTIMIZATION
-- Disabling optimization for target 'examples__px4_simple_app' because
it matches the regexp 'px4' in env var PX4_NO_OPTIMIZATION
-- Disabling optimization for target 'modules__uORB__uORB_tests' because
it matches the regexp '^modules__uORB' in env var PX4_NO_OPTIMIZATION
-- Disabling optimization for target 'px4' because it matches the regexp
'px4' in env var PX4_NO_OPTIMIZATION

Note that a list of all (currently used) target names can be printed
with the following command line from within the required build directory:

find . -wholename '*/CMakeFiles/*.dir/flags.make' | xargs dirname | xargs basename -a | sort -u | sed -e 's/.dir$//'
2016-09-13 16:31:08 +02:00
James Goppert 818840b576 Path cleanup, low impact changes (#5340)
* Low impact changes from path_cleanup branch.

This is a step towards minimizing the diff with path_cleanup branch.

* Update ecl.

* Revert matrix update.

* Revert ecl and matrix.

* Update sitl gazebo.

* Revert sitl_gazebo and matrix changes.
2016-08-18 15:37:23 -04:00
Lorenz Meier 102f5b54d7 Revert "Improvements to SITL to make paths more flexible. (#5181)"
This reverts commit 699b6a2cb3.
2016-08-05 21:29:49 +02:00
James Goppert 699b6a2cb3 Improvements to SITL to make paths more flexible. (#5181) 2016-08-05 06:23:59 -04:00
Julian Oes 78a9472b25 px4iofirmware: astyle 2016-07-29 12:46:17 +02:00
Julian Oes dcb7c0e4c2 px4iofirmware: correct newline 2016-07-29 12:46:17 +02:00
Julian Oes 79a1b84b09 px4iofirmware: clean up override decision
The override checking was scattered across two places and is now unified
in controls_tick(). The part in mixer_tick only decides which mixer (or
none) to use give the override flag.
2016-07-29 12:46:17 +02:00
Julian Oes ec035b7268 px4iofirmware: no override in multirotor mode
This fixes a bug where multirotors got into override mode when the FMU
is dead/not responding.
The main bug was that the check was for FMU_OK || MANUAL_OVERRIDE_OK
in order to get further in the override checks.

Also a mixer_tick was called inside the controls_tick even though these
are called in px4io.c after each other anyway.
2016-07-29 12:46:17 +02:00
Julian Oes 57b3bbf657 px4iofirmware: don't set FMU_OK flags immediately
The FMU_OK flags are later checked anyway based on
system_state.fmu_data_received_time.
2016-07-29 12:46:17 +02:00