Commit graph

183 commits

Author SHA1 Message Date
Petr Ledvina 091941cd82 Makefile improvement
- root must be assigned when declared - with :=
- add autodependecy generation
2014-10-23 14:10:45 +02:00
Dominic Clifton 8ef70abaa0 NAZE32 - Add hardware revision detection. 2014-10-15 20:59:06 +01:00
Dominic Clifton da51b5c479 Add MPU6500 SPI driver. Move sensor initialisation defines into target
specific headers.
2014-10-14 00:22:54 +01:00
Dominic Clifton 3bc9dc7121 Move linker scripts to src/main/target. 2014-10-07 07:06:05 +01:00
Dominic Clifton 6beec3c6e9 MASSIVEF3 - Add new target. 2014-10-07 06:57:28 +01:00
Dominic Clifton acbede5492 CC3D - Allow building of a binary that is compatible with the OpenPilot
CC3D bootloader to allow easy switching between OpenPilot and
Cleanflight.

Submitted by Alessio Morale -
http://forums.openpilot.org/topic/43569-baseflightcleanflight-ported-to-cc3d/?p=372149
2014-09-26 14:10:12 +01:00
Dominic Clifton 35280abfed Allow disabling of I2C for targets that do not use it. 2014-09-26 01:32:57 +01:00
Dominic Clifton a5d57e7b87 STM32F3 - Cleanup serial port usage. 2014-09-26 01:02:27 +01:00
Dominic Clifton c898ca4634 OLED Display - Add two pages: RX info and Welcome.
The RX info page shows channel letters and bar graphs for the first 8
channels.
The Welcome page shows the target and cleanflight git revision.
2014-09-21 05:09:01 +01:00
Dominic Clifton a4c21b5e57 SUMH - Initial cut of support for Graupner SUMH Serial RX protocol. 2014-09-20 09:39:42 +01:00
Dominic Clifton 0b4f5804bc Update led strip code to use HSV instead of RGB. 2014-09-18 20:53:28 +01:00
goebish 9f18ad474b fix typo preventing rebuild 2014-09-16 13:46:27 +02:00
Dominic Clifton 2e959dfd04 Make display support configurable per-target, enabled by default for
NAZE and EUSTM32F103RC.
2014-09-12 21:56:33 +01:00
Dominic Clifton f29168a998 Working OLED in test mode. 2014-09-12 21:56:33 +01:00
Dominic Clifton 9ce6dde1e7 Work-in-progress. 2014-09-12 21:56:33 +01:00
Dominic Clifton 2ae62d1977 Add git commit number to cli version command output. 2014-09-04 00:27:28 +01:00
Dominic Clifton 3d382ea4c7 EUSTM32F103RC - First cut of support for this High-Density STM32F103
series development board.

These boards can be picked up for less than $11, coupled with a 10DOF
sensor board they make a great development platform or cheap expandable
FC.

Pretty much all pins are available to be used, unlike on the less
capable and more expensive OLIMEXINO.
2014-09-03 01:38:27 +01:00
Dominic Clifton 59cddb21b4 Enable Serial RX on CJMCU target. 2014-08-26 23:25:14 +01:00
Dominic Clifton f1af9d434f Removing cruft from makefile that was accidentally committed when
working on the CJMCU target.
2014-08-22 19:19:20 +01:00
Dominic Clifton aa719dfe4f CJMCU - Use 64k/128k flash specific linker scripts scripts 2014-08-18 21:04:35 +01:00
Dominic Clifton d0338eac19 Cleanup sonar support for Naze/Flip32/Olimexino. Add Sonar
documentation.
2014-08-13 22:01:39 +01:00
Dominic Clifton 9906294cd8 Split navigation functionality from io/gps.c into flight/navigation.c.
gps.c now only has code that deals with gps hardware, state and
messaging.
navigation.c  now only has code dealing with flight
navigation/waypoints/home/hold/etc
2014-08-07 14:23:05 +01:00
Dominic Clifton 8c3a869251 Update CLI so that you can dump all, master or profile settings.
Cleanup '...' strings to reduce binary size.  Change version
information.

With this change it's much more obvious what is and what is not included
in a profile.

Examples:

dump
dump profile
dump master
2014-08-02 12:39:18 +01:00
Dominic Clifton 582503c0e6 Delete unused pwm rssi code - rssi adc is used instead since the rate
used (8khz) by some frsky receivers is too fast to be detected using the
pwm rssi code without bogging down the cpu in interrupt handlers.
2014-08-02 01:38:09 +01:00
Dominic Clifton 25ede3e6e0 Fix PWM in RSSI - accidentally excluded when adding CJMCU support. 2014-08-02 00:43:06 +01:00
Dominic Clifton 4d9a672d9c CC3D / NAZE - Adding support for hardware controlled inverter for use by
SBUS RX.
2014-08-02 00:43:06 +01:00
Dominic Clifton 94784dfa04 STM32F30x - Update compiler flags. Disable -pedantic on F30x targets
due to the hundreds of warning the CMSIS library generates when it is
enabled.
2014-08-01 22:06:39 +01:00
Dominic Clifton 2d6a61c8c7 Remove -Wshadow, the warnings are not useful.
See https://lkml.org/lkml/2006/11/28/253
2014-08-01 19:58:39 +01:00
Dominic Clifton 61bdc2ad5d Fixed problem with debug build and _sbrk, caused by missing -lc linker
option.

Re-ordered some makefile statements to be in-line with baseflight for
easier merging.
2014-08-01 18:39:47 +01:00
Dominic Clifton b96d1ae71d Update makefile so it builds with DEBUG=GDB without _sbrk linker error.
Enable additional warnings.

Later commits will fix warnings.
2014-08-01 14:12:39 +01:00
Paul Fertser 900f872058 Makefile: switch to newlib-nano
This makes the binary considerably smaller (73852 text with gcc
4.7.3, 71620 text with gcc 4.9.0 from TNT).

Build-tested only.

Signed-off-by: Paul Fertser <fercerpav@gmail.com>
2014-08-01 12:29:00 +01:00
Paul Fertser 941b42a269 Makefile: link with -nostartfiles
This saves a bit more space and a reasonable thing to do since a
custom startup is used anyway.

Build-tested only.

Signed-off-by: Paul Fertser <fercerpav@gmail.com>
2014-08-01 12:28:55 +01:00
Paul Fertser 76f4f31cf3 Make code warnings-free with -pedantic
This removes a function that's no longer used, and inline specifiers
from include file (where they're useless anyway). This makes the whole
default project warnings-free with -Wall -pedantic.

Signed-off-by: Paul Fertser <fercerpav@gmail.com>
2014-08-01 12:28:44 +01:00
Paul Fertser f218d3c040 Makefile: enable LTO
This rearranges Makefile a bit and enables Link Time Optimisation
which leads to a smaller code (77724 text with gcc 4.7.3).

Unconditionally adding -ggdb3 doesn't affect code size anyhow as all
the debugging info is stored in separate sections.

Build-tested only.

Signed-off-by: Paul Fertser <fercerpav@gmail.com>

Conflicts:

	Makefile
2014-08-01 01:25:16 +01:00
Dominic Clifton 326a10b1dc Allow autotune to be compiled in/out. 2014-08-01 01:14:23 +01:00
Dominic Clifton a6f4633272 Show sizes after build. 2014-08-01 01:07:06 +01:00
Dominic Clifton 1d5ef51373 CJMCU - Add compass driver. Update I2C configuration. Use PPM and
Brushed motors by default.
2014-08-01 00:56:28 +01:00
Dominic Clifton 125f6d1450 CJMCU - Allow various features to be compiled out to support. 2014-08-01 00:18:37 +01:00
Dominic Clifton 8f473f9b20 Initial support for CJMCU target (work-in-progress, compiles but doesn't link yet) 2014-07-31 14:01:01 +01:00
Dominic Clifton 5f16cfb72a CC3D - Support MPU6000 Gyro/Acc and SPI 1/2. 2014-07-17 22:12:21 +01:00
Dominic Clifton 1fb75890d5 Initial OpenPilot CC3D commit. 2014-07-16 01:06:09 +01:00
Dominic Clifton 623da881bc Removed apparently unneeded PRECIOUS statement (OSX).
Output files were being left in the working directory.

Build needs to be tested on cygwin, if it fails find a different
solution or revert this commit.
2014-07-01 18:52:11 +01:00
Dominic Clifton 364ada8110 Keep .s files so that compiler output can be easily verified. 2014-07-01 18:50:26 +01:00
Dominic Clifton 8d0509dbfb Move altitude hold code into separate files. 2014-06-21 23:57:14 +01:00
Dominic Clifton 9afcb20b7e Cleanup mismatch of buzzer/beeper terminology. Beep and Beeper should
be used from now on.
2014-06-21 23:32:58 +01:00
Dominic Clifton 1730e3dfd3 Relocated led strip user code into separate file.
Added documentation.

Added LED_STRIP feature, can only be enabled under certain circumstances
depending on target due to pin/timer mappings - see documentation.
2014-06-09 19:11:31 +01:00
Dominic Clifton 3c09b6a8c7 STM32F30x - Support WS2811 LEDs. 2014-06-08 15:43:00 +01:00
Dominic Clifton 578585db74 Extract STM32F10x specific WS2811 code into separate file, ready for
STM32F30x port.
2014-06-08 15:42:49 +01:00
Dominic Clifton da52b2d67c Hack WS2811 led strip. Proof-of-concept. 2014-06-08 12:58:18 +01:00
Dominic Clifton ad1b7dd216 Update Olimexo to support a 10DOF board.
Sensors on it are: MPU6050 HMC5883L BMP085.

BMP085 not connected to GPIO pins.
2014-06-08 12:57:30 +01:00
Dominic Clifton fd9d58110b Disable unused LED ring code.
Although it was compiled in for the NAZE target the ledringDetect()
method is never called.  Removing the feature for now too.
2014-06-07 16:53:25 +01:00
Dominic Clifton 32622da0ab Continuation of extracting peripheral configuration into drivers. 2014-06-04 14:53:34 +01:00
Dominic Clifton 8f2da892a6 Extract led and buzzer hardware initialisation from system.c. 2014-06-02 19:57:49 +01:00
Dominic Clifton d407a4d15e Start to break up drv/system.c to avoid #ifdef. 2014-06-02 18:43:47 +01:00
Dominic Clifton 7f027e7e24 Update makefile to use target specific files.
This is an alternative to #ifdef's everywhere which is getting out of
hand.

Confirmed that the VCP is working on the STM32F3Discovery board and
ChebuzzF3 variant.
2014-06-02 18:13:28 +01:00
Dominic Clifton c84d03d24d Update makefile for non-NAZE32PRO targets. Enable VCP on
STM32F3DISCOVERY.
2014-06-02 13:16:40 +01:00
Dominic Clifton 3f8a6c0e20 Add VCP driver (work in progress) 2014-06-02 01:54:25 +01:00
Dominic Clifton 4b437e8e08 Relocate battery code to sensors directory. 2014-06-01 16:58:16 +01:00
Dominic Clifton 805c9b4251 Update Makefile to place .hex files in 'obj' instead of 'obj/main'.
Latest naze binary.

Removing other binaries, git repo isn't really the place to store
binaries and they keep getting in the way.  This is will be kept here
until the configurator is updated.
2014-05-31 23:27:09 +01:00
Dominic Clifton 14448f4734 Merge branch 'naze32pro' - work in progress
Conflicts:
	Makefile
2014-05-31 22:50:05 +01:00
Dominic Clifton d19a5e7046 Cleanup project structure. Update unit test Makefile to place object
files in obj/test
2014-05-31 22:43:06 +01:00
dongie a3476cf59c Remove FY90Q support.
Conflicts:
	Makefile
	src/board.h
	src/drivers/adc_fy90q.c
	src/drivers/pwm_fy90q.c
	src/drv_adc.h
	src/sensors.c
	src/startup/startup_stm32f10x_md_fy90q.s
2014-05-30 09:45:15 +01:00
Dominic Clifton d0ec7e25ce Merge branch 'master' into autotune
Conflicts:
	obj/cleanflight_CHEBUZZF3.hex
	obj/cleanflight_NAZE.hex
	obj/cleanflight_OLIMEXINO.hex
2014-05-28 13:37:40 +01:00
Dominic Clifton 5484e5fddd Replace PWM RSSI with ADC RSSI.
The primary reason is to support the D4R-II with it's much faster PWM
frequency.  The PWM RSSI code could not keep up, and since there are no
timers free for using capture compare of PWM signals in hardware one
solution is to use the ADC at a slow sample rate.

RC2 is used as before and it expects a signal between 0 and 3.3v.  An
inline smoothing capacitor may help.

This commit also removes the cli command adc_power_channel since the
reading was never actually exposed anywhere.
2014-05-28 03:30:53 +01:00
Dominic Clifton f7c38af7fc Initial commit for implementation of autotune. 2014-05-27 18:11:55 +01:00
Dominic Clifton e5c5339306 Merge branch 'master-cleanflight-msptelemetry' of github.com:treymarc/baseflight into treymarc-master-cleanflight-msptelemetry
Conflicts:
	src/serial_msp.h
	src/telemetry_common.h
2014-05-25 00:32:41 +01:00
treymarc ac520b0676 usf hardware fpu with target stm32f30x 2014-05-24 20:40:12 +00:00
Dominic Clifton b0e1c934d4 Adding unit test for some gps conversion code to demystify it. 2014-05-24 17:54:57 +01:00
Dominic Clifton 1925df26ca Add RSSI PWM on CH2 input.
Also support FrSky 1khz RSSI.  See documentation also added in this
commit.

This commit also cleans up the PWM mapping code.  'mask' didn't need to
be a mask and it wasn't possible to add another 'type' since there were
only 4 possible values when it was a mask and they were already defined.  
Combined with switching to using 16 bits instead of 8 for the mapping
configurations, it's now possible to have 256 types instead of 4 at the
expense of a few bytes of flash.

Moved the RSSI calculation into rx_common.c, previously it was in the
main loop.
2014-05-24 00:01:59 +01:00
Trey Marc c245dc1868 Update Makefile
ARCH_FLAGS was never set to cortex-m4 , cf line 63
2014-05-20 03:53:51 +02:00
Dominic Clifton dcffbdba4b Initial commit of support for Naze32Pro (rev 1). 2014-05-15 15:34:18 +01:00
Dominic Clifton 4be9d953ac CHEBUZZF3 - Implement ADC driver for 3 ADC channels. Use STM32F3 linker
script so it uses the right values for RAM and FLASH size.
2014-05-12 00:17:14 +01:00
Dominic Clifton 5043370b2f Disable some acc/gyros on Olimexino. 2014-05-10 14:09:38 +01:00
Dominic Clifton 90d36b6869 Cleanup sensor auto detection code.
Decoupled mpu6050 acc and gyro detection code.

This commit cleans up the #ifdef/#ifndef code which, due to the amount
of targets and variants, was starting to get a bit out of hand.

Now each acc & gyro is assumed to be used unless the respective
USE_ACC_* and USE_GYRO_* is #undef'd at the top of the file by a
particular target.

This commit also cleans up the mess of re-running all the mpu6050
detection code twice.  Now the acc specific communication code is only
run once and only code that is actually needed to be run twice is run
twice, and the rest of the code is now only used once.  This will
improve board startup time, albeit negligibly.

Sensor alignment is only known for the NAZE target so now the alignment
will be ALIGN_DEFAULT for all targets other than NAZE unless they are
known.

Finally, in the Makefile a file was included twice in the source list
for the STM32F3DISCOVERY target and now additional sensors are supported
for users that may want to try them on that board.
2014-05-07 23:20:24 +01:00
Dominic Clifton 3b1801cacd CHEBUZZF3 - Update makefile and sensor initialisation code to support
ChebuzzF3 target.
2014-05-07 22:11:38 +01:00
Dominic Clifton 6721587566 Split PWM code into appropriate separate files - mapping, rx and output.
By decoupling everything the structures now only contain members they need.  The mapping code is simplified.  The calculation of timer periods is now where it belongs (with the output code, not with the mapping code).  Also, since each motor output has it's own callback method it is technically possible to mix brushed and brushless motors if the brushed motors and brushless motors use different timers.  Additional code would be required to fully support that.
2014-05-06 11:08:45 +01:00
treymarc 9e8b05dc0e add serial_rx msp
Conflicts:

	Makefile
	src/board.h
	src/main.c
	src/mw.h
	src/serial_cli.c
2014-05-03 18:20:17 +01:00
Dominic Clifton 9a3c922efc STM32F30x - de-duplicate common uart code. 2014-05-02 21:19:19 +01:00
Dominic Clifton 7e79a245c2 Cobbled together some bits of code to read and format the gyro data from
the L3GD29 gyro.  Some code borrowed again from AQ32PlusF3 and the
existing MPU6050 driver.
2014-04-28 22:29:51 +01:00
Dominic Clifton 4febeb3969 Ported some I2C code from AQ32PlusF3 which itself looked ported from the
STM32 examples.
2014-04-28 19:18:57 +01:00
Dominic Clifton f9ceb0c40f fix transposed gpio driver filenames and content 2014-04-25 01:17:08 +01:00
Dominic Clifton 0598704872 First commit of port to STM32F3DISCOVERY board.
work-in-progress, it does compile and run though but hangs early on in
main() because of unimplemented features.
2014-04-25 01:09:19 +01:00
Dominic Clifton 695db3523a Remove flight_mixer.c's dependency on mw.h/board.h.
This is a large commit, from the commit it is clear that the mixer has
many dependencies, this is expected since it is central to the
application.

To achieve the decoupling many master config and profile members had to
be moved into structures.

Relocated throttle/pitch curves into rc_curves.c/h since it has nothing
to with rx code, this fixed the dependencies inside the rx provider
files.
2014-04-24 00:18:24 +01:00
Dominic Clifton 53b7edd843 Add the name of the fork to the output of the cli version command. 2014-04-23 00:01:07 +01:00
treymarc b14b058fa0 add msp telemtry 2014-04-22 13:48:57 +02:00
Dominic Clifton fe89d40fa0 Remove main.c's dependency on mw.h/board.h.
Moved pidControllers out of mw.c into flight_common.c/h.
Moved appropriate code into rc_controls.c/h.
2014-04-22 01:58:23 +01:00
Dominic Clifton 9b8a10a09f Updating makefile so the binaries are build with the name of the fork,
in this case 'cleanflight'.  Updating binaries to reflect this change.  

Also renamed the 'startup' folder from 'baseflight_startups'.
2014-04-21 03:34:29 +01:00
Dominic Clifton e969d184e6 decouple failsafe from the rest of the system.
Note: the pwm_common driver has a dependency on the main failsafe code,
the solution is probably to move some of the code into rx_pwm.
2014-04-21 00:46:16 +01:00
Dominic Clifton a7e4c859bd decouple cli/msp from each other. relocated non-msp code into
serial_common.c/h. decouple runtime_config from serial ports.  decouple
buzzer from serial ports.  decouple opening of the main serial port from
the msp code.  decouple serial rx providers from runtime_config.  rename
core_t to serialPorts_t since it only contained serial ports.  It's now
clear which files use serial ports based on the header files they
include.
2014-04-19 01:01:31 +01:00
Dominic Clifton f68fc17627 Cleaned up RX initialisation. Updated Spektrum RX code to support 12
channels when using Spektrum 2048 - untested.  Renamed and extracted
core_t.numRCChannels to rxConfig.channelCount so that future commits can
clean up core_t further since core_t contains completely unrelated
properties.
2014-04-18 17:25:53 +01:00
Dominic Clifton d777bac39d move printf and typeconversion to common to reduce visual clutter of
main source directory.
2014-04-18 14:03:42 +01:00
Dominic Clifton a85bfa51e3 Remove config.c's dependencies on the mw.h/board.h files. Moved some RX
code into rx_common.c. Moved some GPS code into gps_common.c.  Isolated
some GPS functions into gps_common.c that were called from mw.c/loop().
moved gimbal defines into gimbal.h.  Moved sound & light code into
statusindicator.c
2014-04-18 12:13:37 +01:00
Dominic Clifton f06c8bb99b Relocate common code which can be used by drivers and by main into
'common'.  Cleanup includes.  Fix FY90Q target compilation.
2014-04-17 23:50:13 +01:00
Dominic Clifton d4ebd8a748 Rename 'altimeter' related files to 'barometer' since GPS and other
sensors handle altitude too - requested by @treymarc
2014-04-17 23:23:06 +01:00
Dominic Clifton 0f02e12f40 de-duplicate failsafe code. extract failsafe code to seperate files.
remove dependency on board.h and mw.h on a few files.

Moved rx configuration paramaters into rxConfig in order to remove the
dependency on config_t from the sbus rx code  - sumd/spektrum to follow.

Avoided use of YAW/PITCH/ROLL in some files since those constants are
from an unrelated enum type.

Replaced some magic numbers with constants to remove comments and
improve code readability.

Note, due to the tight coupling and global variable usage it was
difficult to create a smaller commit.
2014-04-17 23:02:22 +01:00
Dominic Clifton 89612bd881 De-couple battery code.
This fixes a bug where buzzerFreq could be uninitialised before it's
use.
This improves performance by only checking whether to sound the battery
alarm after the battery voltage has been recalculated.
There were unused battery beep codes which have been deleted to save
code size.
Configuration structure extracted from mw.h into config.h.
Moved mixer configuration structures into flight_mixer.h.
Added a build_config.c in order to decouple pwm_common.h from config.h.
Finally, battery configuration values now live in a batteryConfig
structure which means that battery.c does not depend on config.h and all
of it's dependencies.

Fixed the use of plurals on defines that were not collection objects.
PIDITEMS and CHECKBOXITEMS are now PID_ITEM_COUNT and
CHECKBOX_ITEM_COUNT.
2014-04-17 16:36:01 +01:00
Dominic Clifton 2f07f52cf7 Update system/beeper drivers so they do not include "board.h". It is now
clear what all system/beeper drivers need to compile and what was
unnecessarily included before.

Extracted system beeper code to a separate file.
2014-04-17 14:41:17 +01:00
Dominic Clifton 001de4cdf3 Move FY90q acc/gyro code to accgyro_fy90q.c. Update ADC drivers so they
do not include "board.h". It is now clear what all ADC drivers need to
compile and what was unnecessarily included before.

Note: FY90Q make target now compiles successfully, it was broken for
various reasons before.
2014-04-16 18:58:20 +01:00
Dominic Clifton 3bd4cd2ed2 Use slightly flatter directory structure since some developers did not
like too many folders.
Extracted code from some files into separate files to fit with the new
layout.
2014-04-08 22:07:37 +01:00
Dominic Clifton 39adc34278 Re-order files in makefile alphabetically 2014-04-08 16:20:16 +01:00