diff --git a/JLinkSettings.ini b/JLinkSettings.ini index f320c7ce1a..1cf11b0e13 100755 --- a/JLinkSettings.ini +++ b/JLinkSettings.ini @@ -1,31 +1,31 @@ -[BREAKPOINTS] -ShowInfoWin = 1 -EnableFlashBP = 2 -BPDuringExecution = 0 -[CFI] -CFISize = 0x00 -CFIAddr = 0x00 -[CPU] -OverrideMemMap = 0 -AllowSimulation = 1 -ScriptFile="" -[FLASH] -MinNumBytesFlashDL = 0 -SkipProgOnCRCMatch = 1 -VerifyDownload = 1 -AllowCaching = 1 -EnableFlashDL = 2 -Override = 0 -Device="AD7160" -[GENERAL] -WorkRAMSize = 0x00 -WorkRAMAddr = 0x00 -[SWO] -SWOLogFile="" -[MEM] -RdOverrideOrMask = 0x00 -RdOverrideAndMask = 0xFFFFFFFF -RdOverrideAddr = 0xFFFFFFFF -WrOverrideOrMask = 0x00 -WrOverrideAndMask = 0xFFFFFFFF -WrOverrideAddr = 0xFFFFFFFF +[BREAKPOINTS] +ShowInfoWin = 1 +EnableFlashBP = 2 +BPDuringExecution = 0 +[CFI] +CFISize = 0x00 +CFIAddr = 0x00 +[CPU] +OverrideMemMap = 0 +AllowSimulation = 1 +ScriptFile="" +[FLASH] +MinNumBytesFlashDL = 0 +SkipProgOnCRCMatch = 1 +VerifyDownload = 1 +AllowCaching = 1 +EnableFlashDL = 2 +Override = 0 +Device="AD7160" +[GENERAL] +WorkRAMSize = 0x00 +WorkRAMAddr = 0x00 +[SWO] +SWOLogFile="" +[MEM] +RdOverrideOrMask = 0x00 +RdOverrideAndMask = 0xFFFFFFFF +RdOverrideAddr = 0xFFFFFFFF +WrOverrideOrMask = 0x00 +WrOverrideAndMask = 0xFFFFFFFF +WrOverrideAddr = 0xFFFFFFFF diff --git a/docs/Board - AlienWii32.md b/docs/Board - AlienWii32.md new file mode 100644 index 0000000000..7c693f0aff --- /dev/null +++ b/docs/Board - AlienWii32.md @@ -0,0 +1,24 @@ +# Board - AlienWii32 + +The AlienWii32 is actually in prototype stage only a few samples exist. There is some more field testing ongoing. The information below is preliminary and will be updated as needed. + +Here are the hardware specifications: + +- STM32F103CBT6 MCU +- MPU6050 accelerometer/gyro sensor unit +- 8x 4.2A brushed ESCs, integrated, to run the strongest micro motors +- extra-wide traces on the PCB, for maximum power throughput +- USB port, integrated +- (*) serial connection for external DSM2/DSMX sat receiver (e.g. Spektrum SAT, OrangeRx R100 or Lemon RX) +- alternatively PPM receiver connection (i.e. Deltang Rx31) +- ground and 3.3V for the receiver +- hardware bind plug for easy binding +- motor connections are at the corners for a clean look with reduced wiring +- dimensions: 29x33mm +- direct operation from an single cell lipoly battery + +(*) Spektrum Compatible DSM2 satellites are supported out of the box. DSMX sat will work with DSM2 protocol with default settings (DSM2, 11bit, 11ms is preset). + +Deltang receivers in serial mode will work like any other Spektrum satellite receiver (10bit, 22ms) only the bind process will be different. + +The pin layout is very similar as the NAZE32 or the related clones (MW32, Flip32, etc.). The hardware bind pin is connected to pin 41 (PB5). The AlienWii32 firmware will be built with TARGET=NAZE and OPTIONS="AlienWii32". The firmware image will come with alternative default settings which will give the user a plug and play experience. There is no computer needed to get this into the air with an small Quadcopter. An preconfigured custom mixer for an Octocopter is part of the default settings to allow clean straight wiring with the AlienWii32. The mixer can be activated with "mixer custom" in the CLI. To use the AlienWii32 in an Hexa- or Octocopter or to do some more tuning additional configuration changes can be done as usual in the CLI or the Cleanflight configurator. \ No newline at end of file diff --git a/docs/Board - Naze32.md b/docs/Board - Naze32.md index 9409435f6c..3f4a9dc77b 100644 --- a/docs/Board - Naze32.md +++ b/docs/Board - Naze32.md @@ -37,7 +37,7 @@ When SOFTSERIAL is enabled, LED_STRIP and CURRENT_METER are unavailable, but two | Pin | Identifier | Function | Notes | | --- | ---------- | -------------- | -------------------------------- | -| 7 | 5 | SOFTSERIAL1 TX | Enable `feature SOFTSERIAL` | -| 8 | 6 | SOFTSERIAL1 RX | | -| 9 | 7 | SOFTSERIAL2 TX | | -| 10 | 8 | SOFTSERIAL2 RX | | +| 7 | 5 | SOFTSERIAL1 RX | Enable `feature SOFTSERIAL`| +| 8 | 6 | SOFTSERIAL1 TX | | +| 9 | 7 | SOFTSERIAL2 RX | | +| 10 | 8 | SOFTSERIAL2 TX | | diff --git a/docs/Board - Sparky.md b/docs/Board - Sparky.md index af90f80904..61d55d50f6 100644 --- a/docs/Board - Sparky.md +++ b/docs/Board - Sparky.md @@ -3,6 +3,7 @@ The Sparky is a very low cost and very powerful board. * 3 hardware serial ports. +* Built-in serial port inverters which allows SBUS receivers to be used without external inverters. * USB (can be used at the same time as the serial ports). * 10 PWM outputs. * Dedicated PPM/SerialRX input pin. @@ -16,12 +17,13 @@ Flyable! Tested with revision 1 board. ## TODO -* Mag -* Baro +* Baro - detection works but getting bad readings, disabled for now. * Led Strip * ADC -* Display +* Sonar +* Display (via Flex port) * Softserial - though having 3 hardware serial ports makes it a little redundant. +* Airplane PWM mappings. # Flashing @@ -46,10 +48,12 @@ Flashing cleanflight will erase the TauLabs bootloader, this is not a problem an | Value | Identifier | RX | TX | Notes | | ----- | ------------ | --------- | ---------- | ------------------------------------------------------------------------------------------- | | 1 | USB VCP | RX (USB) | TX (USB) | | -| 2 | USART1 | RX / PB7 | TX / PB6 | Conn1 / Flexi Port | -| 3 | USART2 | RX / PA3 | PWM6 / PA2 | On RX is on INPUT header. Best port for Serial RX input. | +| 2 | USART1 | RX / PB7 | TX / PB6 | Conn1 / Flexi Port. | +| 3 | USART2 | RX / PA3 | PWM6 / PA2 | On RX is on INPUT header. Best port for Serial RX input | | 4 | USART3 | RX / PB11 | TX / PB10 | RX/TX is on one end of the 6-pin header about the PWM outputs. | USB VCP *can* be used at the same time as other serial ports (unlike Naze32). +All USART ports all support automatic hardware inversion which allows direct connection of serial rx receivers like the FrSky X4RSB - no external inverter needed. + diff --git a/docs/LedStrip.md b/docs/LedStrip.md index 4242c906f2..4b4dbe565b 100644 --- a/docs/LedStrip.md +++ b/docs/LedStrip.md @@ -219,22 +219,22 @@ This is the default so that if you don't want to place LEDs top and bottom in th ### Example 16 LED config ``` -15,15:SD:IA -8,8:E:FW -8,7:E:FW -15,0:ND:IA -7,7:N:FW -8,7:N:FW -0,0:ND:IA -7,7:W:FW -7,8:W:FW -0,15:SD:IA -7,8:S:FW -8,8:S:FW -7,7:D:FW -8,7:D:FW -7,7:U:FW -8,7:U:FW +led 0 15,15:SD:IA +led 1 8,8:E:FW +led 2 8,7:E:FW +led 3 15,0:ND:IA +led 4 7,7:N:FW +led 5 8,7:N:FW +led 6 0,0:ND:IA +led 7 7,7:W:FW +led 8 7,8:W:FW +led 9 0,15:SD:IA +led 10 7,8:S:FW +led 11 8,8:S:FW +led 12 7,7:D:FW +led 13 8,7:D:FW +led 14 7,7:U:FW +led 15 8,7:U:FW ``` Which translates into the following positions: diff --git a/docs/Spektrum bind.md b/docs/Spektrum bind.md new file mode 100644 index 0000000000..304af979bc --- /dev/null +++ b/docs/Spektrum bind.md @@ -0,0 +1,49 @@ +# Spektrum bind support + +Spektrum bind with hardware bind plug support. + +The Spektrum bind code is actually enabled for the NAZE, NAZE32PRO, CJMCU, EUSTM32F103RC, SPARKY, CC3D targets. + +## Configure the bind code + +The following parameters can be used to enable and configure this in the related target.h file: + + SPEKTRUM_BIND Enables the Spektrum bind code + BIND_PORT GPIOA Defines the port for the bind pin + BIND_PIN Pin_3 Defines the bind pin (the satellite receiver is connected to) + +This is to activate the hardware bind plug feature + + HARDWARE_BIND_PLUG Enables the hardware bind plug feature + BINDPLUG_PORT GPIOB Defines the port for the hardware bind plug + BINDPLUG_PIN Pin_5 Defines the hardware bind plug pin + +## Hardware + +The hardware bind plug will be enabled via defining HARDWARE_BIND_PLUG during building of the firmware. BINDPLUG_PORT and BINDPLUG_PIN also need to be defined (please see above). This is done automatically if the AlienWii32 firmware is build. The hardware bind plug is expected between the defined bind pin and ground. + +## Function + +The bind code will actually work for NAZE, NAZE32PRO, CJMCU, EUSTM32F103RC, SPARKY targets (USART2) and CC3D target (USART3, flex port). The spektrum_sat_bind CLI parameter is defining the number of bind impulses (1-10) send to the satellite receiver. Setting spektrum_sat_bind to zero will disable the bind mode in any case. The bind mode will only be activated after an power on or hard reset. Please refer to the table below for the different possible values. + +If the hardware bind plug is configured the bind mode will only be activated if the plug is set during the firmware start-up. The value of the spektrum_sat_bind parameter will be permanently preserved. The bind plug should be always removed for normal flying. + +If no hardware bind plug is used the spektrum_sat_bind parameter will trigger the bind process during the next hardware reset and will be automatically reset to "0" after this. + +Please refer to the satellite receiver documentation for more details of the specific receiver in bind mode. Usually the bind mode will be indicated with some flashing LEDs. + +## Table with spektrum_sat_bind parameter value + +| Value | Receiver mode | Notes | +| ----- | ---------------| -------------------| +| 3 | DSM2 1024/22ms | | +| 5 | DSM2 2048/11ms | default AlienWii32 | +| 7 | DSMX 22ms | | +| 9 | DSMX 11ms | | + +More detailed information regarding the satellite binding process can be found here: +http://wiki.openpilot.org/display/Doc/Spektrum+Satellite + +### Supported Hardware + +NAZE, NAZE32PRO, CJMCU, SPARKY, EUSTM32F103RC, CC3D targets (AlienWii32 with hardware bind plug) diff --git a/lib/main/CMSIS/CM3/DeviceSupport/ST/STM32F10x/Release_Notes.html b/lib/main/CMSIS/CM3/DeviceSupport/ST/STM32F10x/Release_Notes.html index b80f38df1c..fde27c98f7 100755 --- a/lib/main/CMSIS/CM3/DeviceSupport/ST/STM32F10x/Release_Notes.html +++ b/lib/main/CMSIS/CM3/DeviceSupport/ST/STM32F10x/Release_Notes.html @@ -1,284 +1,284 @@ - - - - - - - - - - - - -Release Notes for STM32F10x CMSIS - - - - - -
-


-

-
- - - - - - -
- - - - - - - - - -
Back to Release page
-

Release -Notes for STM32F10x CMSIS

-

Copyright 2011 STMicroelectronics

-

-
-

 

- - - - - - -
-

Contents

-
    -
  1. STM32F10x CMSIS -update History
  2. -
  3. License
  4. -
- -

STM32F10x CMSIS -update History


-

V3.5.0 / 11-March-2011

-

Main -Changes

- -
    -
  • stm32f10x.h -and startup_stm32f10x_hd_vl.s files: remove the FSMC interrupt -definition for STM32F10x High-density Value line devices.
    -
  • -
  • system_stm32f10x.c file provided within the CMSIS folder.
    -
  • - -
- -

3.4.0 -- 10/15/2010

- -
    -
  1. General
  2. -
- -
    -
  • Add support -for STM32F10x High-density Value line devices.
  • -
-
    -
  1. STM32F10x CMSIS Device Peripheral Access Layer
  2. -
- - - -
    -
  • STM32F10x CMSIS Cortex-M3 Device Peripheral Access Layer Header File: stm32f10x.h
    -
    • Update to support High-density Value line devices
      • Add new define STM32F10X_HD_VL
      • -
      • RCC, AFIO, FSMC bits definition updated
      • -
      -
    • - - All -STM32 devices definitions are commented by default. User has to select the -appropriate device before starting else an error will be signaled on compile -time.
    • -
    • Add new IRQs definitons inside the IRQn_Type enumeration for STM23 High-density Value line devices.
    • -
    • "bool" type removed.
      -
    • -
  • STM32F10x CMSIS Cortex-M3 Device Peripheral Access Layer System Files: system_stm32f10x.h and system_stm32f10x.c
    -
  • -
      -
    • "system_stm32f10x.c" moved to to "STM32F10x_StdPeriph_Template" directory. This file is also moved to each example directory under "STM32F10x_StdPeriph_Examples".
      -
    • -
    • SystemInit_ExtMemCtl() function: update to support High-density Value line devices.
    • -
    • Add "VECT_TAB_SRAM" inside "system_stm32f10x.c" -to select if the user want to place the Vector Table in internal SRAM. -An additional define is also to specify the Vector Table offset "VECT_TAB_OFFSET".
      -
    • - -
    -
  • STM32F10x CMSIS startup files:startup_stm32f10x_xx.s
    • Add three -startup files for STM32 High-density Value line devices: - startup_stm32f10x_hd_vl.s
    -
-

3.3.0 -- 04/16/2010

- -
  1. General
-
  • Add support -for STM32F10x XL-density devices.
  • Add startup files for TrueSTUDIO toolchain
  1. STM32F10x CMSIS Device Peripheral Access Layer
- -
  • STM32F10x CMSIS Cortex-M3 Device Peripheral Access Layer Header File: stm32f10x.h
    -
    • Update to support XL-density devices
      • Add new define STM32F10X_XL
      • Add new IRQs for TIM9..14
      • Update FLASH_TypeDef structure
      • Add new IP instances TIM9..14
      • RCC, AFIO, DBGMCU bits definition updated
    • Correct IRQs definition for MD-, LD-, MD_VL- and LD_VL-density devices (remove comma "," at the end of enum list)
  • STM32F10x CMSIS Cortex-M3 Device Peripheral Access Layer System Files: system_stm32f10x.h and system_stm32f10x.c
    -
    • SystemInit_ExtMemCtl() function: update to support XL-density devices
    • SystemInit() function: swap the order of SetSysClock() and SystemInit_ExtMemCtl() functions. 
      -
  • STM32F10x CMSIS startup files:
    • add three -startup files for STM32 XL-density devices: - startup_stm32f10x_xl.s
    • startup_stm32f10x_md_vl.s for RIDE7: add USART3 IRQ Handler (was missing in previous version)
    • Add startup files for TrueSTUDIO toolchain
-

3.2.0 -- 03/01/2010

-
    -
  1. General
  2. -
-
    - -
  • STM32F10x CMSIS files updated to CMSIS V1.30 release
  • -
  • Directory structure updated to be aligned with CMSIS V1.30
    -
  • -
  • Add support -for STM32 Low-density Value line (STM32F100x4/6) and -Medium-density Value line (STM32F100x8/B) devices
  • - -
-
    -
  1. CMSIS Core Peripheral Access Layer
- -
    -
  1. STM32F10x CMSIS Device Peripheral Access Layer
  2. - -
- -
    - -
  • STM32F10x CMSIS Cortex-M3 Device Peripheral Access Layer Header File: stm32f10x.h
    -
  • -
      -
    • Update -the stm32f10x.h file to support new Value line devices features: CEC -peripheral, new General purpose timers TIM15, TIM16 and TIM17.
    • -
    • Peripherals Bits definitions updated to be in line with Value line devices available features.
      -
    • -
    • HSE_Value, -HSI_Value and HSEStartup_TimeOut changed to upper case: HSE_VALUE, -HSI_VALUE and HSE_STARTUP_TIMEOUT. Old names are kept for legacy -purposes.
      -
    • -
    -
  • STM32F10x CMSIS Cortex-M3 Device Peripheral Access Layer System Files: system_stm32f10x.h and system_stm32f10x.c
    -
  • -
      -
    • SystemFrequency variable name changed to SystemCoreClock
      -
    • -
    • Default - SystemCoreClock is changed to 24MHz when Value line devices are selected and to 72MHz on other devices.
      -
    • -
    • All while(1) loop were removed from all clock setting functions. User has to handle the HSE startup failure.
      -
    • -
    • Additional function void SystemCoreClockUpdate (void) is provided.
      -
    • -
    -
  • STM32F10x CMSIS Startup files: startup_stm32f10x_xx.s
  • -
      -
    • Add new -startup files for STM32 Low-density Value line devices: - startup_stm32f10x_ld_vl.s
    • -
    • Add new startup -files for STM32 Medium-density Value line devices: - startup_stm32f10x_md_vl.s
    • -
    • SystemInit() function is called from startup file (startup_stm32f10x_xx.s) before to branch to application main.
      -To reconfigure the default setting of SystemInit() function, refer to system_stm32f10x.c file
      -
    • -
    • GNU startup file for Low density devices (startup_stm32f10x_ld.s) is updated to fix compilation errors.
      -
    • -
    - -
- -
    -
-

License

-

The -enclosed firmware and all the related documentation are not covered by -a License Agreement, if you need such License you can contact your -local STMicroelectronics office.

-

THE -PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO -SAVE TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR -ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY -CLAIMS ARISING FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY -CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH -THEIR PRODUCTS.

-

 

-
-
-

For -complete documentation on STM32(CORTEX M3) 32-Bit Microcontrollers -visit www.st.com/STM32

-
-

-
-
-

 

-
+ + + + + + + + + + + + +Release Notes for STM32F10x CMSIS + + + + + +
+


+

+
+ + + + + + +
+ + + + + + + + + +
Back to Release page
+

Release +Notes for STM32F10x CMSIS

+

Copyright 2011 STMicroelectronics

+

+
+

 

+ + + + + + +
+

Contents

+
    +
  1. STM32F10x CMSIS +update History
  2. +
  3. License
  4. +
+ +

STM32F10x CMSIS +update History


+

V3.5.0 / 11-March-2011

+

Main +Changes

+ +
    +
  • stm32f10x.h +and startup_stm32f10x_hd_vl.s files: remove the FSMC interrupt +definition for STM32F10x High-density Value line devices.
    +
  • +
  • system_stm32f10x.c file provided within the CMSIS folder.
    +
  • + +
+ +

3.4.0 +- 10/15/2010

+ +
    +
  1. General
  2. +
+ +
    +
  • Add support +for STM32F10x High-density Value line devices.
  • +
+
    +
  1. STM32F10x CMSIS Device Peripheral Access Layer
  2. +
+ + + +
    +
  • STM32F10x CMSIS Cortex-M3 Device Peripheral Access Layer Header File: stm32f10x.h
    +
    • Update to support High-density Value line devices
      • Add new define STM32F10X_HD_VL
      • +
      • RCC, AFIO, FSMC bits definition updated
      • +
      +
    • + + All +STM32 devices definitions are commented by default. User has to select the +appropriate device before starting else an error will be signaled on compile +time.
    • +
    • Add new IRQs definitons inside the IRQn_Type enumeration for STM23 High-density Value line devices.
    • +
    • "bool" type removed.
      +
    • +
  • STM32F10x CMSIS Cortex-M3 Device Peripheral Access Layer System Files: system_stm32f10x.h and system_stm32f10x.c
    +
  • +
      +
    • "system_stm32f10x.c" moved to to "STM32F10x_StdPeriph_Template" directory. This file is also moved to each example directory under "STM32F10x_StdPeriph_Examples".
      +
    • +
    • SystemInit_ExtMemCtl() function: update to support High-density Value line devices.
    • +
    • Add "VECT_TAB_SRAM" inside "system_stm32f10x.c" +to select if the user want to place the Vector Table in internal SRAM. +An additional define is also to specify the Vector Table offset "VECT_TAB_OFFSET".
      +
    • + +
    +
  • STM32F10x CMSIS startup files:startup_stm32f10x_xx.s
    • Add three +startup files for STM32 High-density Value line devices: + startup_stm32f10x_hd_vl.s
    +
+

3.3.0 +- 04/16/2010

+ +
  1. General
+
  • Add support +for STM32F10x XL-density devices.
  • Add startup files for TrueSTUDIO toolchain
  1. STM32F10x CMSIS Device Peripheral Access Layer
+ +
  • STM32F10x CMSIS Cortex-M3 Device Peripheral Access Layer Header File: stm32f10x.h
    +
    • Update to support XL-density devices
      • Add new define STM32F10X_XL
      • Add new IRQs for TIM9..14
      • Update FLASH_TypeDef structure
      • Add new IP instances TIM9..14
      • RCC, AFIO, DBGMCU bits definition updated
    • Correct IRQs definition for MD-, LD-, MD_VL- and LD_VL-density devices (remove comma "," at the end of enum list)
  • STM32F10x CMSIS Cortex-M3 Device Peripheral Access Layer System Files: system_stm32f10x.h and system_stm32f10x.c
    +
    • SystemInit_ExtMemCtl() function: update to support XL-density devices
    • SystemInit() function: swap the order of SetSysClock() and SystemInit_ExtMemCtl() functions. 
      +
  • STM32F10x CMSIS startup files:
    • add three +startup files for STM32 XL-density devices: + startup_stm32f10x_xl.s
    • startup_stm32f10x_md_vl.s for RIDE7: add USART3 IRQ Handler (was missing in previous version)
    • Add startup files for TrueSTUDIO toolchain
+

3.2.0 +- 03/01/2010

+
    +
  1. General
  2. +
+
    + +
  • STM32F10x CMSIS files updated to CMSIS V1.30 release
  • +
  • Directory structure updated to be aligned with CMSIS V1.30
    +
  • +
  • Add support +for STM32 Low-density Value line (STM32F100x4/6) and +Medium-density Value line (STM32F100x8/B) devices
  • + +
+
    +
  1. CMSIS Core Peripheral Access Layer
+ +
    +
  1. STM32F10x CMSIS Device Peripheral Access Layer
  2. + +
+ +
    + +
  • STM32F10x CMSIS Cortex-M3 Device Peripheral Access Layer Header File: stm32f10x.h
    +
  • +
      +
    • Update +the stm32f10x.h file to support new Value line devices features: CEC +peripheral, new General purpose timers TIM15, TIM16 and TIM17.
    • +
    • Peripherals Bits definitions updated to be in line with Value line devices available features.
      +
    • +
    • HSE_Value, +HSI_Value and HSEStartup_TimeOut changed to upper case: HSE_VALUE, +HSI_VALUE and HSE_STARTUP_TIMEOUT. Old names are kept for legacy +purposes.
      +
    • +
    +
  • STM32F10x CMSIS Cortex-M3 Device Peripheral Access Layer System Files: system_stm32f10x.h and system_stm32f10x.c
    +
  • +
      +
    • SystemFrequency variable name changed to SystemCoreClock
      +
    • +
    • Default + SystemCoreClock is changed to 24MHz when Value line devices are selected and to 72MHz on other devices.
      +
    • +
    • All while(1) loop were removed from all clock setting functions. User has to handle the HSE startup failure.
      +
    • +
    • Additional function void SystemCoreClockUpdate (void) is provided.
      +
    • +
    +
  • STM32F10x CMSIS Startup files: startup_stm32f10x_xx.s
  • +
      +
    • Add new +startup files for STM32 Low-density Value line devices: + startup_stm32f10x_ld_vl.s
    • +
    • Add new startup +files for STM32 Medium-density Value line devices: + startup_stm32f10x_md_vl.s
    • +
    • SystemInit() function is called from startup file (startup_stm32f10x_xx.s) before to branch to application main.
      +To reconfigure the default setting of SystemInit() function, refer to system_stm32f10x.c file
      +
    • +
    • GNU startup file for Low density devices (startup_stm32f10x_ld.s) is updated to fix compilation errors.
      +
    • +
    + +
+ +
    +
+

License

+

The +enclosed firmware and all the related documentation are not covered by +a License Agreement, if you need such License you can contact your +local STMicroelectronics office.

+

THE +PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS +WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO +SAVE TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR +ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY +CLAIMS ARISING FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY +CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH +THEIR PRODUCTS.

+

 

+
+
+

For +complete documentation on STM32(CORTEX M3) 32-Bit Microcontrollers +visit www.st.com/STM32

+
+

+
+
+

 

+
\ No newline at end of file diff --git a/lib/main/STM32F30x_StdPeriph_Driver/Release_Notes.html b/lib/main/STM32F30x_StdPeriph_Driver/Release_Notes.html index 4594108878..0361fd882d 100644 --- a/lib/main/STM32F30x_StdPeriph_Driver/Release_Notes.html +++ b/lib/main/STM32F30x_StdPeriph_Driver/Release_Notes.html @@ -1,409 +1,409 @@ - - - - - - - - -Release Notes for STM32F30x Standard Peripherals Library Drivers - - - - - - -
-


-

-
- - - - - - -
- - - - - - -
- -

Release -Notes for STM32F30x Standard Peripherals Library Drivers (StdPeriph_Drivers)
-

-

Copyright -© 2014 STMicroelectronics

-

-
-

 

- - - - - - -
-

Update history

- -

V1.1.1 /04-April-2014

- - -

Main -Changes

- - - - - - - - - - - -
  • stm32f30x_hrtim.c/.h: 
    • Add "HRTIM_SINGLE_CALIBRATION" define.
    • Add HRTIM Common flags definition
    • Add new function HRTIM_SlaveSetCompare(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t CompareUnit, uint32_t Compare).
    • Update HRTIM_DLLCalibrationStart() function.
    • Update HRTIM_DMACmd(), HRTIM_GetITStatus(), HRTIM_GetFlagStatus(), HRTIM_ClearITPendingBit(), HRTIM_ClearFlag() and HRTIM_ITConfig() functions to properly manage master and slave HRTIMERS.

V1.1.0 /27-February-2014

- - -

Main -Changes

- - - - - - - - - - - -
  • Add support of the STM32F302x8 and STM32F334x8 devices.
  • Add High Resolution Timer(HRTIM) peripheral driver.
  • stm32f30x_adc.c
    • Update ADC_TempSensorCmd() and ADC_VbatCmd() functions to be inline with the devices specification.
    • Update ADC_DMAConfig() function description.
  • stm32f30x_dac.c/.h: update overall driver to add the support of the DAC2.
  • stm32f30x_gpio.c: 
    • Update -GPIO_Init() function to avoid unexpected transition in the GPIO -pin configuration when writing to the PUPDR register.
  • stm32f30x_rcc.c/.h: update for STM32F302x8 and STM32F334x8 devices
    • Add new function RCC_MCOConfig(uint8_t RCC_MCOSource, uint32_t RCC_MCOPrescaler).
    • Update RCC_GetClocksFreq() funtion to :
      • properly return the ADC clock frequency,
      • workarround USART1 clock limitation for the STM32F302x8 and STM32F334x8 devices,
      • support TIM15, 16, 17, HRTIM and I2C3 peripherals.
    • Update RCC_I2CCLKConfig() function to support I2C3 peripheral.
    • Update RCC_TIMCLKConfig() function to support TIM15, 16, and 17 peripherals.
    • Add RCC_HRTIM1CLKConfig() function.
  • stm32f30x_syscfg.c/.h
    • Update SYSCFG_DMAChannelRemapConfig() function to support new DMA channels remap.
    • Update SYSCFG_TriggerRemapConfig() funciton to support the new remap of DAC trigger to HRTIM.
  • stm32f30x_tim.c:
    • Update TIM_SelectOCxM() function to properly manage the output compare modes.

V1.0.1 / 23-October-2012

- - -

Main -Changes

- - - -
  • - - - -

    stm32f30x_adc.c/h

    • Remove -the following functions, the configuration will be done under ADC_Init function :

      • ADC_InjectedSequencerLengthConfig; -

      • ADC_InjectedChannelConfig;

      • ADC_ExternalTriggerInjectedPolarityConfig;

      • ADC_SelectExternalTriggerInjected

    • Update - comment of uint8_t ADC_TwoSamplingDelay parameter in -ADC_CommonInitTypeDef structure definition.

    • Add -a function to configure the sampling time for injected channels : void -ADC_InjectedChannelSampleTimeConfig (ADC_TypeDef* ADCx, uint8_t -ADC_InjectedChannel, uint8_t ADC_SampleTime);

- - - - - - - - - - - - - - - - - -

-

  • stm32f30x_rtc.c

    • Update -comments : remove all reference to RTC_AF1, reformulate -the PC13 RTC_AF table to be in line with the description in Reference manual (RM00316)

  • - - - -

     stm32f30x_tim.c -

    • Update local variables declaration (must be uint32_t) to correct Tasking toochain warnings.  

  • stm32f30x_gpio.h -
    • Update GPIOSpeed_TypeDef parameters structure to be in line with description in Reference manual and add GPIO speed legacy defines.

  • Remove all references to other products (STM32F37x, STM32F0xx,...) in the comments.

V1.0.0 / 04-September-2012

- - -

Main -Changes

- - - -
  • First official release for STM32F30x and STM32F31x devices
-
    - -

    License

    Licensed -under MCD-ST Liberty SW License Agreement V2, (the "License"); You may not use -this package -except in compliance with the License. You may obtain a copy of the License -at:

    -
    Unless -required by applicable law or agreed to in writing, software distributed under -the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR -CONDITIONS OF ANY KIND, either express or implied. See the License for the -specific language governing permissions and limitations under the -License.

    -
    -
    -

    For -complete documentation on STM32 Microcontrollers visit www.st.com/STM32

    -
    -

    -
    -
    -

     

    -
    + + + + + + + + +Release Notes for STM32F30x Standard Peripherals Library Drivers + + + + + + +
    +


    +

    +
    + + + + + + +
    + + + + + + +
    + +

    Release +Notes for STM32F30x Standard Peripherals Library Drivers (StdPeriph_Drivers)
    +

    +

    Copyright +© 2014 STMicroelectronics

    +

    +
    +

     

    + + + + + + +
    +

    Update history

    + +

    V1.1.1 /04-April-2014

    + + +

    Main +Changes

    + + + + + + + + + + + +
    • stm32f30x_hrtim.c/.h: 
      • Add "HRTIM_SINGLE_CALIBRATION" define.
      • Add HRTIM Common flags definition
      • Add new function HRTIM_SlaveSetCompare(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t CompareUnit, uint32_t Compare).
      • Update HRTIM_DLLCalibrationStart() function.
      • Update HRTIM_DMACmd(), HRTIM_GetITStatus(), HRTIM_GetFlagStatus(), HRTIM_ClearITPendingBit(), HRTIM_ClearFlag() and HRTIM_ITConfig() functions to properly manage master and slave HRTIMERS.

    V1.1.0 /27-February-2014

    + + +

    Main +Changes

    + + + + + + + + + + + +
    • Add support of the STM32F302x8 and STM32F334x8 devices.
    • Add High Resolution Timer(HRTIM) peripheral driver.
    • stm32f30x_adc.c
      • Update ADC_TempSensorCmd() and ADC_VbatCmd() functions to be inline with the devices specification.
      • Update ADC_DMAConfig() function description.
    • stm32f30x_dac.c/.h: update overall driver to add the support of the DAC2.
    • stm32f30x_gpio.c: 
      • Update +GPIO_Init() function to avoid unexpected transition in the GPIO +pin configuration when writing to the PUPDR register.
    • stm32f30x_rcc.c/.h: update for STM32F302x8 and STM32F334x8 devices
      • Add new function RCC_MCOConfig(uint8_t RCC_MCOSource, uint32_t RCC_MCOPrescaler).
      • Update RCC_GetClocksFreq() funtion to :
        • properly return the ADC clock frequency,
        • workarround USART1 clock limitation for the STM32F302x8 and STM32F334x8 devices,
        • support TIM15, 16, 17, HRTIM and I2C3 peripherals.
      • Update RCC_I2CCLKConfig() function to support I2C3 peripheral.
      • Update RCC_TIMCLKConfig() function to support TIM15, 16, and 17 peripherals.
      • Add RCC_HRTIM1CLKConfig() function.
    • stm32f30x_syscfg.c/.h
      • Update SYSCFG_DMAChannelRemapConfig() function to support new DMA channels remap.
      • Update SYSCFG_TriggerRemapConfig() funciton to support the new remap of DAC trigger to HRTIM.
    • stm32f30x_tim.c:
      • Update TIM_SelectOCxM() function to properly manage the output compare modes.

    V1.0.1 / 23-October-2012

    + + +

    Main +Changes

    + + + +
    • + + + +

      stm32f30x_adc.c/h

      • Remove +the following functions, the configuration will be done under ADC_Init function :

        • ADC_InjectedSequencerLengthConfig; +

        • ADC_InjectedChannelConfig;

        • ADC_ExternalTriggerInjectedPolarityConfig;

        • ADC_SelectExternalTriggerInjected

      • Update + comment of uint8_t ADC_TwoSamplingDelay parameter in +ADC_CommonInitTypeDef structure definition.

      • Add +a function to configure the sampling time for injected channels : void +ADC_InjectedChannelSampleTimeConfig (ADC_TypeDef* ADCx, uint8_t +ADC_InjectedChannel, uint8_t ADC_SampleTime);

    + + + + + + + + + + + + + + + + + +

    +

    • stm32f30x_rtc.c

      • Update +comments : remove all reference to RTC_AF1, reformulate +the PC13 RTC_AF table to be in line with the description in Reference manual (RM00316)

    • + + + +

       stm32f30x_tim.c +

      • Update local variables declaration (must be uint32_t) to correct Tasking toochain warnings.  

    • stm32f30x_gpio.h +
      • Update GPIOSpeed_TypeDef parameters structure to be in line with description in Reference manual and add GPIO speed legacy defines.

    • Remove all references to other products (STM32F37x, STM32F0xx,...) in the comments.

    V1.0.0 / 04-September-2012

    + + +

    Main +Changes

    + + + +
    • First official release for STM32F30x and STM32F31x devices
    +
      + +

      License

      Licensed +under MCD-ST Liberty SW License Agreement V2, (the "License"); You may not use +this package +except in compliance with the License. You may obtain a copy of the License +at:

      +
      Unless +required by applicable law or agreed to in writing, software distributed under +the License is distributed on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR +CONDITIONS OF ANY KIND, either express or implied. See the License for the +specific language governing permissions and limitations under the +License.

      +
      +
      +

      For +complete documentation on STM32 Microcontrollers visit www.st.com/STM32

      +
      +

      +
      +
      +

       

      +
      \ No newline at end of file diff --git a/lib/main/STM32_USB-FS-Device_Driver/Release_Notes.html b/lib/main/STM32_USB-FS-Device_Driver/Release_Notes.html index 1072e449b6..cfaab7d127 100644 --- a/lib/main/STM32_USB-FS-Device_Driver/Release_Notes.html +++ b/lib/main/STM32_USB-FS-Device_Driver/Release_Notes.html @@ -1,871 +1,871 @@ - - - - - Release Notes for STM32F10x, STM32L1xx and STM32F3xx USB-FS-Device Driver - - - - - - - - -
      -

      - -   - - -

      -
      - - - - - - -
      - - - - - - - - - -
      -

      - - Back to Release page - - - - - -

      -

      - Release Notes for -

      -

      -  STM32F10x, STM32L1xx and STM32F3xx USB-FS-Device Driver - - - - -

      -

      - Copyright 2012 STMicroelectronics - - - - - - - -

      -

      - - - - - - - -

      -

      - -   - - -

      - - - - - - -
      -

      - Contents - - -

      -
        -
      1. - - Update History - - -
      2. -
      3. - - License - - -
      4. -
      -

      - Update History


      -

      V4.0.0 / 28-August-2012

      - - -

      Main -Changes

      - - - -
        -
      • Remove support of the USB OTG Full speed in device (peripheral) mode embedded in the STM32F105x/7x devices
      • -
          -
        • All source files starting with prefix otgd_fs (ex. otgd_fs_pcd.c/.h) were removed
        • -
        • There is no change on the API dealing with the USB FS Device  peripheral, full compatibility is maintained vs. V3.4.0
          -
        • -
        • The  STM32F105x/7x devices are supported by the STM32F105/7xx, STM32F2xx and STM32F4xx USB On-The-Go Host and Device Library
          -
        • -
        -
      • usb_type.h: remove Types definition (available in stm32xxx.h file, ex. stm32f10x.h)
        -
      • -
      -

      V3.4.0 / 12-March-2012

      -

      Main -Changes

      - -
      • All source files: license disclaimer text update and add link to the License file on ST Internet.
      -

      - V3.3.0 / 21-March-2011 -

      -

      - - Main Changes - - - -

      -
        -
      • - Update library driver to support - - - STM32L15x Medium-Density Low-Power - - - devices (add STM32L1xx defines). -
      • -
      • - Minor fixes: -
      • -
          -
        • - otgd_fs_cal.c: correction of iteration number in OTGD_FS_CoreInitDev() function. -
        • -
        -
          -
        • - usb_core.c: update the remote wakeup checking condition in NoData_Setup0() function. -
        • -
        -
          -
        • - otgd_fs_int.c: update the data count in case of 0 packet length in OTGD_FS_Handle_RxStatusQueueLevel_ISR() function. -
        • -
        -
      - - - - - -

      - - License - - -

      Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); You may not use this package except in compliance with the License. You may obtain a copy of the License at:


      Unless -required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS,
      WITHOUT -WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See -the License for the specific language governing permissions and -limitations under the License.
      -

      -
      -
      -

      - For - complete documentation on STM32 - Microcontrollers visit www.st.com/STM32 - - - -

      -

      - - - - -

      -
      -

      -   - -

      -
      + + + + + Release Notes for STM32F10x, STM32L1xx and STM32F3xx USB-FS-Device Driver + + + + + + + + +
      +

      + +   + + +

      +
      + + + + + + +
      + + + + + + + + + +
      +

      + + Back to Release page + + + + + +

      +

      + Release Notes for +

      +

      +  STM32F10x, STM32L1xx and STM32F3xx USB-FS-Device Driver + + + + +

      +

      + Copyright 2012 STMicroelectronics + + + + + + + +

      +

      + + + + + + + +

      +

      + +   + + +

      + + + + + + +
      +

      + Contents + + +

      +
        +
      1. + + Update History + + +
      2. +
      3. + + License + + +
      4. +
      +

      + Update History


      +

      V4.0.0 / 28-August-2012

      + + +

      Main +Changes

      + + + +
        +
      • Remove support of the USB OTG Full speed in device (peripheral) mode embedded in the STM32F105x/7x devices
      • +
          +
        • All source files starting with prefix otgd_fs (ex. otgd_fs_pcd.c/.h) were removed
        • +
        • There is no change on the API dealing with the USB FS Device  peripheral, full compatibility is maintained vs. V3.4.0
          +
        • +
        • The  STM32F105x/7x devices are supported by the STM32F105/7xx, STM32F2xx and STM32F4xx USB On-The-Go Host and Device Library
          +
        • +
        +
      • usb_type.h: remove Types definition (available in stm32xxx.h file, ex. stm32f10x.h)
        +
      • +
      +

      V3.4.0 / 12-March-2012

      +

      Main +Changes

      + +
      • All source files: license disclaimer text update and add link to the License file on ST Internet.
      +

      + V3.3.0 / 21-March-2011 +

      +

      + + Main Changes + + + +

      +
        +
      • + Update library driver to support + + + STM32L15x Medium-Density Low-Power + + + devices (add STM32L1xx defines). +
      • +
      • + Minor fixes: +
      • +
          +
        • + otgd_fs_cal.c: correction of iteration number in OTGD_FS_CoreInitDev() function. +
        • +
        +
          +
        • + usb_core.c: update the remote wakeup checking condition in NoData_Setup0() function. +
        • +
        +
          +
        • + otgd_fs_int.c: update the data count in case of 0 packet length in OTGD_FS_Handle_RxStatusQueueLevel_ISR() function. +
        • +
        +
      + + + + + +

      + + License + + +

      Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); You may not use this package except in compliance with the License. You may obtain a copy of the License at:


      Unless +required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS,
      WITHOUT +WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See +the License for the specific language governing permissions and +limitations under the License.
      +

      +
      +
      +

      + For + complete documentation on STM32 + Microcontrollers visit www.st.com/STM32 + + + +

      +

      + + + + +

      +
      +

      +   + +

      +
      \ No newline at end of file diff --git a/src/main/config/config.c b/src/main/config/config.c index 04919bcbb0..64eb254ee5 100644 --- a/src/main/config/config.c +++ b/src/main/config/config.c @@ -352,6 +352,7 @@ static void resetConf(void) masterConfig.retarded_arm = 0; masterConfig.disarm_kill_switch = 1; + masterConfig.auto_disarm_delay = 5; masterConfig.small_angle = 25; masterConfig.airplaneConfig.flaps_speed = 0; @@ -449,6 +450,71 @@ static void resetConf(void) masterConfig.blackbox_rate_denom = 1; #endif + // alternative defaults AlienWii32 (activate via OPTIONS="ALIENWII32" during make for NAZE target) +#ifdef ALIENWII32 + featureSet(FEATURE_RX_SERIAL); + featureSet(FEATURE_MOTOR_STOP); + featureSet(FEATURE_FAILSAFE); + masterConfig.serialConfig.serial_port_scenario[1] = lookupScenarioIndex(SCENARIO_SERIAL_RX_ONLY); + masterConfig.rxConfig.serialrx_provider = 1; + masterConfig.rxConfig.spektrum_sat_bind = 5; + masterConfig.escAndServoConfig.minthrottle = 1000; + masterConfig.escAndServoConfig.maxthrottle = 2000; + masterConfig.motor_pwm_rate = 32000; + currentControlRateProfile->rcRate8 = 130; + currentControlRateProfile->rollPitchRate = 20; + currentControlRateProfile->yawRate = 60; + parseRcChannels("TAER1234", &masterConfig.rxConfig); + + // { 1.0f, -0.5f, 1.0f, -1.0f }, // REAR_R + masterConfig.customMixer[0].throttle = 1.0f; + masterConfig.customMixer[0].roll = -0.5f; + masterConfig.customMixer[0].pitch = 1.0f; + masterConfig.customMixer[0].yaw = -1.0f; + + // { 1.0f, -0.5f, -1.0f, 1.0f }, // FRONT_R + masterConfig.customMixer[1].throttle = 1.0f; + masterConfig.customMixer[1].roll = -0.5f; + masterConfig.customMixer[1].pitch = -1.0f; + masterConfig.customMixer[1].yaw = 1.0f; + + // { 1.0f, 0.5f, 1.0f, 1.0f }, // REAR_L + masterConfig.customMixer[2].throttle = 1.0f; + masterConfig.customMixer[2].roll = 0.5f; + masterConfig.customMixer[2].pitch = 1.0f; + masterConfig.customMixer[2].yaw = 1.0f; + + // { 1.0f, 0.5f, -1.0f, -1.0f }, // FRONT_L + masterConfig.customMixer[3].throttle = 1.0f; + masterConfig.customMixer[3].roll = 0.5f; + masterConfig.customMixer[3].pitch = -1.0f; + masterConfig.customMixer[3].yaw = -1.0f; + + // { 1.0f, -1.0f, -0.5f, -1.0f }, // MIDFRONT_R + masterConfig.customMixer[4].throttle = 1.0f; + masterConfig.customMixer[4].roll = -1.0f; + masterConfig.customMixer[4].pitch = -0.5f; + masterConfig.customMixer[4].yaw = -1.0f; + + // { 1.0f, 1.0f, -0.5f, 1.0f }, // MIDFRONT_L + masterConfig.customMixer[5].throttle = 1.0f; + masterConfig.customMixer[5].roll = 1.0f; + masterConfig.customMixer[5].pitch = -0.5f; + masterConfig.customMixer[5].yaw = 1.0f; + + // { 1.0f, -1.0f, 0.5f, 1.0f }, // MIDREAR_R + masterConfig.customMixer[6].throttle = 1.0f; + masterConfig.customMixer[6].roll = -1.0f; + masterConfig.customMixer[6].pitch = 0.5f; + masterConfig.customMixer[6].yaw = 1.0f; + + // { 1.0f, 1.0f, 0.5f, -1.0f }, // MIDREAR_L + masterConfig.customMixer[7].throttle = 1.0f; + masterConfig.customMixer[7].roll = 1.0f; + masterConfig.customMixer[7].pitch = 0.5f; + masterConfig.customMixer[7].yaw = -1.0f; +#endif + // copy first profile into remaining profile for (i = 1; i < MAX_PROFILE_COUNT; i++) { memcpy(&masterConfig.profile[i], currentProfile, sizeof(profile_t)); diff --git a/src/main/config/config_master.h b/src/main/config/config_master.h index 9a486552d9..bacb7b5a7b 100644 --- a/src/main/config/config_master.h +++ b/src/main/config/config_master.h @@ -63,6 +63,7 @@ typedef struct master_t { uint8_t retarded_arm; // allow disarm/arm on throttle down + roll left/right uint8_t disarm_kill_switch; // allow disarm via AUX switch regardless of throttle value + uint8_t auto_disarm_delay; // allow automatically disarming multicopters after auto_disarm_delay seconds of zero throttle. Disabled when 0 uint8_t small_angle; airplaneConfig_t airplaneConfig; diff --git a/src/main/drivers/accgyro_mpu6050.c b/src/main/drivers/accgyro_mpu6050.c index 785f8e0be5..e5044afc25 100644 --- a/src/main/drivers/accgyro_mpu6050.c +++ b/src/main/drivers/accgyro_mpu6050.c @@ -328,14 +328,15 @@ static void mpu6050GyroInit(void) delay(100); i2cWrite(MPU6050_ADDRESS, MPU_RA_SMPLRT_DIV, 0x00); //SMPLRT_DIV -- SMPLRT_DIV = 0 Sample Rate = Gyroscope Output Rate / (1 + SMPLRT_DIV) i2cWrite(MPU6050_ADDRESS, MPU_RA_PWR_MGMT_1, 0x03); //PWR_MGMT_1 -- SLEEP 0; CYCLE 0; TEMP_DIS 0; CLKSEL 3 (PLL with Z Gyro reference) - i2cWrite(MPU6050_ADDRESS, MPU_RA_INT_PIN_CFG, - 0 << 7 | 0 << 6 | 0 << 5 | 0 << 4 | 0 << 3 | 0 << 2 | 1 << 1 | 0 << 0); // INT_PIN_CFG -- INT_LEVEL_HIGH, INT_OPEN_DIS, LATCH_INT_DIS, INT_RD_CLEAR_DIS, FSYNC_INT_LEVEL_HIGH, FSYNC_INT_DIS, I2C_BYPASS_EN, CLOCK_DIS i2cWrite(MPU6050_ADDRESS, MPU_RA_CONFIG, mpuLowPassFilter); //CONFIG -- EXT_SYNC_SET 0 (disable input pin for data sync) ; default DLPF_CFG = 0 => ACC bandwidth = 260Hz GYRO bandwidth = 256Hz) i2cWrite(MPU6050_ADDRESS, MPU_RA_GYRO_CONFIG, INV_FSR_2000DPS << 3); //GYRO_CONFIG -- FS_SEL = 3: Full scale set to 2000 deg/sec // ACC Init stuff. Moved into gyro init because the reset above would screw up accel config. Oops. // Accel scale 8g (4096 LSB/g) i2cWrite(MPU6050_ADDRESS, MPU_RA_ACCEL_CONFIG, INV_FSR_8G << 3); + + i2cWrite(MPU6050_ADDRESS, MPU_RA_INT_PIN_CFG, + 0 << 7 | 0 << 6 | 0 << 5 | 0 << 4 | 0 << 3 | 0 << 2 | 1 << 1 | 0 << 0); // INT_PIN_CFG -- INT_LEVEL_HIGH, INT_OPEN_DIS, LATCH_INT_DIS, INT_RD_CLEAR_DIS, FSYNC_INT_LEVEL_HIGH, FSYNC_INT_DIS, I2C_BYPASS_EN, CLOCK_DIS } static void mpu6050GyroRead(int16_t *gyroData) diff --git a/src/main/drivers/bus_i2c_stm32f30x.c b/src/main/drivers/bus_i2c_stm32f30x.c index 9bba2ffb60..80141ac636 100644 --- a/src/main/drivers/bus_i2c_stm32f30x.c +++ b/src/main/drivers/bus_i2c_stm32f30x.c @@ -281,10 +281,6 @@ bool i2cRead(uint8_t addr_, uint8_t reg, uint8_t len, uint8_t* buf) } } - if (len > 1) { - reg |= 0x80; - } - /* Send Register address */ I2C_SendData(I2Cx, (uint8_t) reg); diff --git a/src/main/drivers/compass_ak8975.c b/src/main/drivers/compass_ak8975.c index 0812daaf19..c0aeca9305 100644 --- a/src/main/drivers/compass_ak8975.c +++ b/src/main/drivers/compass_ak8975.c @@ -74,16 +74,30 @@ bool ak8975detect(mag_t *mag) return true; } +#define AK8975A_ASAX 0x10 // Fuse ROM x-axis sensitivity adjustment value +#define AK8975A_ASAY 0x11 // Fuse ROM y-axis sensitivity adjustment value +#define AK8975A_ASAZ 0x12 // Fuse ROM z-axis sensitivity adjustment value + void ak8975Init() { bool ack; + uint8_t buffer[3]; + uint8_t status; + UNUSED(ack); - - ack = i2cWrite(AK8975_MAG_I2C_ADDRESS, AK8975_MAG_REG_CNTL, 0x00); + ack = i2cWrite(AK8975_MAG_I2C_ADDRESS, AK8975_MAG_REG_CNTL, 0x00); // power down before entering fuse mode delay(20); - uint8_t status; + ack = i2cWrite(AK8975_MAG_I2C_ADDRESS, AK8975_MAG_REG_CNTL, 0x0F); // Enter Fuse ROM access mode + delay(10); + + ack = i2cRead(AK8975_MAG_I2C_ADDRESS, AK8975A_ASAX, 3, &buffer[0]); // Read the x-, y-, and z-axis calibration values + delay(10); + + ack = i2cWrite(AK8975_MAG_I2C_ADDRESS, AK8975_MAG_REG_CNTL, 0x00); // power down after reading. + delay(10); + // Clear status registers ack = i2cRead(AK8975_MAG_I2C_ADDRESS, AK8975_MAG_REG_STATUS1, 1, &status); ack = i2cRead(AK8975_MAG_I2C_ADDRESS, AK8975_MAG_REG_STATUS2, 1, &status); @@ -109,7 +123,16 @@ void ak8975Read(int16_t *magData) return; } +#if 1 // USE_I2C_SINGLE_BYTE_READS ack = i2cRead(AK8975_MAG_I2C_ADDRESS, AK8975_MAG_REG_HXL, 6, buf); // read from AK8975_MAG_REG_HXL to AK8975_MAG_REG_HZH +#else + for (uint8_t i = 0; i < 6; i++) { + ack = i2cRead(AK8975_MAG_I2C_ADDRESS, AK8975_MAG_REG_HXL + i, 1, &buf[i]); // read from AK8975_MAG_REG_HXL to AK8975_MAG_REG_HZH + if (!ack) { + break; + } + } +#endif ack = i2cRead(AK8975_MAG_I2C_ADDRESS, AK8975_MAG_REG_STATUS2, 1, &status); if (!ack) { @@ -124,12 +147,8 @@ void ak8975Read(int16_t *magData) return; } - // align sensors to match MPU6050: - // x -> y - // y -> x - // z-> -z - magData[X] = -(int16_t)(buf[3] << 8 | buf[2]) * 4; - magData[Y] = -(int16_t)(buf[1] << 8 | buf[0]) * 4; + magData[X] = -(int16_t)(buf[1] << 8 | buf[0]) * 4; + magData[Y] = -(int16_t)(buf[3] << 8 | buf[2]) * 4; magData[Z] = -(int16_t)(buf[5] << 8 | buf[4]) * 4; diff --git a/src/main/drivers/pwm_mapping.c b/src/main/drivers/pwm_mapping.c index 5ca1c8cf76..85bbe09dbf 100644 --- a/src/main/drivers/pwm_mapping.c +++ b/src/main/drivers/pwm_mapping.c @@ -297,7 +297,7 @@ pwmOutputConfiguration_t *pwmInit(drv_pwm_config_t *init) // this is pretty hacky shit, but it will do for now. array of 4 config maps, [ multiPWM multiPPM airPWM airPPM ] if (init->airplane) i = 2; // switch to air hardware config - if (init->usePPM) + if (init->usePPM || init->useSerialRx) i++; // next index is for PPM setup = hardwareMaps[i]; diff --git a/src/main/drivers/pwm_mapping.h b/src/main/drivers/pwm_mapping.h index c0c6d751d2..b11ac21b47 100644 --- a/src/main/drivers/pwm_mapping.h +++ b/src/main/drivers/pwm_mapping.h @@ -39,6 +39,7 @@ typedef struct drv_pwm_config_t { bool useParallelPWM; bool usePPM; + bool useSerialRx; bool useRSSIADC; bool useCurrentMeterADC; #ifdef STM32F10X diff --git a/src/main/drivers/serial_uart.c b/src/main/drivers/serial_uart.c index 663c9ff455..7a6e83b1f0 100644 --- a/src/main/drivers/serial_uart.c +++ b/src/main/drivers/serial_uart.c @@ -39,6 +39,31 @@ uartPort_t *serialUSART1(uint32_t baudRate, portMode_t mode); uartPort_t *serialUSART2(uint32_t baudRate, portMode_t mode); uartPort_t *serialUSART3(uint32_t baudRate, portMode_t mode); +static void usartConfigurePinInversion(uartPort_t *uartPort) { +#ifdef INVERTER + if (uartPort->port.inversion == SERIAL_INVERTED && uartPort->USARTx == INVERTER_USART) { + // Enable hardware inverter if available. + INVERTER_ON; + } +#endif + +#ifdef STM32F303xC + uint32_t inversionPins = 0; + + if (uartPort->port.mode & MODE_TX) { + inversionPins |= USART_InvPin_Tx; + } + if (uartPort->port.mode & MODE_RX) { + inversionPins |= USART_InvPin_Rx; + } + + // Note: inversion when using MODE_BIDIR not supported yet. + + USART_InvPinCmd(uartPort->USARTx, inversionPins, uartPort->port.inversion == SERIAL_INVERTED ? ENABLE : DISABLE); +#endif + +} + static void uartReconfigure(uartPort_t *uartPort) { USART_InitTypeDef USART_InitStructure; @@ -63,22 +88,16 @@ static void uartReconfigure(uartPort_t *uartPort) USART_InitStructure.USART_Mode |= USART_Mode_Tx | USART_Mode_Rx; USART_Init(uartPort->USARTx, &USART_InitStructure); + + usartConfigurePinInversion(uartPort); + USART_Cmd(uartPort->USARTx, ENABLE); } serialPort_t *uartOpen(USART_TypeDef *USARTx, serialReceiveCallbackPtr callback, uint32_t baudRate, portMode_t mode, serialInversion_e inversion) { - UNUSED(inversion); - uartPort_t *s = NULL; -#ifdef INVERTER - if (inversion == SERIAL_INVERTED && USARTx == INVERTER_USART) { - // Enable hardware inverter if available. - INVERTER_ON; - } -#endif - if (USARTx == USART1) { s = serialUSART1(baudRate, mode); #ifdef USE_USART2 @@ -101,12 +120,7 @@ serialPort_t *uartOpen(USART_TypeDef *USARTx, serialReceiveCallbackPtr callback, s->port.callback = callback; s->port.mode = mode; s->port.baudRate = baudRate; - -#if 1 // FIXME use inversion on STM32F3 - s->port.inversion = SERIAL_NOT_INVERTED; -#else s->port.inversion = inversion; -#endif uartReconfigure(s); diff --git a/src/main/io/rc_controls.c b/src/main/io/rc_controls.c index 7247a8a22d..66db651275 100644 --- a/src/main/io/rc_controls.c +++ b/src/main/io/rc_controls.c @@ -57,6 +57,11 @@ int16_t rcCommand[4]; // interval [1000;2000] for THROTTLE and [-500;+ uint32_t rcModeActivationMask; // one bit per mode defined in boxId_e +bool isUsingSticksForArming(void) +{ + return isUsingSticksToArm; +} + bool areSticksInApModePosition(uint16_t ap_mode) { return abs(rcCommand[ROLL]) < ap_mode && abs(rcCommand[PITCH]) < ap_mode; @@ -519,6 +524,8 @@ void useRcControlsConfig(modeActivationCondition_t *modeActivationConditions, es escAndServoConfig = escAndServoConfigToUse; pidProfile = pidProfileToUse; + isUsingSticksToArm = true; + for (index = 0; index < MAX_MODE_ACTIVATION_CONDITION_COUNT; index++) { modeActivationCondition_t *modeActivationCondition = &modeActivationConditions[index]; if (modeActivationCondition->modeId == BOXARM && IS_RANGE_USABLE(&modeActivationCondition->range)) { diff --git a/src/main/io/rc_controls.h b/src/main/io/rc_controls.h index 051e252141..745acd4682 100644 --- a/src/main/io/rc_controls.h +++ b/src/main/io/rc_controls.h @@ -213,3 +213,4 @@ void configureAdjustment(uint8_t index, uint8_t auxChannelIndex, const adjustmen void updateAdjustmentStates(adjustmentRange_t *adjustmentRanges); void processRcAdjustments(controlRateConfig_t *controlRateConfig, rxConfig_t *rxConfig); +bool isUsingSticksForArming(void); diff --git a/src/main/io/serial_cli.c b/src/main/io/serial_cli.c index dd5c243409..663ad4174b 100644 --- a/src/main/io/serial_cli.c +++ b/src/main/io/serial_cli.c @@ -237,6 +237,7 @@ const clivalue_t valueTable[] = { { "retarded_arm", VAR_UINT8 | MASTER_VALUE, &masterConfig.retarded_arm, 0, 1 }, { "disarm_kill_switch", VAR_UINT8 | MASTER_VALUE, &masterConfig.disarm_kill_switch, 0, 1 }, + { "auto_disarm_delay", VAR_UINT8 | MASTER_VALUE, &masterConfig.auto_disarm_delay, 0, 60 }, { "small_angle", VAR_UINT8 | MASTER_VALUE, &masterConfig.small_angle, 0, 180 }, { "flaps_speed", VAR_UINT8 | MASTER_VALUE, &masterConfig.airplaneConfig.flaps_speed, 0, 100 }, diff --git a/src/main/io/serial_msp.c b/src/main/io/serial_msp.c index 27268a7795..ca74d0c086 100644 --- a/src/main/io/serial_msp.c +++ b/src/main/io/serial_msp.c @@ -80,6 +80,8 @@ extern uint16_t cycleTime; // FIXME dependency on mw.c extern uint16_t rssi; // FIXME dependency on mw.c extern int16_t debug[4]; // FIXME dependency on mw.c +void useRcControlsConfig(modeActivationCondition_t *modeActivationConditions, escAndServoConfig_t *escAndServoConfigToUse, pidProfile_t *pidProfileToUse); + /** * MSP Guidelines, emphasis is used to clarify. * @@ -760,7 +762,7 @@ static bool processOutCommand(uint8_t cmdMSP) break; case MSP_RAW_IMU: headSerialReply(18); - // Retarded hack until multiwiidorks start using real units for sensor data + // Hack due to choice of units for sensor data in multiwii if (acc_1G > 1024) { for (i = 0; i < 3; i++) serialize16(accSmooth[i] / 8); @@ -982,7 +984,7 @@ static bool processOutCommand(uint8_t cmdMSP) serialize8(GPS_svinfo_svid[i]); serialize8(GPS_svinfo_quality[i]); serialize8(GPS_svinfo_cno[i]); - } + } break; #endif case MSP_DEBUG: @@ -1172,6 +1174,8 @@ static bool processInCommand(void) mac->auxChannelIndex = read8(); mac->range.startStep = read8(); mac->range.endStep = read8(); + + useRcControlsConfig(currentProfile->modeActivationConditions, &masterConfig.escAndServoConfig, ¤tProfile->pidProfile); } else { headSerialError(0); } @@ -1469,6 +1473,7 @@ static void mspProcessPort(void) tailSerialReply(); } currentPort->c_state = IDLE; + break; // process one command so as not to block. } } } diff --git a/src/main/main.c b/src/main/main.c index e88b1b24ba..a34a715205 100644 --- a/src/main/main.c +++ b/src/main/main.c @@ -291,6 +291,7 @@ void init(void) pwm_params.useLEDStrip = feature(FEATURE_LED_STRIP); pwm_params.usePPM = feature(FEATURE_RX_PPM); pwm_params.useOneshot = feature(FEATURE_ONESHOT125); + pwm_params.useSerialRx = feature(FEATURE_RX_SERIAL); pwm_params.useServos = isMixerUsingServos(); pwm_params.extraServos = currentProfile->gimbalConfig.gimbal_flags & GIMBAL_FORWARDAUX; pwm_params.motorPwmRate = masterConfig.motor_pwm_rate; diff --git a/src/main/mw.c b/src/main/mw.c index ba4dcd3618..a8e6b6d72b 100644 --- a/src/main/mw.c +++ b/src/main/mw.c @@ -92,6 +92,7 @@ uint16_t cycleTime = 0; // this is the number in micro second to achieve int16_t headFreeModeHold; int16_t telemTemperature1; // gyro sensor temperature +static uint32_t disarmAt; // Time of automatic disarm when "Don't spin the motors when armed" is enabled and auto_disarm_delay is nonzero extern uint8_t dynP8[3], dynI8[3], dynD8[3]; extern failsafe_t *failsafe; @@ -346,6 +347,8 @@ void mwArm(void) startBlackbox(); } #endif + disarmAt = millis() + masterConfig.auto_disarm_delay * 1000; // start disarm timeout, will be extended when throttle is nonzero + return; } } @@ -513,6 +516,21 @@ void processRx(void) resetErrorAngle(); resetErrorGyro(); } + // When armed and motors aren't spinning, disarm board after delay so users without buzzer won't lose fingers. + // mixTable constrains motor commands, so checking throttleStatus is enough + if ( + ARMING_FLAG(ARMED) + && feature(FEATURE_MOTOR_STOP) && !STATE(FIXED_WING) + && masterConfig.auto_disarm_delay != 0 + && isUsingSticksForArming() + ) { + if (throttleStatus == THROTTLE_LOW) { + if ((int32_t)(disarmAt - millis()) < 0) // delay is over + mwDisarm(); + } else { + disarmAt = millis() + masterConfig.auto_disarm_delay * 1000; // extend delay + } + } processRcStickPositions(&masterConfig.rxConfig, throttleStatus, masterConfig.retarded_arm, masterConfig.disarm_kill_switch); diff --git a/src/main/sensors/initialisation.c b/src/main/sensors/initialisation.c index 3eaf74d49f..d13711ec66 100644 --- a/src/main/sensors/initialisation.c +++ b/src/main/sensors/initialisation.c @@ -137,8 +137,8 @@ bool detectGyro(uint16_t gyroLpf) #ifdef USE_GYRO_MPU6050 if (mpu6050GyroDetect(selectMPU6050Config(), &gyro, gyroLpf)) { -#ifdef NAZE - gyroAlign = CW0_DEG; +#ifdef GYRO_MPU6050_ALIGN + gyroAlign = GYRO_MPU6050_ALIGN; #endif return true; } @@ -146,8 +146,8 @@ bool detectGyro(uint16_t gyroLpf) #ifdef USE_GYRO_L3G4200D if (l3g4200dDetect(&gyro, gyroLpf)) { -#ifdef NAZE - gyroAlign = CW0_DEG; +#ifdef GYRO_L3G4200D_ALIGN + gyroAlign = GYRO_L3G4200D_ALIGN; #endif return true; } @@ -155,8 +155,8 @@ bool detectGyro(uint16_t gyroLpf) #ifdef USE_GYRO_MPU3050 if (mpu3050Detect(&gyro, gyroLpf)) { -#ifdef NAZE - gyroAlign = CW0_DEG; +#ifdef GYRO_MPU3050_ALIGN + gyroAlign = GYRO_MPU3050_ALIGN; #endif return true; } @@ -164,14 +164,17 @@ bool detectGyro(uint16_t gyroLpf) #ifdef USE_GYRO_L3GD20 if (l3gd20Detect(&gyro, gyroLpf)) { +#ifdef GYRO_GYRO_L3GD20_ALIGN + gyroAlign = GYRO_GYRO_L3GD20_ALIGN; +#endif return true; } #endif #ifdef USE_GYRO_SPI_MPU6000 if (mpu6000SpiGyroDetect(&gyro, gyroLpf)) { -#ifdef CC3D - gyroAlign = CW270_DEG; +#ifdef GYRO_SPI_MPU6000_ALIGN + gyroAlign = GYRO_SPI_MPU6000_ALIGN; #endif return true; } @@ -180,12 +183,16 @@ bool detectGyro(uint16_t gyroLpf) #ifdef USE_GYRO_SPI_MPU6500 #ifdef NAZE if (hardwareRevision == NAZE32_SP && mpu6500SpiGyroDetect(&gyro, gyroLpf)) { - gyroAlign = CW0_DEG; +#ifdef GYRO_SPI_MPU6500_ALIGN + gyroAlign = GYRO_SPI_MPU6500_ALIGN; +#endif return true; } #else if (mpu6500SpiGyroDetect(&gyro, gyroLpf)) { - gyroAlign = CW0_DEG; +#ifdef GYRO_SPI_MPU6500_ALIGN + gyroAlign = GYRO_SPI_MPU6500_ALIGN; +#endif return true; } #endif @@ -227,24 +234,37 @@ retry: acc_params.dataRate = 800; // unused currently #ifdef NAZE if (hardwareRevision < NAZE32_REV5 && adxl345Detect(&acc_params, &acc)) { - accAlign = CW270_DEG; #else if (adxl345Detect(&acc_params, &acc)) { #endif - accHardware = ACC_ADXL345; +#ifdef ACC_ADXL345_ALIGN + accAlign = ACC_ADXL345_ALIGN; +#endif accHardware = ACC_ADXL345; if (accHardwareToUse == ACC_ADXL345) break; } ; // fallthrough #endif +#ifdef USE_ACC_LSM303DLHC + case ACC_LSM303DLHC: + if (lsm303dlhcAccDetect(&acc)) { +#ifdef ACC_LSM303DLHC_ALIGN + accAlign = ACC_LSM303DLHC_ALIGN; +#endif + accHardware = ACC_LSM303DLHC; + if (accHardwareToUse == ACC_LSM303DLHC) + break; + } + ; // fallthrough +#endif #ifdef USE_ACC_MPU6050 case ACC_MPU6050: // MPU6050 if (mpu6050AccDetect(selectMPU6050Config(), &acc)) { - accHardware = ACC_MPU6050; -#ifdef NAZE - accAlign = CW0_DEG; +#ifdef ACC_MPU6050_ALIGN + accAlign = ACC_MPU6050_ALIGN; #endif + accHardware = ACC_MPU6050; if (accHardwareToUse == ACC_MPU6050) break; } @@ -255,9 +275,11 @@ retry: #ifdef NAZE // Not supported with this frequency if (hardwareRevision < NAZE32_REV5 && mma8452Detect(&acc)) { - accAlign = CW90_DEG; #else if (mma8452Detect(&acc)) { +#endif +#ifdef ACC_MMA8452_ALIGN + accAlign = ACC_MMA8452_ALIGN; #endif accHardware = ACC_MMA8452; if (accHardwareToUse == ACC_MMA8452) @@ -268,31 +290,22 @@ retry: #ifdef USE_ACC_BMA280 case ACC_BMA280: // BMA280 if (bma280Detect(&acc)) { +#ifdef ACC_BMA280_ALIGN + accAlign = ACC_BMA280_ALIGN; +#endif accHardware = ACC_BMA280; -#ifdef NAZE - accAlign = CW0_DEG; -#endif if (accHardwareToUse == ACC_BMA280) break; } ; // fallthrough #endif -#ifdef USE_ACC_LSM303DLHC - case ACC_LSM303DLHC: - if (lsm303dlhcAccDetect(&acc)) { - accHardware = ACC_LSM303DLHC; - if (accHardwareToUse == ACC_LSM303DLHC) - break; - } - ; // fallthrough -#endif #ifdef USE_ACC_SPI_MPU6000 case ACC_SPI_MPU6000: if (mpu6000SpiAccDetect(&acc)) { - accHardware = ACC_SPI_MPU6000; -#ifdef CC3D - accAlign = CW270_DEG; +#ifdef ACC_SPI_MPU6000_ALIGN + accAlign = ACC_SPI_MPU6000_ALIGN; #endif + accHardware = ACC_SPI_MPU6000; if (accHardwareToUse == ACC_SPI_MPU6000) break; } @@ -305,10 +318,10 @@ retry: #else if (mpu6500SpiAccDetect(&acc)) { #endif - accHardware = ACC_SPI_MPU6500; -#ifdef NAZE - accAlign = CW0_DEG; +#ifdef ACC_SPI_MPU6500_ALIGN + accAlign = ACC_SPI_MPU6500_ALIGN; #endif + accHardware = ACC_SPI_MPU6500; if (accHardwareToUse == ACC_SPI_MPU6500) break; } @@ -408,8 +421,8 @@ retry: #ifdef USE_MAG_HMC5883 case MAG_HMC5883: if (hmc5883lDetect(&mag, hmc5883Config)) { -#ifdef NAZE - magAlign = CW180_DEG; +#ifdef MAG_HMC5883_ALIGN + magAlign = MAG_HMC5883_ALIGN; #endif magHardware = MAG_HMC5883; if (magHardwareToUse == MAG_HMC5883) @@ -422,6 +435,10 @@ retry: #ifdef USE_MAG_AK8975 case MAG_AK8975: if (ak8975detect(&mag)) { + +#ifdef MAG_AK8975_ALIGN + magAlign = MAG_AK8975_ALIGN; +#endif magHardware = MAG_AK8975; if (magHardwareToUse == MAG_AK8975) break; diff --git a/src/main/target/CC3D/target.h b/src/main/target/CC3D/target.h index e8607dd059..44acf46300 100644 --- a/src/main/target/CC3D/target.h +++ b/src/main/target/CC3D/target.h @@ -35,11 +35,15 @@ #define MPU6000_CS_PIN GPIO_Pin_4 #define MPU6000_SPI_INSTANCE SPI1 +#define GYRO +#define USE_GYRO_SPI_MPU6000 + +#define GYRO_SPI_MPU6000_ALIGN CW270_DEG + #define ACC #define USE_ACC_SPI_MPU6000 -#define GYRO -#define USE_GYRO_SPI_MPU6000 +#define ACC_SPI_MPU6000_ALIGN CW270_DEG #define INVERTER #define BEEPER diff --git a/src/main/target/CHEBUZZF3/target.h b/src/main/target/CHEBUZZF3/target.h index 2b7cdd34f6..3a28e955c9 100644 --- a/src/main/target/CHEBUZZF3/target.h +++ b/src/main/target/CHEBUZZF3/target.h @@ -37,16 +37,22 @@ #define USE_GYRO_L3GD20 #define USE_GYRO_MPU6050 +#define GYRO_MPU6050_ALIGN CW0_DEG + #define ACC #define USE_ACC_MPU6050 #define USE_ACC_LSM303DLHC +#define ACC_MPU6050_ALIGN CW0_DEG + #define BARO #define USE_BARO_MS5611 #define MAG #define USE_MAG_AK8975 +#define MAG_AK8975_ALIGN CW90_DEG_FLIP + #define BEEPER #define LED0 #define LED1 diff --git a/src/main/target/EUSTM32F103RC/target.h b/src/main/target/EUSTM32F103RC/target.h index bb2245d37b..682f5c8189 100644 --- a/src/main/target/EUSTM32F103RC/target.h +++ b/src/main/target/EUSTM32F103RC/target.h @@ -39,16 +39,6 @@ #define MPU6500_CS_PIN GPIO_Pin_12 #define MPU6500_SPI_INSTANCE SPI2 -#define ACC -#define USE_FAKE_ACC -#define USE_ACC_ADXL345 -#define USE_ACC_BMA280 -#define USE_ACC_MMA8452 -#define USE_ACC_MPU3050 -#define USE_ACC_MPU6050 -//#define USE_ACC_SPI_MPU6000 -#define USE_ACC_SPI_MPU6500 - #define GYRO #define USE_FAKE_GYRO #define USE_GYRO_L3G4200D @@ -58,6 +48,19 @@ #define USE_GYRO_SPI_MPU6000 #define USE_GYRO_SPI_MPU6500 +#define GYRO_MPU6050_ALIGN CW0_DEG + +#define ACC +#define USE_FAKE_ACC +#define USE_ACC_ADXL345 +#define USE_ACC_BMA280 +#define USE_ACC_MMA8452 +#define USE_ACC_MPU6050 +//#define USE_ACC_SPI_MPU6000 +#define USE_ACC_SPI_MPU6500 + +#define ACC_MPU6050_ALIGN CW0_DEG + #define BARO #define USE_BARO_MS5611 #define USE_BARO_BMP085 @@ -66,6 +69,8 @@ #define USE_MAG_HMC5883 #define USE_MAG_AK8975 +#define MAG_AK8975_ALIGN CW180_DEG_FLIP + #define SONAR #define LED0 diff --git a/src/main/target/NAZE/target.h b/src/main/target/NAZE/target.h index 37ae8553ef..88359f29d3 100644 --- a/src/main/target/NAZE/target.h +++ b/src/main/target/NAZE/target.h @@ -63,11 +63,22 @@ #define USE_GYRO_MPU3050 #define USE_GYRO_MPU6050 +#define GYRO_MPU3050_ALIGN CW0_DEG +#define GYRO_MPU6050_ALIGN CW0_DEG +#define GYRO_SPI_MPU6500_ALIGN CW0_DEG + #define ACC #define USE_ACC_ADXL345 #define USE_ACC_BMA280 #define USE_ACC_MMA8452 #define USE_ACC_MPU6050 +//#define ACC_SPI_MPU6500 + +#define ACC_ADXL345_ALIGN CW270_DEG +#define ACC_MPU6050_ALIGN CW0_DEG +#define ACC_MMA8452_ALIGN CW90_DEG +#define ACC_BMA280_ALIGN CW0_DEG +//#define ACC_SPI_MPU6500_ALIGN CW0_DEG #define BARO #define USE_BARO_MS5611 @@ -76,6 +87,8 @@ #define MAG #define USE_MAG_HMC5883 +#define MAG_HMC5883_ALIGN CW180_DEG + #define SONAR #define BEEPER #define LED0 @@ -120,3 +133,12 @@ // USART2, PA3 #define BIND_PORT GPIOA #define BIND_PIN Pin_3 + +// alternative defaults AlienWii32 (activate via OPTIONS="ALIENWII32" during make for NAZE target) +#ifdef ALIENWII32 +#define BRUSHED_MOTORS +#define HARDWARE_BIND_PLUG +// Hardware bind plug at PB5 (Pin 41) +#define BINDPLUG_PORT GPIOB +#define BINDPLUG_PIN Pin_5 +#endif diff --git a/src/main/target/OLIMEXINO/target.h b/src/main/target/OLIMEXINO/target.h index f74fe1c946..935ff691c5 100644 --- a/src/main/target/OLIMEXINO/target.h +++ b/src/main/target/OLIMEXINO/target.h @@ -37,18 +37,6 @@ #define LED1 #endif - -#define ACC -#define USE_FAKE_ACC -//#define USE_ACC_ADXL345 -//#define USE_ACC_BMA280 -//#define USE_ACC_MMA8452 -//#define USE_ACC_LSM303DLHC -//#define USE_ACC_MPU3050 -#define USE_ACC_MPU6050 -//#define USE_ACC_SPI_MPU6000 -//#define USE_ACC_SPI_MPU6500 - #define GYRO #define USE_FAKE_GYRO //#define USE_GYRO_L3G4200D @@ -58,6 +46,16 @@ //#define USE_GYRO_SPI_MPU6000 //#define USE_GYRO_SPI_MPU6500 +#define ACC +#define USE_FAKE_ACC +//#define USE_ACC_ADXL345 +//#define USE_ACC_BMA280 +//#define USE_ACC_MMA8452 +//#define USE_ACC_LSM303DLHC +#define USE_ACC_MPU6050 +//#define USE_ACC_SPI_MPU6000 +//#define USE_ACC_SPI_MPU6500 + #define BARO //#define USE_BARO_MS5611 #define USE_BARO_BMP085 diff --git a/src/main/target/PORT103R/target.h b/src/main/target/PORT103R/target.h index b8a96ef34d..6af8a46a3d 100644 --- a/src/main/target/PORT103R/target.h +++ b/src/main/target/PORT103R/target.h @@ -46,16 +46,6 @@ #define MPU6500_CS_PIN GPIO_Pin_12 #define MPU6500_SPI_INSTANCE SPI2 -#define ACC -#define USE_FAKE_ACC -//#define USE_ACC_ADXL345 -//#define USE_ACC_BMA280 -//#define USE_ACC_MMA8452 -//#define USE_ACC_MPU3050 -#define USE_ACC_MPU6050 -//#define USE_ACC_SPI_MPU6000 -//#define USE_ACC_SPI_MPU6500 - #define GYRO #define USE_FAKE_GYRO //#define USE_GYRO_L3G4200D @@ -65,6 +55,15 @@ //#define USE_GYRO_SPI_MPU6000 //#define USE_GYRO_SPI_MPU6500 +#define ACC +#define USE_FAKE_ACC +//#define USE_ACC_ADXL345 +//#define USE_ACC_BMA280 +//#define USE_ACC_MMA8452 +#define USE_ACC_MPU6050 +//#define USE_ACC_SPI_MPU6000 +//#define USE_ACC_SPI_MPU6500 + #define BARO #define USE_BARO_MS5611 //#define USE_BARO_BMP085 diff --git a/src/main/target/SPARKY/target.h b/src/main/target/SPARKY/target.h index 6eba579074..7df62339de 100644 --- a/src/main/target/SPARKY/target.h +++ b/src/main/target/SPARKY/target.h @@ -30,15 +30,21 @@ #define GYRO #define USE_GYRO_MPU6050 +#define GYRO_MPU6050_ALIGN CW270_DEG + #define ACC #define USE_ACC_MPU6050 +#define ACC_MPU6050_ALIGN CW270_DEG + //#define BARO //#define USE_BARO_MS5611 #define MAG #define USE_MAG_AK8975 +#define MAG_AK8975_ALIGN CW0_DEG_FLIP + #define LED0 #define LED1