Commit Graph
163 Commits
Author SHA1 Message Date
David Sidrane 1f54214224 stm32/drv_io_timer:GTIM_CCER_CC1NP not on all STM32 HW
The F1 series GTIMs to not have GTIM_CCER_CC1NP.
   This bug fix tracks the upstream change that
   made GTIM_CCER_CC1NP conditional on the chip.
2019-01-25 06:32:37 -08:00
Beat Küng 74a3c378b2 drv_hrt: inline hrt_elapsed_time
GCC did not do that.
2019-01-25 07:53:37 +01:00
Lorenz Meier 46390a1508 HRT: Drop volatile specifier from function call for non-atomic mode
This allows the compiler to optimize better without loosing any performance / accuracy.
2019-01-22 23:52:57 +01:00
Lorenz Meier b7bcec2d8c HRT: Create new separate call for atomic HRT elapsed time calculation
This call rarely needs to be truly atomic and the involved CPU overhead in making it atomic was unnecessary and introduces a lot of IRQ jitter with no value-add. The call has been moved to be non-atomic and the codebase will be inspected and changed in follow-up commits for the few instances where it is truly needed.
2019-01-22 23:52:57 +01:00
Julian Oes a193e4117c drv_hrt: update signature of ts_to_abstime 2018-12-22 10:32:18 +01:00
Julian Oes d75389b2e4 platforms: consolidate latency_buckets
These symbols were duplicated all over the place.
2018-12-22 10:32:18 +01:00
Julian Oes 5b9dea5604 Replacing usleep with px4_usleep
This is a step towards isolating time from the system.
2018-12-22 10:32:18 +01:00
David Sidrane 1d289f77e3 stm32:drv_led_pwm Null entry check 2018-12-02 10:34:04 +01:00
Beat Küng fe502ffd33 fix tone_alarm: avoid using exit()
On POSIX it exits the process.
2018-08-31 18:11:58 +02:00
David Sidrane a0f70be238 stm32:tone_alarm remmove assert 2018-08-30 19:11:17 +02:00
David Sidrane 1fb7046052 stm32 tone_alarm: Remove stale documentation & cleanup
Since tune control came in this driver does not have a
    have a test based interface. The module Documentation
    has been moved to tune_control

    minor cleanup and assert on workque delay of 0
2018-08-30 19:11:17 +02:00
David Sidrane ec25e4b913 stm32 tone_alarm: Remove stale documentation
Since tune control came in this driver does not have a
    have a test based interface. The module Documentation
    has been moved to tune_control
2018-08-30 19:11:17 +02:00
Daniel Agar 6e97194ce6 drivers/stm32 cleanup unnecessary Device CDev usage 2018-08-27 13:14:15 -04:00
TSC21 ca42483794 update msgs fields from camelCase to snake_case so rosidl_generate_interfaces() is able to generate code for ROS IDL files 2018-07-30 21:40:28 +02:00
mcsauder cf7dd383b1 Update ADC voltage calculation instances to avoid divide by integer. 2018-07-09 07:51:15 +02:00
Daniel Agar 387bc81f26 move systemlib/circuit_breaker.cpp to standalone lib 2018-06-12 09:06:30 +02:00
Daniel Agar d73d20bcce systemlib delete unused systemlib.h 2018-06-12 09:06:30 +02:00
Daniel Agar ea3acb7121 cmake remove circular linking and reorganize
- px4_add_module now requires MAIN
 - px4_add_library doesn't automatically link
2018-04-29 21:48:54 -04:00
Daniel Agar 1a0238f20c tone_alarm fix circuit breaker param handling 2018-02-10 20:37:47 -05:00
Martina 1a50759521 tone_alarm: fix rebase error 2018-01-29 09:45:59 -05:00
Simone Guscetti 8054bbb985 tone_alarm: Adapt tone_alarm driver to use libtunes 2018-01-29 09:45:59 -05:00
David Sidrane a9bd3aeb85 Fixed typo usb_vaild -> usb_valid 2017-09-29 10:46:50 -10:00
David Sidrane d4892bf179 stm32 adc:Create board accessible API for using the ADC prior to boot
board_adc_init()    - initalise the ADC HW once.
   board_adc_sample()  - read a given channel dn
2017-09-29 10:13:51 -04:00
David Sidrane 63ac56aeb0 smt32 adc:Ensure the the ADC clock is not out of spec
The data sheet for the F4, F7 indicate a maximum of 36 Mhz
   in the 2.4-3.3 volt Soc operating range. This change sets
   the clock based on the STM32_PCLK2_FREQUENCY.
2017-09-29 10:13:51 -04:00
David Sidrane bc81339a68 Update stm32 to uses NuttX IRQ API changes 2017-09-29 10:13:51 -04:00
Daniel Agar 0da2dca8c1 drivers remove device _debug_enabled 2017-09-25 10:30:22 -04:00
Daniel Agar 58268c832c drivers remove extra semicolons 2017-09-16 21:29:52 +01:00
Daniel Agar 79869c848f drivers fix missing field initializers 2017-09-16 21:29:52 +01:00
Karl Schwabe 6d1aa4cad2 Bugfix: corrects the ARR calculation for the LED PWM timer
The calculation of the ARR on the LED PWM timer did not subtract 1
from the timer period calculation to get the ARR value.
2017-09-14 04:10:41 -10:00
Karl Schwabe 38a4c1e90b Bugfix: corrects the ARR calculation for the PWM timer
The calculation of the ARR on the PWM timer did not subtract 1
from the timer period calculation to get the ARR value.
2017-09-13 08:25:06 -10:00
David Sidrane 2ef472d796 drv_led_pwm:Use hardware to support active hight or active low LED
Use the timer's polarity control bits to enable active low
   drive as apposed to inverting the counts.
2017-08-26 03:44:59 -10:00
David Sidrane f13682223a Added FMUv5 System Power related system_power.msg fields
voltage3V3_v - the sensor 3.3V voltage rail
   v3v3_valid   - the value of voltage3V3_v  may be 0. This
                  field is a 1 when the HW provides voltage3V3_v

   brick_valid - is now a bit mask. A 1 in the postion inticate the
                 Power controler HW has a valid supply voltage
                 present (in V window) on that priority
                 (channel V1..Vn).
                 The mapping is formed by 1<<battery_status.msg.priority
                 or using the manifest constanst BRICKn_VALID_MASK

   usb_vaild - is now indicated from the Power controler HW or
               the usb_connected if Power controler is
               not present.

   brick_valid == 0 and usb_vaild = 1 implies the FMU is powered
   from USB only

   brick_valid != 0  and usb_vaild = 1 implies the FMU is powered
   from the higest priority brick, providing a 1 bit in brick_valid
   and from USB
2017-07-17 21:02:50 -10:00
Simone Guscetti ada48571d7 fmu-v5: fix timer config 2017-07-17 21:02:50 -10:00
David Sidrane 4349f49610 PX4 System:Expunge the nuttx adc structure from the system
This PR is preliminary ground work for FMUv5.

   PX4 does not use the NuttX adc driver. But used the same format
   for the data returned by the nuttx ADC driver.

   There was a fixme:in src/platforms/px4_adc.h "this needs to be
   a px4_adc_msg_s type" With this PR the need for
   src/platforms/px4_adc.h goes away as the driver drv_adc.h now
   describes the px4_adc_msg_t.
2017-07-17 22:28:29 +02:00
Beat Küng 16740dd5cd io timers: fix some typos 2017-07-14 11:57:11 +02:00
David Sidrane 3c62f7a3eb stm32:drv_input_capture bug fixes.
Filter for channel 4 was modifying channel 1
   capture and overflow reads were using wrong paramaters
   in macros and addressing junk in memory.
   up_input_capture_get_filter was shifing results the wrong way.
2017-05-17 08:34:57 +02:00
David Sidrane a15b8565ef Removed wrong comment 2017-05-17 08:34:57 +02:00
David Sidrane f7835a8677 io_timer driver:Only support capture if DIRECT_INPUT_TIMER_CHANNELS > 0
This removes the unused input capture capabilities from the px4io
   and saves 128 bytes of ram.
2017-05-02 07:40:50 +02:00
David Sidrane b885fd97f6 oneshot:trigger exit early in no chan in oneshot 2017-04-21 08:32:33 +02:00
Mohammed Kabir 0a5ada9e02 stm32 : formatting 2017-04-13 20:21:40 +02:00
Mohammed Kabir 3dee42b5ca stm32 : deconflict pwm_get_rate_group from all other timer modes 2017-04-13 20:21:40 +02:00
Mohammed Kabir 6d3c16a35b camera_trigger : cleanup pwm interface 2017-04-13 20:21:40 +02:00
Mohammed Kabir 704de4f88f stm32 : deinit trigger pins properly 2017-04-13 20:21:40 +02:00
Mohammed Kabir 82a1bd83bc stm32 : add new interface for PWM-based camera_trigger 2017-04-13 20:21:40 +02:00
David Sidrane 8e217b0287 bugfix:drv_io_timer properly initialize non-contiguous timer channels
This fixes the issue with initializing channels 5,6 without
  channels 1-4.

  The code assumed all timers actions were in order to be
  initialized. This is not the case. This commit fixes that
  bad assumption by not stopping the configuration on the
  first action entry with a base == 0, but processing all
  entries with non-zero base.
2017-04-06 12:20:45 +02:00
David Sidrane 5abdb8fbe9 Fixed spelling - onshot->oneshot 2017-03-23 08:28:15 +01:00
David Sidrane 75376b7793 Bugfix:Allow mode switch on a free timer 2017-03-23 08:28:15 +01:00
David Sidrane 11191e54e0 use io_timer_set_PWM_mode not direct reg 2017-03-23 08:28:15 +01:00
David Sidrane d21c44704d Propgate any errors in setting the rate up.
Since the Onshot<->PWM mode is changed based on rate. The
 this signale the higher layers that the operation is invalid

 test case:
   fmu task mode_pwm2cap2
   pwm oneshot -m 0xf -g 0 -d /dev/pwm_output0

   should fail, because all the channels in the group are
   not in the same mode.
2017-03-23 08:28:15 +01:00
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