mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-15 12:25:20 +03:00
ed
This commit is contained in:
parent
239120ba4e
commit
01f079c254
2 changed files with 574 additions and 569 deletions
147
src/board.h
147
src/board.h
|
@ -40,42 +40,42 @@
|
||||||
#define U_ID_2 (*(uint32_t*)0x1FFFF7F0)
|
#define U_ID_2 (*(uint32_t*)0x1FFFF7F0)
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
SENSOR_GYRO = 1 << 0, // always present
|
SENSOR_GYRO = 1 << 0, // always present
|
||||||
SENSOR_ACC = 1 << 1,
|
SENSOR_ACC = 1 << 1,
|
||||||
SENSOR_BARO = 1 << 2,
|
SENSOR_BARO = 1 << 2,
|
||||||
SENSOR_MAG = 1 << 3,
|
SENSOR_MAG = 1 << 3,
|
||||||
SENSOR_SONAR = 1 << 4,
|
SENSOR_SONAR = 1 << 4,
|
||||||
SENSOR_GPS = 1 << 5,
|
SENSOR_GPS = 1 << 5,
|
||||||
SENSOR_GPSMAG = 1 << 6,
|
SENSOR_GPSMAG = 1 << 6,
|
||||||
} AvailableSensors;
|
} AvailableSensors;
|
||||||
|
|
||||||
// Type of accelerometer used/detected
|
// Type of accelerometer used/detected
|
||||||
typedef enum AccelSensors {
|
typedef enum AccelSensors {
|
||||||
ACC_DEFAULT = 0,
|
ACC_DEFAULT = 0,
|
||||||
ACC_ADXL345 = 1,
|
ACC_ADXL345 = 1,
|
||||||
ACC_MPU6050 = 2,
|
ACC_MPU6050 = 2,
|
||||||
ACC_MMA8452 = 3,
|
ACC_MMA8452 = 3,
|
||||||
ACC_BMA280 = 4,
|
ACC_BMA280 = 4,
|
||||||
ACC_NONE = 5
|
ACC_NONE = 5
|
||||||
} AccelSensors;
|
} AccelSensors;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
FEATURE_PPM = 1 << 0,
|
FEATURE_PPM = 1 << 0,
|
||||||
FEATURE_VBAT = 1 << 1,
|
FEATURE_VBAT = 1 << 1,
|
||||||
FEATURE_INFLIGHT_ACC_CAL = 1 << 2,
|
FEATURE_INFLIGHT_ACC_CAL = 1 << 2,
|
||||||
FEATURE_SERIALRX = 1 << 3,
|
FEATURE_SERIALRX = 1 << 3,
|
||||||
FEATURE_MOTOR_STOP = 1 << 4,
|
FEATURE_MOTOR_STOP = 1 << 4,
|
||||||
FEATURE_SERVO_TILT = 1 << 5,
|
FEATURE_SERVO_TILT = 1 << 5,
|
||||||
FEATURE_GYRO_SMOOTHING = 1 << 6,
|
FEATURE_GYRO_SMOOTHING = 1 << 6,
|
||||||
FEATURE_LED_RING = 1 << 7,
|
FEATURE_LED_RING = 1 << 7,
|
||||||
FEATURE_GPS = 1 << 8,
|
FEATURE_GPS = 1 << 8,
|
||||||
FEATURE_FAILSAFE = 1 << 9,
|
FEATURE_FAILSAFE = 1 << 9,
|
||||||
FEATURE_SONAR = 1 << 10,
|
FEATURE_SONAR = 1 << 10,
|
||||||
FEATURE_TELEMETRY = 1 << 11,
|
FEATURE_TELEMETRY = 1 << 11,
|
||||||
FEATURE_POWERMETER = 1 << 12,
|
FEATURE_POWERMETER = 1 << 12,
|
||||||
FEATURE_VARIO = 1 << 13,
|
FEATURE_VARIO = 1 << 13,
|
||||||
FEATURE_3D = 1 << 14,
|
FEATURE_3D = 1 << 14,
|
||||||
FEATURE_SOFTSERIAL = 1 << 15,
|
FEATURE_SOFTSERIAL = 1 << 15,
|
||||||
} AvailableFeatures;
|
} AvailableFeatures;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
@ -104,60 +104,63 @@ typedef enum {
|
||||||
} sensor_axis_e;
|
} sensor_axis_e;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
ALIGN_DEFAULT = 0, // driver-provided alignment
|
ALIGN_DEFAULT = 0, // driver-provided alignment
|
||||||
CW0_DEG = 1,
|
CW0_DEG = 1,
|
||||||
CW90_DEG = 2,
|
CW90_DEG = 2,
|
||||||
CW180_DEG = 3,
|
CW180_DEG = 3,
|
||||||
CW270_DEG = 4,
|
CW270_DEG = 4,
|
||||||
CW0_DEG_FLIP = 5,
|
CW0_DEG_FLIP = 5,
|
||||||
CW90_DEG_FLIP = 6,
|
CW90_DEG_FLIP = 6,
|
||||||
CW180_DEG_FLIP = 7,
|
CW180_DEG_FLIP = 7,
|
||||||
CW270_DEG_FLIP = 8
|
CW270_DEG_FLIP = 8
|
||||||
} sensor_align_e;
|
} sensor_align_e;
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
GYRO_UPDATED = 1 << 0,
|
GYRO_UPDATED = 1 << 0,
|
||||||
ACC_UPDATED = 1 << 1,
|
ACC_UPDATED = 1 << 1,
|
||||||
MAG_UPDATED = 1 << 2,
|
MAG_UPDATED = 1 << 2,
|
||||||
TEMP_UPDATED = 1 << 3
|
TEMP_UPDATED = 1 << 3
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct sensor_data_t {
|
typedef struct sensor_data_t
|
||||||
int16_t gyro[3];
|
{
|
||||||
int16_t acc[3];
|
int16_t gyro[3];
|
||||||
int16_t mag[3];
|
int16_t acc[3];
|
||||||
float temperature;
|
int16_t mag[3];
|
||||||
int updated;
|
float temperature;
|
||||||
|
int updated;
|
||||||
} sensor_data_t;
|
} sensor_data_t;
|
||||||
|
|
||||||
typedef void (*sensorInitFuncPtr)(sensor_align_e align); // sensor init prototype
|
typedef void (* sensorInitFuncPtr)(sensor_align_e align); // sensor init prototype
|
||||||
typedef void (*sensorReadFuncPtr)(int16_t *data); // sensor read and align prototype
|
typedef void (* sensorReadFuncPtr)(int16_t *data); // sensor read and align prototype
|
||||||
typedef void (*baroOpFuncPtr)(void); // baro start operation
|
typedef void (* baroOpFuncPtr)(void); // baro start operation
|
||||||
typedef void (*baroCalculateFuncPtr)(int32_t *pressure, int32_t *temperature); // baro calculation (filled params are pressure and temperature)
|
typedef void (* baroCalculateFuncPtr)(int32_t *pressure, int32_t *temperature); // baro calculation (filled params are pressure and temperature)
|
||||||
typedef void (*serialReceiveCallbackPtr)(uint16_t data); // used by serial drivers to return frames to app
|
typedef void (* serialReceiveCallbackPtr)(uint16_t data); // used by serial drivers to return frames to app
|
||||||
typedef uint16_t (*rcReadRawDataPtr)(uint8_t chan); // used by receiver driver to return channel data
|
typedef uint16_t (* rcReadRawDataPtr)(uint8_t chan); // used by receiver driver to return channel data
|
||||||
typedef void (*pidControllerFuncPtr)(void); // pid controller function prototype
|
typedef void (* pidControllerFuncPtr)(void); // pid controller function prototype
|
||||||
|
|
||||||
typedef struct sensor_t {
|
typedef struct sensor_t
|
||||||
sensorInitFuncPtr init; // initialize function
|
{
|
||||||
sensorReadFuncPtr read; // read 3 axis data function
|
sensorInitFuncPtr init; // initialize function
|
||||||
sensorReadFuncPtr temperature; // read temperature if available
|
sensorReadFuncPtr read; // read 3 axis data function
|
||||||
float scale; // scalefactor (currently used for gyro only, todo for accel)
|
sensorReadFuncPtr temperature; // read temperature if available
|
||||||
|
float scale; // scalefactor (currently used for gyro only, todo for accel)
|
||||||
} sensor_t;
|
} sensor_t;
|
||||||
|
|
||||||
typedef struct baro_t {
|
typedef struct baro_t
|
||||||
uint16_t ut_delay;
|
{
|
||||||
uint16_t up_delay;
|
uint16_t ut_delay;
|
||||||
baroOpFuncPtr start_ut;
|
uint16_t up_delay;
|
||||||
baroOpFuncPtr get_ut;
|
baroOpFuncPtr start_ut;
|
||||||
baroOpFuncPtr start_up;
|
baroOpFuncPtr get_ut;
|
||||||
baroOpFuncPtr get_up;
|
baroOpFuncPtr start_up;
|
||||||
baroCalculateFuncPtr calculate;
|
baroOpFuncPtr get_up;
|
||||||
|
baroCalculateFuncPtr calculate;
|
||||||
} baro_t;
|
} baro_t;
|
||||||
|
|
||||||
// Hardware definitions and GPIO
|
// Hardware definitions and GPIO
|
||||||
#ifdef FY90Q
|
#ifdef FY90Q
|
||||||
// FY90Q
|
// FY90Q
|
||||||
#define LED0_GPIO GPIOC
|
#define LED0_GPIO GPIOC
|
||||||
#define LED0_PIN Pin_12
|
#define LED0_PIN Pin_12
|
||||||
#define LED1_GPIO GPIOA
|
#define LED1_GPIO GPIOA
|
||||||
|
@ -178,6 +181,7 @@ typedef struct baro_t {
|
||||||
#define LED0_PIN Pin_1 // D3, PA1/USART2_RTS/ADC1/TIM2_CH3 - "LED2" on silkscreen, Yellow
|
#define LED0_PIN Pin_1 // D3, PA1/USART2_RTS/ADC1/TIM2_CH3 - "LED2" on silkscreen, Yellow
|
||||||
#define LED1_GPIO GPIOA
|
#define LED1_GPIO GPIOA
|
||||||
#define LED1_PIN Pin_5 // D13, PA5/SPI1_SCK/ADC5 - "LED1" on silkscreen, Green
|
#define LED1_PIN Pin_5 // D13, PA5/SPI1_SCK/ADC5 - "LED1" on silkscreen, Green
|
||||||
|
|
||||||
#define GYRO
|
#define GYRO
|
||||||
#define ACC
|
#define ACC
|
||||||
|
|
||||||
|
@ -227,10 +231,11 @@ typedef struct baro_t {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#undef SOFT_I2C // enable to test software i2c
|
#undef SOFT_I2C // enable to test software i2c
|
||||||
|
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
|
||||||
#ifdef FY90Q
|
#ifdef FY90Q
|
||||||
// FY90Q
|
// FY90Q
|
||||||
#include "drv_adc.h"
|
#include "drv_adc.h"
|
||||||
#include "drv_i2c.h"
|
#include "drv_i2c.h"
|
||||||
#include "drv_pwm.h"
|
#include "drv_pwm.h"
|
||||||
|
@ -253,7 +258,7 @@ typedef struct baro_t {
|
||||||
#include "drv_softserial.h"
|
#include "drv_softserial.h"
|
||||||
#else
|
#else
|
||||||
|
|
||||||
// AfroFlight32
|
// AfroFlight32
|
||||||
#include "drv_adc.h"
|
#include "drv_adc.h"
|
||||||
#include "drv_adxl345.h"
|
#include "drv_adxl345.h"
|
||||||
#include "drv_bma280.h"
|
#include "drv_bma280.h"
|
||||||
|
|
24
src/mixer.c
24
src/mixer.c
|
@ -43,12 +43,12 @@ static const motorMixer_t mixerY6[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const motorMixer_t mixerHex6P[] = {
|
static const motorMixer_t mixerHex6P[] = {
|
||||||
{ 1.0f, -0.866025f, 0.5f, 1.0f }, // REAR_R
|
{ 1.0f, -1.0f, 0.866025f, 1.0f }, // REAR_R
|
||||||
{ 1.0f, -0.866025f, -0.5f, -1.0f }, // FRONT_R
|
{ 1.0f, -1.0f, -0.866025f, -1.0f }, // FRONT_R
|
||||||
{ 1.0f, 0.866025f, 0.5f, 1.0f }, // REAR_L
|
{ 1.0f, 1.0f, 0.866025f, 1.0f }, // REAR_L
|
||||||
{ 1.0f, 0.866025f, -0.5f, -1.0f }, // FRONT_L
|
{ 1.0f, 1.0f, -0.866025f, -1.0f }, // FRONT_L
|
||||||
{ 1.0f, 0.0f, -1.0f, 1.0f }, // FRONT
|
{ 1.0f, 0.0f, -0.866025f, 1.0f }, // FRONT
|
||||||
{ 1.0f, 0.0f, 1.0f, -1.0f }, // REAR
|
{ 1.0f, 0.0f, 0.866025f, -1.0f }, // REAR
|
||||||
};
|
};
|
||||||
|
|
||||||
static const motorMixer_t mixerY4[] = {
|
static const motorMixer_t mixerY4[] = {
|
||||||
|
@ -59,12 +59,12 @@ static const motorMixer_t mixerY4[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const motorMixer_t mixerHex6X[] = {
|
static const motorMixer_t mixerHex6X[] = {
|
||||||
{ 1.0f, -0.5f, 0.866025f, 1.0f }, // REAR_R
|
{ 1.0f, -0.866025f, 1.0f, 1.0f }, // REAR_R
|
||||||
{ 1.0f, -0.5f, -0.866025f, 1.0f }, // FRONT_R
|
{ 1.0f, -0.866025f, -1.0f, 1.0f }, // FRONT_R
|
||||||
{ 1.0f, 0.5f, 0.866025f, -1.0f }, // REAR_L
|
{ 1.0f, 0.866025f, 1.0f, -1.0f }, // REAR_L
|
||||||
{ 1.0f, 0.5f, -0.866025f, -1.0f }, // FRONT_L
|
{ 1.0f, 0.866025f, -1.0f, -1.0f }, // FRONT_L
|
||||||
{ 1.0f, -1.0f, 0.0f, -1.0f }, // RIGHT
|
{ 1.0f, -0.866025f, 0.0f, -1.0f }, // RIGHT
|
||||||
{ 1.0f, 1.0f, 0.0f, 1.0f }, // LEFT
|
{ 1.0f, 0.866025f, 0.0f, 1.0f }, // LEFT
|
||||||
};
|
};
|
||||||
|
|
||||||
static const motorMixer_t mixerOctoX8[] = {
|
static const motorMixer_t mixerOctoX8[] = {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue