Commit Graph
86 Commits
Author SHA1 Message Date
David Sidrane 6eff7deb7e Extend the delay ensure post reset pulse delayed.
Given the original poster's comment that "It happens very consistently for us." I suspect the motor spin observed in https://github.com/PX4/Firmware/issues/7457 is not caused by the original issue of slow decay on the PWM pins at reset, but the post reset pulse of 3.1 Ms arriving in a window that the ESC considers it valid.

The results from testing, indicated that the if the PWM pins were clamped low for > 300 Ms, prior to reset the motors did not spin. This would delay the the post reset pulse of 3.1 Ms out by > 300 Ms. 

This change delays the reset and therefore the pulse by at least 400 Ms.
2017-07-08 10:51:43 +02:00
David Sidrane 65d8b5c9cd px4fmu-v4:Insure the discharge of the pins PWM pins on rest.
On resets invoked from system (not boot) insure we establish a low
  output state (discharge the pins) on PWM pins before they become
  inputs.
2017-07-08 10:51:43 +02:00
David Sidrane e86d9adb93 px4fmu-v4:Implement board_on_reset API
Added board_on_reset, to force timer GPIO to output low on reset
   This will stop the motors.
2017-05-03 08:33:05 +02:00
David Sidrane 33f2897f00 px4fmu-v4:Configure timer IO pins with pull downs
When the CCER is cleared the IO pin tends to float. The FMUV4
  HW has no TXS0108 and if cut off while high will decay.

  By adding the pull down the pins will seek the low state faster.
  13.8 us from off to decabe below threshold.
2017-05-03 08:33:05 +02:00
David Sidrane 5d70f74e36 px4fmu-v4:SPI and init clean up 2017-05-02 11:55:11 +02:00
Beat Küng fc30f880c8 px4fmu_spi.c for v4: fix usage of wrong GPIO macros
This got introduced with the refactoring in c5e841256a
2017-04-26 13:56:59 +02:00
Lorenz Meier e054d1fff7 FMUv5: Start BMI055 in correct rotation 2017-04-24 10:38:39 +02:00
Sergej Scheiermann 641a03510c changes on drivers according to comments from DavidS 2017-04-24 10:38:39 +02:00
Sergej Scheiermann 5923e66cf3 bmp285 support added 2017-04-24 10:38:39 +02:00
Sergej Scheiermann c3711efd27 initial commit of bmm150 2017-04-24 10:38:39 +02:00
Sergej Scheiermann c5e841256a changes added for SPI CS defines as requested for BMI055 driver integration (e.g. GPIO_SPI1_CS_PORTE_PIN15 for bmi055 gyro) to avoid double declaration of same chip select pin 2017-04-24 10:38:39 +02:00
Sergej Scheiermann 7dcdc57412 Update px4fmu_spi.c 2017-04-24 10:38:39 +02:00
Sergej Scheiermann cfed8ee2dd bmi055 initial integration 2017-04-24 10:38:39 +02:00
David Sidrane a161c05dc6 px4fmu-v4 Remove GPIO_RC_OUT and vetted RC_IN wiring
Removed the legacy FMUv4 define that was activating a nonexistent
   pull up and on some HW driving the PPM_IN aka RC_IN aka SPEKTRUM_RX
   to VDD.

   Also detailed the connections of this pins for the board.

   The simplest connection is RC_IN to a timer capture pin
   and a UART.
   In this case the UART_RX pin and just be left as is.
   While the pin can be configured as the PPM_IN (Timer capture)
   or as SPEKTRUM_RX_AS_GPIO_OUTPUT to use it as and GPIO to
   facilitate binding.

  Renamed the macros and defines to be more explicit as to what
  Is being done and the sense of the parameters
2017-03-30 16:19:26 -10: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
Mark Whitehorn 8b6b4ccee9 add macro PX4FMU_TASK to board_config 2017-03-23 08:28:15 +01:00
Beat Küng b0439836f6 refactor drv_led.h: rename to drv_board_led.h
This makes it clear that it's used to control the board LED's, not external
LED's.
2017-03-12 00:08:35 +01:00
Beat Küng df8f0da70c param & param_shmem: enable locking
We need to protect access to the param_values array. This is dynamically
allocated and resized (utarray_reserve() calls realloc). If some thread
was iterating the array while another was resizing the array, the first one
would iterate on a freed array, thus accessing invalid memory.

On NuttX this could lead to hardfaults in rare conditions.

Unfortunately we need to initialize the semaphore on startup, by calling
sem_init(). This adds a param_init() method called by every board/config
that uses the params (at least I think I've found all of them)
2017-02-17 11:27:08 +01:00
Phillip Kocmoud ccfecd4ad2 Add support for the ICM-20602 to the Pixracer FMUv4 (#6577)
The current ICM-20608 is nearing EOL.

I have tested on both ICM-20608 and ICM-20602 based Pixracers.
2017-02-14 06:37:04 -10:00
Beat Küng 7c47991504 px4fmu-v4 board config: use PX4_SPIDEV_ICM_20608 instead of PX4_SPIDEV_ICM_20602
This is what's used according to https://pixhawk.org/modules/pixracer.
2017-01-31 23:38:50 +01:00
David Sidrane cd1148f146 px4fmu-v4 using board common mcu version api 2017-01-26 08:39:12 +01:00
David Sidrane ca6105d042 px4fmu-v4 using board common identity api 2017-01-25 07:43:11 +01:00
David Sidrane eb72b49507 px4fmu-v4 use board common reset interface 2017-01-24 21:17:06 +01:00
David Sidrane 59ec0e8aef Make board_crashdump.c arch agnostic and move to common 2017-01-23 22:10:38 +01:00
José Roberto de Souza 163bcc4bbc drivers: boards: Share board_crashdump() implementation 2017-01-23 22:10:38 +01:00
David Sidrane 0baefec09f FMUV4 Moved magic numbers for battery V div and A per V to board_config.h 2017-01-21 11:45:36 +01:00
David Sidrane 356911ab0d PX4FMUV4: moved GPIO defines to px4fmu-v4/board_config.h 2017-01-21 11:45:36 +01:00
Lorenz Meier ece8d85860 Add ICM20602 to Pixracer config 2016-12-29 11:55:57 +01:00
Lorenz Meier 6bc70af7a0 FMUv2: Add missing headers 2016-12-27 21:00:51 +01:00
Beat Küng c662113527 board_name.c: remove the file and HW_ARCH macro, use px4_board_name() instead
boards define BOARD_NAME, so board_name() is not necessary. HW_ARCH was
just a wrapper around board_name().

This patch simplifies to having only one common method px4_board_name().
2016-12-21 11:35:10 +01:00
David Sidrane 17633c0714 Changes to px4fmu-v4 for upstream Nuttx and hardfault logging 2016-12-21 08:34:21 +01:00
Michael Schaeuble b982dca45a Add comments to clarify the BMI160 related changes 2016-12-02 12:40:12 +01:00
Michael Schaeuble 10867131fa Bring up BMI160 for px4fmu-v4 targets 2016-12-02 12:40:12 +01:00
Carlo Wood 90f3e3b5d3 Do not include headers inside __BEGIN_DECLS ... __END_DECLS blocks.
We don't have C++ unsafe headers (anymore).

I added a test to fix_headers.sh that checks if certain "unsafe"
headers are ONLY included inside a __BEGIN_DECLS ... __END_DECLS
(because after all, they are unsafe), as well as checking that
no other header files are included inside such a block. The rationale
of the latter is that if a file is a C header and it declares
function prototypes (otherwise it doesn't matter) and is sometimes
included outside a __BEGIN_DECLS ... __END_DECLS block (from a C++
source file) then it has to be C++ safe and doesn't ever to be
included from inside such a block; while if a file is a C++ header
then obviously it should never be included from such a block.

fix_headers.sh subsequently found several safe headers to be
included from inside such a block, and those that were (apparently
in the past) unsafe were included only sometimes inside such a
block and often outside it. I had a look at those files and saw
that at least an attempt has been made to make them C++ safe,
but especially because they already are included OFTEN outside
a __BEGIN_DECLS ... __END_DECLS (from C++ source files) the
best decision seems to treat them as safe.

This is not risky: .c files that define such functions still
generate C-linkage for their functions. If a C++ unsafe C header
is included outside a __BEGIN_DECLS ... __END_DECLS block then
the only possible result would be an undefined reference to
a function with C++-linkage that will not exist. Aka, when
something links after this commit, then the commit was correct.
I did build all targets and they all linked.
2016-10-28 11:57:08 +02:00
David Sidrane 248cd45503 Added missig can_devinit prototype
The Nuttx CAN driver is not used with UAVCAN. However to
facilitate compilation to allow the Nuttx CAN Example to be
compiled and linked, the missing proto type was needed.

Futhermore to include the NuttX CAN eaxample the following changes
are needed:

1 ) In cmake/configs/<target>.cmake
Add can to config_extra_builtin_cmds as:

set(config_extra_builtin_cmds
        serdis
        sercon
        can
        )

Add:
add_custom_target(can)
set_target_properties(can PROPERTIES
       PRIORITY "SCHED_PRIORITY_DEFAULT"
       MAIN "can" STACK_MAIN "2048"
       COMPILE_FLAGS "-Os")

2) Update the nuttx-configs/<target>/nsh/defconfig

Run make oldconfig and make menuconfig and set the follwoing:
CONFIG_CAN=y
CONFIG_STM32_CAN1=y or CONFIG_STM32_CAN2=y
CONFIG_CAN_EXTID=y
CONFIG_CAN1_BAUD=250000
CONFIG_CAN_FIFOSIZE=8
CONFIG_CAN_NPENDINGRTR=4
CONFIG_EXAMPLES_CAN=y
2016-10-06 19:02:51 +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
Lorenz Meier 7e878e221c FMUv4: Code style 2016-08-12 13:55:16 +02:00
Mark Whitehorn 40a7bd009f implement Spektrum bind function for Pixracer R14 (#4887) 2016-06-23 23:27:51 +02:00
Lorenz Meier f79adacc9b FMUv4: Save 3KB of RAM 2016-06-01 17:12:52 +02:00
David Sidrane b54ec99d22 Move the DMA allocation to a common code and provide an instrumentation interface 2016-06-01 08:35:34 +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
David Sidrane 1b77ec7f82 Decouple board name 2016-05-21 10:48:15 +02:00
Lorenz Meier 29d6c95ec4 FMUv4: Build all Bosch drivers so they get built at least for one target 2016-05-13 15:02:58 +02:00
Lorenz Meier e250d12184 Board drivers: Shorten perf names 2016-05-05 20:06:42 +02:00
Lorenz Meier b5b4769d1f Enable RSSI sampling on Pixracer 2016-05-01 14:23:25 +02:00
Andrew Tridgell 82aca3d65c FMUv4: enable RSSI analog input pin 2016-05-01 14:22:58 +02:00
Robert Dickenson 45a601b9c1 New driver for the LIS3MDL magnetometer. 2016-04-22 10:30:19 +02:00
Lorenz Meier ef69f74977 Do not use low level debug output on USB resume 2016-04-21 10:35:57 +02:00
Robert Dickenson 7061bc804a Remove file with only whitespace change as not required in PR 2016-03-08 09:29:17 +01:00
Robert Dickenson 95e51ed8c6 Cleanup mpu9250 driver in preparation for PR 2016-03-08 09:29:17 +01:00