1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-23 08:15:30 +03:00

AlienFlight fixes

This commit is contained in:
Michael Jakob 2016-02-12 18:36:39 +01:00
parent 05f5dab607
commit 513db25bd5
5 changed files with 112 additions and 99 deletions

View file

@ -583,6 +583,7 @@ static void resetConf(void)
#ifdef ALIENFLIGHT #ifdef ALIENFLIGHT
featureSet(FEATURE_RX_SERIAL); featureSet(FEATURE_RX_SERIAL);
featureSet(FEATURE_MOTOR_STOP); featureSet(FEATURE_MOTOR_STOP);
featureClear(FEATURE_ONESHOT125);
#ifdef ALIENFLIGHTF3 #ifdef ALIENFLIGHTF3
masterConfig.serialConfig.portConfigs[2].functionMask = FUNCTION_RX_SERIAL; masterConfig.serialConfig.portConfigs[2].functionMask = FUNCTION_RX_SERIAL;
masterConfig.batteryConfig.vbatscale = 20; masterConfig.batteryConfig.vbatscale = 20;
@ -595,6 +596,14 @@ static void resetConf(void)
masterConfig.escAndServoConfig.minthrottle = 1000; masterConfig.escAndServoConfig.minthrottle = 1000;
masterConfig.escAndServoConfig.maxthrottle = 2000; masterConfig.escAndServoConfig.maxthrottle = 2000;
masterConfig.motor_pwm_rate = 32000; masterConfig.motor_pwm_rate = 32000;
currentProfile->pidProfile.pidController = 2;
masterConfig.failsafeConfig.failsafe_delay = 2;
masterConfig.failsafeConfig.failsafe_off_delay = 0;
masterConfig.mixerConfig.yaw_jump_prevention_limit = 500;
currentControlRateProfile->rcRate8 = 100;
currentControlRateProfile->rates[FD_PITCH] = 20;
currentControlRateProfile->rates[FD_ROLL] = 20;
currentControlRateProfile->rates[FD_YAW] = 20;
parseRcChannels("TAER1234", &masterConfig.rxConfig); parseRcChannels("TAER1234", &masterConfig.rxConfig);
// { 1.0f, -0.414178f, 1.0f, -1.0f }, // REAR_R // { 1.0f, -0.414178f, 1.0f, -1.0f }, // REAR_R

View file

@ -17,15 +17,20 @@
#pragma once #pragma once
struct {
GPIO_TypeDef *gpio;
uint16_t pin;
} led_config[3];
// Helpful macros // Helpful macros
#ifdef LED0 #ifdef LED0
#define LED0_TOGGLE digitalToggle(LED0_GPIO, LED0_PIN) #define LED0_TOGGLE digitalToggle(led_config[0].gpio, led_config[0].pin)
#ifndef LED0_INVERTED #ifndef LED0_INVERTED
#define LED0_OFF digitalHi(LED0_GPIO, LED0_PIN) #define LED0_OFF digitalHi(led_config[0].gpio, led_config[0].pin)
#define LED0_ON digitalLo(LED0_GPIO, LED0_PIN) #define LED0_ON digitalLo(led_config[0].gpio, led_config[0].pin)
#else #else
#define LED0_OFF digitalLo(LED0_GPIO, LED0_PIN) #define LED0_OFF digitalLo(led_config[0].gpio, led_config[0].pin)
#define LED0_ON digitalHi(LED0_GPIO, LED0_PIN) #define LED0_ON digitalHi(led_config[0].gpio, led_config[0].pin)
#endif // inverted #endif // inverted
#else #else
#define LED0_TOGGLE do {} while(0) #define LED0_TOGGLE do {} while(0)
@ -34,13 +39,13 @@
#endif #endif
#ifdef LED1 #ifdef LED1
#define LED1_TOGGLE digitalToggle(LED1_GPIO, LED1_PIN) #define LED1_TOGGLE digitalToggle(led_config[1].gpio, led_config[1].pin)
#ifndef LED1_INVERTED #ifndef LED1_INVERTED
#define LED1_OFF digitalHi(LED1_GPIO, LED1_PIN) #define LED1_OFF digitalHi(led_config[1].gpio, led_config[1].pin)
#define LED1_ON digitalLo(LED1_GPIO, LED1_PIN) #define LED1_ON digitalLo(led_config[1].gpio, led_config[1].pin)
#else #else
#define LED1_OFF digitalLo(LED1_GPIO, LED1_PIN) #define LED1_OFF digitalLo(led_config[1].gpio, led_config[1].pin)
#define LED1_ON digitalHi(LED1_GPIO, LED1_PIN) #define LED1_ON digitalHi(led_config[1].gpio, led_config[1].pin)
#endif // inverted #endif // inverted
#else #else
#define LED1_TOGGLE do {} while(0) #define LED1_TOGGLE do {} while(0)
@ -50,13 +55,13 @@
#ifdef LED2 #ifdef LED2
#define LED2_TOGGLE digitalToggle(LED2_GPIO, LED2_PIN) #define LED2_TOGGLE digitalToggle(led_config[2].gpio, led_config[2].pin)
#ifndef LED2_INVERTED #ifndef LED2_INVERTED
#define LED2_OFF digitalHi(LED2_GPIO, LED2_PIN) #define LED2_OFF digitalHi(led_config[2].gpio, led_config[2].pin)
#define LED2_ON digitalLo(LED2_GPIO, LED2_PIN) #define LED2_ON digitalLo(led_config[2].gpio, led_config[2].pin)
#else #else
#define LED2_OFF digitalLo(LED2_GPIO, LED2_PIN) #define LED2_OFF digitalLo(led_config[2].gpio, led_config[2].pin)
#define LED2_ON digitalHi(LED2_GPIO, LED2_PIN) #define LED2_ON digitalHi(led_config[2].gpio, led_config[2].pin)
#endif // inverted #endif // inverted
#else #else
#define LED2_TOGGLE do {} while(0) #define LED2_TOGGLE do {} while(0)
@ -64,4 +69,4 @@
#define LED2_ON do {} while(0) #define LED2_ON do {} while(0)
#endif #endif
void ledInit(void); void ledInit(bool alternative_led);

View file

@ -28,56 +28,37 @@
#include "light_led.h" #include "light_led.h"
void ledInit(bool alternative_led)
void ledInit(void)
{ {
UNUSED(alternative_led);
#if defined(LED0) || defined(LED1) || defined(LED2) #if defined(LED0) || defined(LED1) || defined(LED2)
uint32_t i;
struct {
GPIO_TypeDef *gpio;
gpio_config_t cfg; gpio_config_t cfg;
} gpio_setup[] = { cfg.mode = Mode_Out_PP;
#ifdef LED0 cfg.speed = Speed_2MHz;
{
.gpio = LED0_GPIO,
.cfg = { LED0_PIN, Mode_Out_PP, Speed_2MHz }
},
#endif
#ifdef LED1
{
.gpio = LED1_GPIO,
.cfg = { LED1_PIN, Mode_Out_PP, Speed_2MHz }
},
#endif
#ifdef LED2
{
.gpio = LED2_GPIO,
.cfg = { LED2_PIN, Mode_Out_PP, Speed_2MHz }
}
#endif
};
uint8_t gpio_count = ARRAYLEN(gpio_setup);
#ifdef LED0 #ifdef LED0
RCC_APB2PeriphClockCmd(LED0_PERIPHERAL, ENABLE); RCC_APB2PeriphClockCmd(LED0_PERIPHERAL, ENABLE);
led_config[0].gpio = LED0_GPIO;
led_config[0].pin = LED0_PIN;
cfg.pin = led_config[0].pin;
LED0_OFF;
gpioInit(led_config[0].gpio, &cfg);
#endif #endif
#ifdef LED1 #ifdef LED1
RCC_APB2PeriphClockCmd(LED1_PERIPHERAL, ENABLE); RCC_APB2PeriphClockCmd(LED1_PERIPHERAL, ENABLE);
led_config[1].gpio = LED1_GPIO;
led_config[1].pin = LED1_PIN;
cfg.pin = led_config[1].pin;
LED1_OFF;
gpioInit(led_config[1].gpio, &cfg);
#endif #endif
#ifdef LED2 #ifdef LED2
RCC_APB2PeriphClockCmd(LED2_PERIPHERAL, ENABLE); RCC_APB2PeriphClockCmd(LED2_PERIPHERAL, ENABLE);
#endif led_config[2].gpio = LED2_GPIO;
led_config[2].pin = LED2_PIN;
LED0_OFF; cfg.pin = led_config[2].pin;
LED1_OFF;
LED2_OFF; LED2_OFF;
gpioInit(led_config[2].gpio, &cfg);
for (i = 0; i < gpio_count; i++) { #endif
gpioInit(gpio_setup[i].gpio, &gpio_setup[i].cfg);
}
#endif #endif
} }

View file

@ -27,52 +27,62 @@
#include "light_led.h" #include "light_led.h"
void ledInit(void) void ledInit(bool alternative_led)
{ {
uint32_t i; #if defined(LED0) || defined(LED1) || defined(LED2)
struct {
GPIO_TypeDef *gpio;
gpio_config_t cfg; gpio_config_t cfg;
} gpio_setup[] = { cfg.mode = Mode_Out_PP;
cfg.speed = Speed_2MHz;
#ifdef LED0 #ifdef LED0
{ if (alternative_led) {
.gpio = LED0_GPIO, #ifdef LED0_PERIPHERAL_2
.cfg = { LED0_PIN, Mode_Out_PP, Speed_2MHz } RCC_AHBPeriphClockCmd(LED0_PERIPHERAL_2, ENABLE);
}, led_config[0].gpio = LED0_GPIO_2;
led_config[0].pin = LED0_PIN_2;
#endif #endif
#ifdef LED1 } else {
{
.gpio = LED1_GPIO,
.cfg = { LED1_PIN, Mode_Out_PP, Speed_2MHz }
},
#endif
#ifdef LED2
{
.gpio = LED2_GPIO,
.cfg = { LED2_PIN, Mode_Out_PP, Speed_2MHz }
}
#endif
};
uint8_t gpio_count = ARRAYLEN(gpio_setup);
#ifdef LED0
RCC_AHBPeriphClockCmd(LED0_PERIPHERAL, ENABLE); RCC_AHBPeriphClockCmd(LED0_PERIPHERAL, ENABLE);
led_config[0].gpio = LED0_GPIO;
led_config[0].pin = LED0_PIN;
}
cfg.pin = led_config[0].pin;
LED0_OFF;
gpioInit(led_config[0].gpio, &cfg);
#endif #endif
#ifdef LED1 #ifdef LED1
if (alternative_led) {
#ifdef LED1_PERIPHERAL_2
RCC_AHBPeriphClockCmd(LED1_PERIPHERAL_2, ENABLE);
led_config[1].gpio = LED1_GPIO_2;
led_config[1].pin = LED1_PIN_2;
#endif
} else {
RCC_AHBPeriphClockCmd(LED1_PERIPHERAL, ENABLE); RCC_AHBPeriphClockCmd(LED1_PERIPHERAL, ENABLE);
led_config[1].gpio = LED1_GPIO;
led_config[1].pin = LED1_PIN;
}
cfg.pin = led_config[1].pin;
LED1_OFF;
gpioInit(led_config[1].gpio, &cfg);
#endif #endif
#ifdef LED2 #ifdef LED2
RCC_AHBPeriphClockCmd(LED2_PERIPHERAL, ENABLE); if (alternative_led) {
#ifdef LED2_PERIPHERAL_2
RCC_AHBPeriphClockCmd(LED2_PERIPHERAL_2, ENABLE);
led_config[2].gpio = LED2_GPIO_2;
led_config[2].pin = LED2_PIN_2;
#endif #endif
} else {
LED0_OFF; RCC_AHBPeriphClockCmd(LED2_PERIPHERAL, ENABLE);
LED1_OFF; led_config[2].gpio = LED2_GPIO;
LED2_OFF; led_config[2].pin = LED2_PIN;
for (i = 0; i < gpio_count; i++) {
gpioInit(gpio_setup[i].gpio, &gpio_setup[i].cfg);
} }
cfg.pin = led_config[2].pin;
LED2_OFF;
gpioInit(led_config[2].gpio, &cfg);
#endif
#else
UNUSED(alternative_led);
#endif
} }

View file

@ -189,7 +189,15 @@ void init(void)
// Latch active features to be used for feature() in the remainder of init(). // Latch active features to be used for feature() in the remainder of init().
latchActiveFeatures(); latchActiveFeatures();
ledInit(); #ifdef ALIENFLIGHTF3
if (hardwareRevision == AFF3_REV_1) {
ledInit(false);
} else {
ledInit(true);
}
#else
ledInit(false);
#endif
#ifdef SPRACINGF3MINI #ifdef SPRACINGF3MINI
gpio_config_t buttonAGpioConfig = { gpio_config_t buttonAGpioConfig = {