Subversion Repositories FlightCtrl

Rev

Rev 1615 | Blame | Last modification | View Log | RSS feed

Dongfang's FC firmware rewrite
------------------------------

The basis was V0.74d Code Redesign Killagreg.

Goal:
- To be the preferred hacker-friendly FC firmware.
- To use H&Is design experience but make the code clearer and easier to extend+modify.

Non-goal:
- To follow up on all changes and all new features in the H&I firmware.

Features:
- Readable, reasonably documented source code makes it easy to implement the features you
  want yourself (and to remove those you don't like).
- The code was broken into smaller pieces and modularized (fc.c in particular). 
  Global variables are (almost) only written to by one module each. 
- New or experimental hardware is easy to incorporate. Gyro and acc. meter axes are reversible,
  and resetting the sensitivity actually works.
- New or experiemental controls are easy to incorporate. All controls (eg. R/C, external
  serial, NC, automatic emergency landing pilot and automatic altitude controller pilot)
  are potentially abstractable to one interface.
- Reversal of gyro or accelerometer axes is easy. It is easy to adapt the firmware for
  upside down installation of the FC too.
- The firmware is compatible with MK-Tool. This may be changed, if somebody writes a new
  MK-Tool which is easy to adapt for addition of / removal of features.
  
Non-features (currently):
- Navi support temporarily removed (should be added again later).
- Compass support temporarily removed (should be added again later).
- Parts of menu.c are dummy implemented or removed. It is possible that menu.c and all use
  of printf will be removed later, and replaced by something else (debud on steroids).
- Control rate limiter removed.
- Altitude control temporarily removed (should be added again later).
- Automatic board detection removed. This firmware is for compiling yourself, possibly
  with nonstandard or experimental hardware. That conflicts with automatically switching
  between standard hardware versions, so the feature was removed. Instead, is was made
  easy to choose gyro types etc. in the makefile.

How to build:
- Choose a gyro definition, depending on your hardware, and enable it in the makefile
  and (GYRO=.....) and #include its header file in analog.h (how to make that follow the 
  makefile automatically?). Currently, ENC-03_FC1.3, ADXRS610_FC2.0 and invenSense are
  supported (each has a .c and a .h file).
- make all