Commit Graph

114 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 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
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 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
Daniel Agar adbe38e86b astyle src/drivers/stm32 2017-01-29 01:18:32 +01:00
David Sidrane 26b1e1fe0c Use HW independant overrideable defines to condition ADC V5 sensing & publishing
Use ADC_SCALED_V5_SENSE as apposed to legasy ADC_5V_RAIL_SENSE to populate
    voltage5V_v
    Then Scale the DN based on an overridable ADC_V5_V_FULL_SCALE value
2017-01-21 11:45:36 +01:00
David Sidrane d42f8f4745 BugFix:Prevent drv_led_pwm passing a value of 0 to px4_arch_configgpio
This prevents the meta value of 0 => not used from being passed to
  px4_arch_configgpio. As this would map to PORTA|PIN0 and is not
  the intended configuration.
2017-01-19 22:18:04 +01:00
Vlad Radulescu ec104bb7ac Corrected a tiny spelling mistake and modifed the PPM_MIN_CHANNELS check so it accepts a minimum of 5 channels. It seems that was the initial intention. 2017-01-17 23:40:31 -08:00
David Sidrane 0baab8263b Fix the LED PWM support for non shared timers
This is the fixes https://github.com/PX4/Firmware/issues/5710
  by adding 2 concepts.

  1) Allowing a board to define BOARD_HAS_SHARED_PWM_TIMERS
     in this case the io_timeris will be initalized as the
     led_pwm_timers  - there is an assumptionm that the
     number of io_timers == the number of led_pwm timers

  2) Allowing a board to define BOARD_LED_PWM_RATE
     To set an alternate frequency

  Future expansion will require:
  1) The ability to have a config with both the I2C RGB LED and
     PWM RGB LED drivers loaded.
  2) The higher level driver to create  multiple instances of the
     /dev/rgbld, to support internal and  external User facing
     RGB LED as supported in FMUv5
2016-12-21 08:34:22 +01:00
David Sidrane 3f64bf81f3 RGB LED cleanup
Removed dead code and magic numbers
  Defined the RGB LED to support 2 timers
2016-12-21 08:34:22 +01:00
David Sidrane d8580d39b9 Honor Micro hal and new Nuttx Loging API 2016-12-21 08:34:20 +01:00
David Sidrane ddb9bc3242 Honor micro hal 2016-12-21 08:34:20 +01:00
David Sidrane 4d17467590 Interim fix avoid using params before initialized
This is a Interim fix to avoid using params before initialized.

The Long term fix will be:
1) Not play the startup tone on start but allow tones to be generated from other invocations (i.e error conditions)
2) Add a command to tone alam to have it read a parameter, after parameter initialization, in the init script. If that parameter is on then sound the startup tone and further tones will be enabled. If it is off all further tones will be disabled.

The new parameter will not be of the class circuit breaker (not named ) as is is not an absolute control of the tone alarm.
2016-12-20 14:16:04 +01:00
Dennis Shtatnov bf9a1c5a18 Removing alternative io timer rate for CF2 2016-11-05 11:06:43 +01:00
David Sidrane 2d451991af PX4 System change to Remove #ifdefs from the IO timers
Update the comment, to explain how to achive a different perescale
   value.

   Added PX4_IO_TIMER_ALTERNATE_RATE one board agnostic ifdef
   PX4_IO_TIMER_ALTERNATE_RATE that is non board specific.

   N.B.  I would like to eliminate PX4_IO_TIMER_ALTERNATE_RATE
   as well, but I need crazyflie HW to validate that the startup
   script can just set the rate on the PWM to 3921 fast enough to
   not effect the motors.
2016-11-05 11:06:43 +01:00
Henry Zhang 53b4996379 MindPX: Use TIM14 CH1 for tone alarm output. 2016-10-29 10:56:32 +02:00
Julian Oes 78b0d1a01f tap: add landing gear capability
This configures the PWM output for the landing gear.
2016-10-20 23:17:05 +02:00
Julian Oes 8ff237c69f Remove size optimization for individual modules
It makes more sense to set the optimization flags on a platform basis
instead of individually for each module. This allows for different
optimization options for SITL, NuttX, Snapdragon, etc.
2016-09-30 08:11:51 +02:00
Dennis Shtatnov 83105fca95 CF2: Buzzer 2016-09-19 11:54:53 +02:00
Tim Dyer b65ff53b00 Initial build for Crazyflie 2.0
Working crazyflie firmware build

* Console on USART3
* Could not disable building PX4IO firmware, currently commented out

Don't build PX4IO firmware if the board doesn't ask for it

Added crazyflie motor driver

Fixed wrong register

CLK_SEL is in PWR_MGMT_1

Initial I2C/SPI MPU9250 device

* Tested with I2C
* Need to add error checking
* Intermittent crash on stop call

Working ak8963 mag driver

Functional lps25h driver. Work in progress.

Works well enough to probe and allow sensors task to start.

Added serial port test module

HACK! Get sensors module working

Set crazyflie PWM range

Extend baudrate for Crazyflie's NRF radio

Added dummy tone alarm to allow for init

Added autostart script for Crazyflie
2016-09-04 19:12:08 +02:00
David Sidrane a36f392b58 Rework PWM LED Driver 2016-07-10 11:46:47 +02:00
Beat Küng 8a12dee125 cmake: remove all module.mk files & cmake conversion script (#4918)
It seems these files are leftovers.
2016-06-28 09:26:36 +02:00
Julian Oes 8d491077ce adc: removed unneeded printf 2016-06-07 22:10:56 +02:00
David Sidrane 69d0a78c54 Update adc.cpp 2016-06-01 08:36:58 +02:00
David Sidrane 9833ef13fb Update adc.cpp 2016-06-01 08:36:58 +02:00
Lorenz Meier 7398164fcc Updated PX4 use / API of low level GPIO and other hardware-centric system facilities 2016-05-28 14:56:17 +02:00
Lorenz Meier 3335d32c0a ADC driver: Publish via uORB 2016-05-01 15:48:50 +02:00
Lorenz Meier c8c7c84110 Simplify ADC driver 2016-04-21 10:35:44 +02:00
Andrew Tridgell 05c282e761 stm32: fixed build errors with more warnings enabled
needed for ArduPilot build
2016-04-18 11:36:28 +02:00
Felix Hu bd580e09bf supports MindPXv2 borad which is a product from AirMind. 2016-03-30 19:45:39 +02:00
stmoon fb131f43c3 fix the bug ( error: array subscript is above array bounds [-Werror=array-bounds] ) 2016-02-17 08:47:03 +01:00
David Sidrane 7541aecd18 Fixed Isr restore (moved out of loop) 2016-02-04 08:56:07 +01:00
David Sidrane 7edd07f8cb Rebased on master, removing the default_rate field and using default to 0 for rates 2016-02-01 10:10:35 +01:00
David Sidrane 0d13c41108 Ran Astyle 2016-02-01 10:10:35 +01:00
David Sidrane b3af469e80 IO Timer Changes for Capture 2016-02-01 10:10:35 +01:00
David Sidrane 0397537cf0 Adding input capture driver 2016-02-01 10:10:35 +01:00
David Sidrane f3c22d3334 Refactored pwm servo to use drv_io_timer 2016-02-01 10:10:35 +01:00
David Sidrane 2949578832 Renamed pwm_timers to more appropriate io timers for use in pwm in/out and capture 2016-02-01 10:10:34 +01:00
David Sidrane 5e47ffdaf9 Moved Switching IO to the point of ARMing 2016-02-01 10:10:34 +01:00
Lorenz Meier d1cf8df2ad Initialize system power struct 2016-01-19 19:26:50 +01:00
Stefan 86ca7d8cfc Update drv_hrt.c
spelling mistakes
2016-01-11 08:37:43 +01:00
David Sidrane a67097731a Renamed pax4fmu-v3 to pax4fmu-v4 2015-11-28 09:13:15 +01:00
David Sidrane f3b7585a89 Wip FMUV3 2015-11-28 09:13:15 +01:00
David Sidrane 1b5db91c35 Added Fix me re chan 1/2 interactions 2015-11-28 09:13:15 +01:00
jgoppert 06472861ce Added buzzer circuit breaker. 2015-10-25 13:38:30 +01:00
Lorenz Meier fa5071b3c5 Remove module.mk files to prevent confusion of adopters upgrading 2015-10-06 11:23:20 +02:00