1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-13 11:29:58 +03:00

fixed buzzer on rev5 boards;

added experimental gyro-based headfree boxes

git-svn-id: https://afrodevices.googlecode.com/svn/trunk/baseflight@429 7c89a4a9-59b9-e629-4cfe-3a2d53b20e61
This commit is contained in:
timecop@gmail.com 2013-10-04 14:36:34 +00:00
parent 800ce6bdf7
commit 3bb1063001
6 changed files with 3142 additions and 3096 deletions

File diff suppressed because it is too large Load diff

View file

@ -213,8 +213,8 @@ typedef struct baro_t
#ifdef BEEP_GPIO #ifdef BEEP_GPIO
#define BEEP_TOGGLE digitalToggle(BEEP_GPIO, BEEP_PIN); #define BEEP_TOGGLE digitalToggle(BEEP_GPIO, BEEP_PIN);
#define BEEP_OFF digitalHi(BEEP_GPIO, BEEP_PIN); #define BEEP_OFF systemBeep(false);
#define BEEP_ON digitalLo(BEEP_GPIO, BEEP_PIN); #define BEEP_ON systemBeep(true);
#else #else
#define BEEP_TOGGLE ; #define BEEP_TOGGLE ;
#define BEEP_OFF ; #define BEEP_OFF ;

View file

@ -6,6 +6,10 @@ static volatile uint32_t usTicks = 0;
static volatile uint32_t sysTickUptime = 0; static volatile uint32_t sysTickUptime = 0;
// from system_stm32f10x.c // from system_stm32f10x.c
void SetSysClock(void); void SetSysClock(void);
void systemBeep(bool onoff);
static void beepRev4(bool onoff);
static void beepRev5(bool onoff);
void (* systemBeepPtr)(bool onoff) = NULL;
static void cycleCounterInit(void) static void cycleCounterInit(void)
{ {
@ -84,6 +88,12 @@ void systemInit(void)
AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_NO_JTAG_SW; AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_NO_JTAG_SW;
// Configure gpio // Configure gpio
// rev5 needs inverted beeper. oops.
if (hse_value == 12000000)
systemBeepPtr = beepRev5;
else
systemBeepPtr = beepRev4;
LED0_OFF; LED0_OFF;
LED1_OFF; LED1_OFF;
BEEP_OFF; BEEP_OFF;
@ -178,6 +188,29 @@ void systemReset(bool toBootloader)
SCB->AIRCR = AIRCR_VECTKEY_MASK | (uint32_t)0x04; SCB->AIRCR = AIRCR_VECTKEY_MASK | (uint32_t)0x04;
} }
static void beepRev4(bool onoff)
{
if (onoff) {
digitalLo(BEEP_GPIO, BEEP_PIN);
} else {
digitalHi(BEEP_GPIO, BEEP_PIN);
}
}
static void beepRev5(bool onoff)
{
if (onoff) {
digitalHi(BEEP_GPIO, BEEP_PIN);
} else {
digitalLo(BEEP_GPIO, BEEP_PIN);
}
}
void systemBeep(bool onoff)
{
systemBeepPtr(onoff);
}
void alignSensors(int16_t *src, int16_t *dest, uint8_t rotation) void alignSensors(int16_t *src, int16_t *dest, uint8_t rotation)
{ {
switch (rotation) { switch (rotation) {

View file

@ -687,7 +687,7 @@ void loop(void)
#endif #endif
#ifdef MAG #ifdef MAG
if (sensors(SENSOR_MAG)) { if (sensors(SENSOR_ACC) || sensors(SENSOR_MAG)) {
if (rcOptions[BOXMAG]) { if (rcOptions[BOXMAG]) {
if (!f.MAG_MODE) { if (!f.MAG_MODE) {
f.MAG_MODE = 1; f.MAG_MODE = 1;

View file

@ -461,6 +461,7 @@ bool sbusFrameComplete(void);
// buzzer // buzzer
void buzzer(uint8_t warn_vbat); void buzzer(uint8_t warn_vbat);
void systemBeep(bool onoff);
// cli // cli
void cliProcess(void); void cliProcess(void);

View file

@ -267,6 +267,7 @@ void serializeBoxNamesReply(void)
void serialInit(uint32_t baudrate) void serialInit(uint32_t baudrate)
{ {
int idx; int idx;
bool hfadded = false;
core.mainport = uartOpen(USART1, NULL, baudrate, MODE_RXTX); core.mainport = uartOpen(USART1, NULL, baudrate, MODE_RXTX);
// TODO fix/hax // TODO fix/hax
@ -279,6 +280,10 @@ void serialInit(uint32_t baudrate)
if (sensors(SENSOR_ACC)) { if (sensors(SENSOR_ACC)) {
availableBoxes[idx++] = BOXANGLE; availableBoxes[idx++] = BOXANGLE;
availableBoxes[idx++] = BOXHORIZON; availableBoxes[idx++] = BOXHORIZON;
availableBoxes[idx++] = BOXMAG;
availableBoxes[idx++] = BOXHEADFREE;
availableBoxes[idx++] = BOXHEADADJ;
hfadded = true;
} }
if (sensors(SENSOR_BARO)) { if (sensors(SENSOR_BARO)) {
availableBoxes[idx++] = BOXBARO; availableBoxes[idx++] = BOXBARO;
@ -286,9 +291,12 @@ void serialInit(uint32_t baudrate)
availableBoxes[idx++] = BOXVARIO; availableBoxes[idx++] = BOXVARIO;
} }
if (sensors(SENSOR_MAG)) { if (sensors(SENSOR_MAG)) {
availableBoxes[idx++] = BOXMAG; // this really shouldn't even needed to be tested as it wouldn't be possible without acc anyway
availableBoxes[idx++] = BOXHEADFREE; if (!hfadded) {
availableBoxes[idx++] = BOXHEADADJ; availableBoxes[idx++] = BOXMAG;
availableBoxes[idx++] = BOXHEADFREE;
availableBoxes[idx++] = BOXHEADADJ;
}
} }
if (feature(FEATURE_SERVO_TILT)) if (feature(FEATURE_SERVO_TILT))
availableBoxes[idx++] = BOXCAMSTAB; availableBoxes[idx++] = BOXCAMSTAB;