Commit Graph
15396 Commits
Author SHA1 Message Date
David Sidrane f5bc3dbc4e drv_io_timer Support OneShot
1) Updated copyright
  2) Defined BOARD overrideable BOARD_PWM_FREQ and BOARD_ONSHOT_FREQ
     Not recogmended but allow experimentation
  3) Solved the support for BOARD_PWM_DRIVE_ACTIVE_LOW using
     the Polarity control bits as apposed to the negation of
     the ARR.
  4) Added a cache for getting a timers channels. This is static
     and benifits from the qucik response.
  5) Added a function to realocate all channes in a given timer
     from one mode to another.
  6) Removed the frequecy table in favor of the intended use of the
     channel mode set. At it is the way to determine the mode of a
     channel. Or in onshot's case a timers's complete set channels.
  7) Added 2 lowlevel mode changing functions:
     io_timer_set_oneshot_mode and io_timer_set_PWM_mode
     that encapsalate the changes in mode to one place
     in the code.
  8) Added io_timer_trigger (the up_pwm_update) with low
     latancy timer to time in updating.
  9) io_timer_set_rate - use sets to enforce all or none
     rules for switching  PWM<->OneShot.
     Onshot is entered using the very approriate rate of 0.
     Only deltas will change the HW state.
2017-03-23 08:28:15 +01:00
David Sidrane 96db91c468 drv_io_timer Add simplified Oneshot API
1) Define IOTimerChanMode_OneShot
   2) Added detailed commnent on .clock_freq and how it is used
   3) Added single additional API point in support of Onshot mode
      io_timer_trigger - That trigger all timer's channels in Oneshot
      mode to fire the oneshots with updated values.
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
David Sidrane 30c8e6efac drv_pwm_servo provide the simplified interface for OneShot
1) Validate timer paramater before using it.
  2) Allow rate of 0 to enter Oneshot mode
     At first blush this seamed like a hack, but at Mark
     pointed out to me, Onshot PWM does not have a rate
     So this is a realy a clever and beautiful simplification
     on his part!
  3) Exposes up_pwm_update that runs io_timer_trigger
     Which trigger all timer's channels in Oneshot mode to
     fire the oneshots with updated values.
2017-03-23 08:28:15 +01:00
David Sidrane 938824500c Only expose up_pwm_update for onshot
This api will REWORD
2017-03-23 08:28:15 +01:00
David Sidrane 8984b441a0 pwm test uses Onshot API
At at a period greater than the the max Oneshot pulse width
  Trigger all timer's channels in Oneshot mode to fire the
  oneshots with updated values.
2017-03-23 08:28:15 +01:00
David Sidrane 6dc3b1cac6 Revert "add macro PX4FMU_TASK to board_config"
The fmu now support the commandline option to be run as a task
   or off a work queue.
   This reverts the board_config.h changes from commit
   e33af23122f5ee3030bb9745bbbf616b24c2a14a.

Conflicts:
	src/drivers/px4fmu/fmu.cpp
2017-03-23 08:28:15 +01:00
David Sidrane 71c25611b5 fmu warnx->PX4_WARN 2017-03-23 08:28:15 +01:00
David Sidrane fc099879be fmu can be run as a task or as worker thread
The new optional option is
  fmu [task] ....

  fmu task mode_pwm - start fmu as a task
  fmu  mode_pwm     - start fmu as a worker
2017-03-23 08:28:15 +01:00
David Sidrane 07834e51b7 fmu:Ensure work_stop still called work_cancel 2017-03-23 08:28:15 +01:00
David Sidrane 9227547886 fmu added comments & updated copyright 2017-03-23 08:28:15 +01:00
David Sidrane 0ce854ad55 Support onshot command 2017-03-23 08:28:15 +01:00
David Sidrane 6bc0420137 pwm warnx->PX4_WARN 2017-03-23 08:28:15 +01:00
David Sidrane cdd961d2b9 pwm remove arch dependancy 2017-03-23 08:28:15 +01:00
David Sidrane d92cb75b26 pwm use px4_getops 2017-03-23 08:28:15 +01:00
Mark Whitehorn 8b6b4ccee9 add macro PX4FMU_TASK to board_config 2017-03-23 08:28:15 +01:00
Mark Whitehorn f7f12759cd Revert "add timer validation call"
This reverts commit 30fe2aa4fb8c099028fd5ca4f50940e88eddbb08.
2017-03-23 08:28:15 +01:00
Mark Whitehorn bbebf980d8 add timer validation call 2017-03-23 08:28:15 +01:00
Mark Whitehorn b5169b0c7b uncomment FMU servo readback test 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 dd25366b86 clean up timer_set_rate and add advice on hacking counter frequency 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
Dennis Mannhart be500723cd mc_pos_control: gradual vel fix for slope 2017-03-22 15:21:34 +01:00
Dennis Mannhart 20a47a1a72 mc_pos_control: limit if just xy distance close to target 2017-03-22 15:21:34 +01:00
Dennis Mannhart f9551c12de mc_pos_control: param fix and gradual vel fix 2017-03-22 15:21:34 +01:00
Matthias Grob 72fb7a5062 mc_pos_control: added gradual landing speed logic
depending on two altitudes that can get set as parameter
the logic linearly slows down from higher land altitude 1 to slower land altitude 2
2017-03-22 15:21:34 +01:00
Matthias Grob 7434bcc693 mc_pos_control: fixed rebase and refactor errors 2017-03-22 15:21:34 +01:00
Dennis Mannhart cd8cc1beaa mc_pos_control: use blockparam, change variable name, delete unused variables 2017-03-22 15:21:34 +01:00
Dennis Mannhart 4c4f214ec7 mc_pos_control: target_threshold value change
mc_pos_control: reorder if statement

mc_pos_control:  add get function for cruising speed
2017-03-22 15:21:34 +01:00
Dennis Mannhart 0d6f994145 mc_pos_control: slow down in auto when close to target
mc_pos_control: move limit vel xy after velocity controller
2017-03-22 15:21:34 +01:00
Dennis Mannhart 8e5a573cb3 mc_pos_control: add default only if there is no previous setpoint 2017-03-22 15:21:34 +01:00
Dennis Mannhart fd3889b5a6 mc pos control: auto handling such that it does not use slewrate when goint to pos 2017-03-22 15:21:34 +01:00
Matthias Grob 5e2f18ebaa mc_pos_control: added separate velocity control setpoint slewrate for deceleration
to improve the smooth user experience while accelerating
but not have any delay when braking
2017-03-22 15:21:34 +01:00
Matthias Grob b32e5e7ec0 mc_pos_control: fixed all pull request complaints
mainly changing parameters to BlockParams, reorder them and comment
2017-03-22 15:21:34 +01:00
Matthias Grob 470c3fdc06 mc_pos_control: refactoring only in manual velocity setpoint generation 2017-03-22 15:21:34 +01:00
Matthias Grob 713ba45876 mcpos_control: remove duplicate deadzone parameters 2017-03-22 15:21:34 +01:00
Matthias Grob eec757915c mc_pos_control: switch manual vertical/z velocity curve to expo with deadzone 2017-03-22 15:21:34 +01:00
flying-production aed280fbd4 Make sure that external sitl project will be rebuild in case of sourcve has changed 2017-03-22 08:53:34 +01:00
Dennis Mannhart 8f1e851911 Stick to velocity fix (#6825)
* mc_pos_control: use just float for vel and cruise in xy

* mc_pos_control: stick map saturate magnitude to 1

* mc_pos_control: take minimum cruising speed for auto

* mc_pos_control: cruise speed triplet higher than from mc_pos_control

mc_pos_control: fix if for cruise in auto

* mc_pos_control: use PX4_ISFINITE criteria
2017-03-21 07:58:47 +01:00
Dennis Mannhart c9643cb075 mc_pos_control: delete leftover from transitional changes for vel_max_z (#6822) 2017-03-20 10:06:29 +01:00
Dennis Mannhart 31aff0b6c0 mc_pos_control: change yaw setpoint to yaw (#6854) 2017-03-20 10:05:33 +01:00
Beat Küng 546bd2b4d0 drivers: remove the overflow perf counter
This was used together with the read() interface, but we don't use that
so the counters are wrong.
2017-03-20 09:11:34 +01:00
Beat Küng f60dfbbb40 perf: remove unused event_overruns, reduce type of delta times to 32bits
32 bits are still enough to measure elapsed times up to 1 hour.

Testing on Pixracer: I counted 73 allocations and 39 frees during bootup,
resulting in 2kB RAM usage after boot. This patch reduce this by ~0.5kB.
2017-03-20 09:11:34 +01:00
Pavel Kirienko 2b2c307eac Performance audit (intentionally duplicates #6829) (#6847)
* UAVCAN ESC output: removing ESC output channels from published message that are always zero. This allows the UAVCAN stack to always transfer only the minimum number of output values, avoiding redundant zeroes and the associated increase in bus load and CPU time

* Added a separate mixer file for CAN quadrotor

* Sampling profiler improvements

* PMSP: Output more endpoints

* Matrix update

* libc usage workaround

* Removed UAVCAN perfcounters

* Matrix submodule update
2017-03-18 04:16:20 -10:00
David Sidrane c20b85e6ad Revert "UAVCAN performance audit (#6829)" (#6846)
This reverts commit 21e04c9f7a.
2017-03-18 04:04:43 -10:00
Pavel Kirienko 21e04c9f7a UAVCAN performance audit (#6829)
* UAVCAN ESC output: removing ESC output channels from published message that are always zero. This allows the UAVCAN stack to always transfer only the minimum number of output values, avoiding redundant zeroes and the associated increase in bus load and CPU time

* Added a separate mixer file for CAN quadrotor

* Sampling profiler improvements

* PMSP: Output more endpoints

* Matrix update

* libc usage workaround

* Removed UAVCAN perfcounters
2017-03-18 03:47:09 -10:00
David Sidrane 4fe29e5246 Fiexs frsky telemetry stack warning
WARN  [load_mon] frsky_telemetry low on stack! (164 bytes left)

Added 168 bytes = 160 needed + 8 bytes for head room
2017-03-18 10:54:49 +01:00
Lorenz Meier 7695b65b7f MAVLink app: Default to MISSION, not MISSION_INT
In order to ensure correct transmission the mission system needs to default to the legacy protocol and switch to the new implementation when these conditions are met:
  * If the GCS sends a MISSION_REQUEST_INT - it will do this based on the AUTOPILOT_VERSION flag indicating int mission support
  * If the autopilot sends a MISSION_REQUEST and has the AUTOPILOT_VERSION flag for 2.0 set, the GCS should NACK it, which will make the autopilot retry a MISSION_REQUEST_INT
  * If the autopilot sends a MISSION_REQUEST_INT and the GCS does not support it, the GCS will ignore and time out. The autopilot could retry now opportunistically with the old protocol, but this is not great for lossy links.
  * If the GCS sends a MISSION_ITEM_INT - this is a fallback
2017-03-16 23:16:39 +01:00