From 50c6bbcad8bf502c9c57ab2b18248f94e88327fe Mon Sep 17 00:00:00 2001 From: gotchafr Date: Sun, 11 May 2014 18:02:45 +0200 Subject: [PATCH 1/4] Update SerialRX.ino Added Graupner SUMD protocol --- FlightStab/SerialRX.ino | 131 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 123 insertions(+), 8 deletions(-) diff --git a/FlightStab/SerialRX.ino b/FlightStab/SerialRX.ino index e9cf222..1b225ec 100644 --- a/FlightStab/SerialRX.ino +++ b/FlightStab/SerialRX.ino @@ -18,7 +18,7 @@ int8_t rshift; #define SBUS_OFFSET 1009 // 1009 for Futaba X8R, 1003 for Taranis FRSKY X8R, 984 for Orange R800x #endif -#if (defined(SERIALRX_SPEKTRUM) || defined(SERIALRX_SBUS)) +#if (defined(SERIALRX_SPEKTRUM) || defined(SERIALRX_SBUS) || defined(SERIALRX_SUMD)) #if defined(NANOWII) HardwareSerial *pSerial = &Serial1; // TODO: hardcoded for NanoWii for now #else @@ -26,11 +26,35 @@ int8_t rshift; #endif // NANOWI //jrb add for debug - #if defined(SERIAL_DEBUG) && 1 + #if defined(SERIAL_DEBUG) && 0 volatile int8_t RXcount; int8_t PrintIndex; uint16_t work; - #endif + #endif + +#if defined(SERIALRX_SUMD) + #define SUMD_BAUD 115200L + + #define SUMD_START_CHAR1 0xa8 + #define SUMD_START_CHAR2 0x01 + + #define SUMD_WAIT_SYNC1 0x00 + #define SUMD_WAIT_SYNC2 0x01 + #define SUMD_WAIT_NB_CHANNEL 0x02 + #define SUMD_WAIT_DATA 0x03 + + #define POLYNOM 0x11021 +#endif + +#if defined(SERIALRX_SUMD) //Vars for Graupner SUMD RX Configs + typedef struct { + uint8_t state; + uint8_t nb_channel; + uint8_t dataCount; + uint8_t rawBuf[23] ; + } sumdStruct_t; + static sumdStruct_t sumd_data; +#endif void serialrx_init() @@ -42,12 +66,19 @@ int8_t rshift; #if defined (SERIALRX_SBUS) pSerial->begin(100000L, SERIAL_8E2); #endif + //Init Port for SUMD + #if defined(SERIALRX_SUMD) + pSerial->begin(SUMD_BAUD); + sumd_data.state = SUMD_WAIT_SYNC1; + #endif } bool serialrx_update() { - static uint8_t buf[25]; - static int8_t index = 0; + #if !defined(SERIALRX_SUMD) //SUMD doesn't use these + static uint8_t buf[25]; + static int8_t index = 0; + #endif // SERIALRX_SUMD #if defined (SERIALRX_SBUS) bool sbus_return = false; #endif // SERIALRX_SBUS @@ -55,7 +86,11 @@ int8_t rshift; #if defined (SERIALRX_SPEKTRUM) // Used only for Spektrum static uint32_t last_rx_time; uint32_t t; - #endif + #endif + + #if defined (SERIALRX_SUMD) + bool sumd_return = false; + #endif // SERIALRX_SBUS //jrb add for debug #if defined(SERIAL_DEBUG) && 0 @@ -182,7 +217,7 @@ jrb*/ } //jrb add for debug - #if defined(SERIAL_DEBUG) && 1 + #if defined(SERIAL_DEBUG) && 0 if (RXcount > 100) { for (index = 0; index < 8; index++) @@ -197,6 +232,86 @@ jrb*/ } return (sbus_return); #endif // SERIALRX_SBUS + + + #if defined (SERIALRX_SUMD) + #warning SERIALRX_SUMD defined // emit device name + + #if defined(SERIAL_DEBUG) && 0 + Serial.println("Serial Graupner SUMD 8 channels MAX!"); + #endif + + switch (sumd_data.state) { + case SUMD_WAIT_SYNC1: + if (ch == SUMD_START_CHAR1) { + sumd_data.state = SUMD_WAIT_SYNC2; + sumd_data.dataCount = 0; + sumd_data.nb_channel = 0 ; + } + break; + case SUMD_WAIT_SYNC2: + if (ch == SUMD_START_CHAR2) { + sumd_data.state = SUMD_WAIT_NB_CHANNEL; + } + break; + case SUMD_WAIT_NB_CHANNEL: + sumd_data.nb_channel = ch * 2 + 2 ; + sumd_data.state = SUMD_WAIT_DATA; + sumd_data.dataCount = 0; + break; + case SUMD_WAIT_DATA: + sumd_data.rawBuf[sumd_data.dataCount++] = ch; + if (sumd_data.dataCount == sumd_data.nb_channel ) { + sumd_data.state = SUMD_WAIT_SYNC1; + sumd_return = sumdDecode(); + } + break; + default: + sumd_data.state = SUMD_WAIT_SYNC1; + break; + } + } + return(sumd_return); + #endif // SERIALRX_SUMD +} + + +#if defined (SERIALRX_SUMD) +boolean sumdDecode(void) { + // calculate CRC16 XMODEM + int crc = 0xA604 ; /* CRC of three first bytes = A8 01 08 (header: two byte, nbr channels: one byte) */ + for (int num=0; num < sumd_data.nb_channel - 2 ; num++) { /* Step through bytes in memory */ + crc = crc ^ (sumd_data.rawBuf[num] << 8); /* Fetch byte from memory, XOR into CRC top byte*/ + for (int i=0; i<8; i++) { /* Prepare to rotate 8 bits */ + if (crc & 0x8000) /* b15 is set... */ + crc = (crc << 1) ^ POLYNOM; /* rotate and XOR with XMODEM polynomic */ + else /* b15 is clear... */ + crc = crc << 1; /* just rotate */ + } /* Loop for 8 bits */ + } + int sumd_crc = ( sumd_data.rawBuf[16] << 8 ) + sumd_data.rawBuf[17] ; + /* @100% Min 1100ms->8800, Mid 1500ms->12000, Max 1900ms->15200 */ + /* @50% Min 1300, Mid 1500, Max 1700 */ + /* @150% Min 900, Mid 1500, Max 2100 */ + //serialrx_order: R E T A 1 a 2 f + // 0 1 2 3 4 5 6 7 + if (crc == sumd_crc) { + volatile int16_t **p = rx_chan; + *p[2] = ( int16_t ) ( ( ( sumd_data.rawBuf[0] << 8 ) + sumd_data.rawBuf[1] ) >> 3 ); //Throttle S1 + *p[3] = ( int16_t ) ( ( ( sumd_data.rawBuf[2] << 8 ) + sumd_data.rawBuf[3] ) >> 3 ); //Aileron S2 + *p[1] = ( int16_t ) ( ( ( sumd_data.rawBuf[4] << 8 ) + sumd_data.rawBuf[5] ) >> 3 ); //Elevator S3 + *p[0] = ( int16_t ) ( ( ( sumd_data.rawBuf[6] << 8 ) + sumd_data.rawBuf[7] ) >> 3 ); //Rudder S4 + *p[5] = ( int16_t ) ( ( ( sumd_data.rawBuf[8] << 8 ) + sumd_data.rawBuf[9] ) >> 3 ); //Aileron S5 + *p[7] = ( int16_t ) ( ( ( sumd_data.rawBuf[10] << 8 ) + sumd_data.rawBuf[11] ) >> 3 ); //Flaps S6 + *p[4] = ( int16_t ) ( ( ( sumd_data.rawBuf[12] << 8 ) + sumd_data.rawBuf[13] ) >> 3 ); //Extra1 S7 + *p[6] = ( int16_t ) ( ( ( sumd_data.rawBuf[14] << 8 ) + sumd_data.rawBuf[15] ) >> 3 ); //Extra2 S8 + return true; + } + else { + /* CRC Error */ + return false; + } } -#endif // SERIALRX_SPEKTRUM) || SERIALRX_SBUS +#endif // SERIALRX_SUMD +#endif // SERIALRX_SPEKTRUM || SERIALRX_SBUS || SERIALRX_SUMD From 04aa8986d2cf24532b85e06c6bead73767fbfb8c Mon Sep 17 00:00:00 2001 From: gotchafr Date: Sun, 11 May 2014 18:06:57 +0200 Subject: [PATCH 2/4] Update FlightStab.ino Added SerialRX Graupner SUMD protocol Board Arduino Mini + GY-521 + 3 Pots --- FlightStab/FlightStab.ino | 141 +++++++++++++++++++++++++++++--------- 1 file changed, 108 insertions(+), 33 deletions(-) diff --git a/FlightStab/FlightStab.ino b/FlightStab/FlightStab.ino index 4957f7c..0171389 100644 --- a/FlightStab/FlightStab.ino +++ b/FlightStab/FlightStab.ino @@ -29,11 +29,13 @@ bool ow_loop(); // OneWireSerial.ino //#define MINI_MWC //#define MINI_MWC_EXTERNAL_RX //Define this if using an External RX with MINI_MWC //#define FLIP_1_5 +//#define MINI_521 //#define NANO_MPU6050 //#define SERIALRX_CPPM // over a digital-in pin (preferably ICP) //#define SERIALRX_SPEKTRUM // over the serial port //#define SERIALRX_SBUS // over the serial port +//#define SERIALRX_SUMD // over the serial port //#define NO_ONEWIRE // remove one-wire serial config code //#define NO_STICKCONFIG // remove stick config code @@ -42,7 +44,7 @@ bool ow_loop(); // OneWireSerial.ino //#define DUMP_SENSORS // dump sensors through the serial port //#define LED_TIMING // disable LED_MSG and use LED_TIMING_START/STOP to measure timings -//#define USE_I2CDEVLIB // interrupt-based wire and i2cdev libraries +#define USE_I2CDEVLIB // interrupt-based wire and i2cdev libraries //#define USE_I2CLIGHT // poll-based i2c access routines #if !(defined(USE_I2CDEVLIB) || defined(USE_I2CLIGHT)) #define USE_I2CLIGHT // default @@ -411,8 +413,8 @@ bool ow_loop(); // OneWireSerial.ino #define GYRO_ORIENTATION(x, y, z) {gyro[0] = (-y); gyro[1] = (-x); gyro[2] = (z);} // must use one of the SERIALRX modes -#if !defined(SERIALRX_CPPM) && !defined(SERIALRX_SPEKTRUM) && !defined(SERIALRX_SBUS) -#error "MINI_MWC must use one of SERIALRX_CPPM or SERIALRX_SPEKTRUM or SERIALRX_SBUS" +#if !defined(SERIALRX_CPPM) && !defined(SERIALRX_SPEKTRUM) && !defined(SERIALRX_SBUS) && !defined(SERIALRX_SUMD) +#error "MINI_MWC must use one of SERIALRX_CPPM or SERIALRX_SPEKTRUM or SERIALRX_SBUS or SERIALRX_SUMD" #endif // CPPM from external/internal RX @@ -444,7 +446,7 @@ bool ow_loop(); // OneWireSerial.ino PB1 9/D9 ELE_OUT (PWM) PC1 15/A1 THR_OUT PD1 1/D1 (TXD) PB2 10/D10 AIL_OUT (PWM) PC2 16/A2 FLP_OUT PD2 2/D2 CPPM_IN PB3 11/D11 AILR_OUT (PWM) PC3 17/A3 no connection PD3 3/D3 RUD_OUT (PWM) - PB4 12/D12 AUX_IN PC4 18/A4 (SDA) PD4 4/D4 AIL_IN + PB4 12/D12 AUX_IN PC4 18/A4 (SDA) PD4 4/D4 AIL_IN PB5 13/D13 LED (SCK) PC5 19/A5 (SCL) PD5 5/D5 RUD_IN (PWM) PB6 14/D14 (XTAL1) PC6 (RESET) PD6 6/D6 ELE_IN (PWM) PB7 15/D15 (XTAL2) PD7 7/D7 AILR_IN @@ -491,6 +493,64 @@ bool ow_loop(); // OneWireSerial.ino #endif // defined(FLIP_1_5) /* FLIP_1_5 ****************************************************************************************************/ + +/* ARDUINO MINI+GY-521 *****************************************************************************************/ +#if defined(MINI_521) +#warning MINI_521 defined // emit device name +/* + ARDUINO MINI+GY-521 + PB0 8/D8 no connection PC0 14/A0 One-Wire PD0 0/D0 (RXD) + PB1 9/D9 ELE_OUT (PWM) PC1 15/A1 THR_OUT PD1 1/D1 (TXD) + PB2 10/D10 AIL_OUT (PWM) PC2 16/A2 FLP_OUT PD2 2/D2 CPPM_IN + PB3 11/D11 AILR_OUT (PWM) PC3 17/A3 AIL_GAIN PD3 3/D3 RUD_OUT (PWM) + PB4 12/D12 AUX_IN PC4 18/A4 (SDA) PD4 4/D4 AIL_IN + PB5 13/D13 LED (SCK) PC5 19/A5 (SCL) PD5 5/D5 RUD_IN (PWM) + PB6 14/D14 (XTAL1) PC6 (RESET) PD6 6/D6 ELE_IN (PWM) + PB7 15/D15 (XTAL2) A6 ELE_GAIN PD7 7/D7 AILR_IN + A7 RUD_GAIN + SERIALRX + PD2 D2 CPPM_IN +*/ + +#define DEVICE_ID DEVICE_ARDUINO_MINI_GY_521 + +// +//#define AIN_PORTC {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL} +#define AIN_PORTC {NULL, NULL, NULL, &ail_vr, NULL, NULL, &ele_vr, &rud_vr} + +// (must in PORT B/D due to ISR) +#define RX_PORTB {NULL, NULL, NULL, NULL, &aux_in, NULL, NULL, NULL} +#define RX_PORTD {NULL, NULL, NULL, NULL, &ail_in, &rud_in, &ele_in, &ailr_in} + +// +#define DIN_PORTB {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL} +#define DIN_PORTC {NULL, &dummy_sw, NULL, NULL, NULL, NULL, NULL, NULL} +#define DIN_PORTD {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL} + +// +#define PWM_CHAN_PIN {3, 9, 15, 10, -1, 11, -1, 16} // RETA1a2F +#define PWM_CHAN_PIN_SERIALRX PWM_CHAN_PIN // same pwm output list + +// +#define USE_MPU6050 +#define GYRO_ORIENTATION(x, y, z) {gyro[0] = (-y); gyro[1] = (-x); gyro[2] = (z);} + +#define CPPM_PROFILE CPPM_PROFILE_PD2 // internal RX + + +// LED +#define LED_PROFILE LED_PROFILE_PB5 + +// one-wire port +#define OW_PROFILE OW_PROFILE_PC0 + +// eeprom clear pins. shorted on init means to clear eeprom +#define EEPROM_RESET_OUT_PIN 6 +#define EEPROM_RESET_IN_PIN 5 + +#endif // MINI_521 +/* ARDUINO MINI+GY-521 *****************************************************************************************/ + /* NANO_MPU6050 ************************************************************************************************/ #if defined(NANO_MPU6050) #warning NANO_MPU6050 defined // emit device name @@ -542,13 +602,14 @@ bool ow_loop(); // OneWireSerial.ino #endif // verify not more than one serialrx_* mode defined -#if (defined(SERIALRX_CPPM) && (defined(SERIALRX_SPEKTRUM) || defined(SERIALRX_SBUS))) || \ - (defined(SERIALRX_SPEKTRUM) && (defined(SERIALRX_CPPM) || defined(SERIALRX_SBUS))) || \ - (defined(SERIALRX_SBUS) && (defined(SERIALRX_CPPM) || defined(SERIALRX_SPEKTRUM))) -#error Cannot define mode than one SERIALRX_* mode (CPPM/SPEKTRUM/SBUS) +#if (defined(SERIALRX_CPPM) && (defined(SERIALRX_SPEKTRUM) || defined(SERIALRX_SBUS) || defined(SERIALRX_SUMD))) || \ + (defined(SERIALRX_SPEKTRUM) && (defined(SERIALRX_CPPM) || defined(SERIALRX_SBUS) || defined(SERIALRX_SUMD))) || \ + (defined(SERIALRX_SBUS) && (defined(SERIALRX_CPPM) || defined(SERIALRX_SPEKTRUM) || defined(SERIALRX_SUMD))) || \ + (defined(SERIALRX_SUMD) && (defined(SERIALRX_CPPM) || defined(SERIALRX_SPEKTRUM) || defined(SERIALRX_SBUS))) +#error Cannot define mode than one SERIALRX_* mode (CPPM/SPEKTRUM/SBUS/SUMD) #endif -#if defined(SERIALRX_CPPM) || defined(SERIALRX_SPEKTRUM) || defined(SERIALRX_SBUS) +#if defined(SERIALRX_CPPM) || defined(SERIALRX_SPEKTRUM) || defined(SERIALRX_SBUS) || defined(SERIALRX_SUMD) #define SERIALRX_ENABLED #endif @@ -718,6 +779,8 @@ const int8_t serialrx_order_TAER1a2f[rx_chan_size] = { SERIALRX_T, SERIALRX_A, SERIALRX_E, SERIALRX_R, SERIALRX_1, SERIALRX_a, SERIALRX_2, SERIALRX_F}; const int8_t serialrx_order_AETR1a2f[rx_chan_size] = { SERIALRX_A, SERIALRX_E, SERIALRX_T, SERIALRX_R, SERIALRX_1, SERIALRX_a, SERIALRX_2, SERIALRX_F}; +const int8_t serialrx_order_TAERaf12[rx_chan_size] = { + SERIALRX_T, SERIALRX_A, SERIALRX_E, SERIALRX_R, SERIALRX_a, SERIALRX_F, SERIALRX_1, SERIALRX_2}; volatile int16_t *rx_chan[rx_chan_size] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}; @@ -984,7 +1047,8 @@ uint8_t i2c_read_reg(uint8_t addr, uint8_t reg) i2c_start(addr << 1); // write reg i2c_write(reg); i2c_start((addr << 1) | 1); // read data - return i2c_read(true); + //jrb return i2c_read(true); + return i2c_read(false); } void i2c_read_buf(uint8_t addr, uint8_t *buf, int8_t size) @@ -1060,8 +1124,11 @@ void itg3205_read_gyro(int16_t *gx, int16_t *gy, int16_t *gz) /*************************************************************************************************************** * ANALOG IN (VR) ***************************************************************************************************************/ - +#if defined(MINI_521) +const int8_t adc_portc_size = 8; //using pins A3, A6, A7 +#else const int8_t adc_portc_size = 6; +#endif volatile uint8_t *adc_portc[adc_portc_size] = AIN_PORTC; void start_adc(uint8_t ch) @@ -1938,7 +2005,7 @@ void dump_sensors() while (true) { t = micros1(); -#if defined(SERIALRX_SPEKTRUM) || defined(SERIALRX_SBUS) +#if defined(SERIALRX_SPEKTRUM) || defined(SERIALRX_SBUS) || defined(SERIALRX_SUMD) if (serialrx_update()) rx_frame_sync = true; #endif @@ -2003,19 +2070,19 @@ void dump_sensors() } Serial.print("MISC "); - Serial.print(i2c_errors); Serial.print(' '); - Serial.print(cfg.wing_mode); Serial.print(' '); - Serial.print(wing_mode); Serial.print(' '); - Serial.print(cfg.mixer_epa_mode); Serial.print(' '); + Serial.print(i2c_errors); Serial.print(' '); //All OK -> 0 + Serial.print(cfg.wing_mode); Serial.print(' '); //Default -> 5 WING_RUDELE_2AIL + Serial.print(wing_mode); Serial.print(' '); //Default -> 5 WING_RUDELE_2AIL + Serial.print(cfg.mixer_epa_mode); Serial.print(' '); //Default -> 1 MIXER_EPA_FULL for (int8_t i=0; i 1 MOUNT_NORMAL + Serial.print(get_free_sram()); Serial.print(' '); //1040... (my case) + Serial.print(servo_out); Serial.print(' '); //Varying from 1000 to 2000 Serial.println(); - set_led(LED_INVERT); + set_led(LED_INVERT); //Blinking... what did you expect? delay1(50); } } @@ -2183,7 +2250,7 @@ void stick_config(struct _stick_zone *psz) last_servo_update_time = t; } -#if (defined(SERIALRX_SPEKTRUM) || defined(SERIALRX_SBUS)) +#if (defined(SERIALRX_SPEKTRUM) || defined(SERIALRX_SBUS) || defined(SERIALRX_SUMD)) if (serialrx_update()) { rx_frame_sync = true; } @@ -2254,11 +2321,11 @@ void setup() set_led_msg(2, 20, LED_VERY_SHORT); #if defined(SERIAL_DEBUG) || defined(DUMP_SENSORS) -#if (defined(SERIALRX_SBUS) || defined(SERIALRX_SPEKTRUM)) - serialrx_init(); -#else - Serial.begin(115200L); -#endif // (defined(SERIALRX_SBUS) || defined(SERIALRX_SPEKTRUM)) + #if (defined(SERIALRX_SBUS) || defined(SERIALRX_SPEKTRUM) || defined(SERIALRX_SUMD)) + serialrx_init(); + #else + Serial.begin(115200L); + #endif // SERIALRX_SBUS || SERIALRX_SPEKTRUM || SERIALRX_SUMD #endif #if defined(SERIAL_DEBUG) && 0 @@ -2272,12 +2339,18 @@ void setup() wdt_disable(); #endif // __AVR_ATmega168__ || __AVR_ATmega328P__ -#if defined(NANO_WII) || defined(MINI_MWC) +#if defined(NANO_WII) || defined(MINI_MWC) || defined(FLIP_1_5) // set up default parameters for No DIPSW and No POT cfg.wing_mode = WING_RUDELE_2AIL; for (i=0; i<3; i++) { cfg.vr_gain[i] = 60; } +#elif defined(MINI_521) + // set up default parameters for No DIPSW, but we have pots!!! + cfg.wing_mode = WING_RUDELE_2AIL; + for (i=0; i<3; i++) { + cfg.vr_gain[i] = vr_gain_use_pot; + } #else // set up default parameters cfg.wing_mode = WING_USE_DIPSW; @@ -2287,7 +2360,7 @@ void setup() #endif cfg.mixer_epa_mode = MIXER_EPA_FULL; -#if (defined(SERIALRX_SPEKTRUM) || defined(SERIALRX_SBUS)) +#if (defined(SERIALRX_SPEKTRUM) || defined(SERIALRX_SBUS) || defined(SERIALRX_SUMD)) cfg.servo_frame_rate = 20; // safe rate for analog servos #else cfg.servo_frame_rate = 0; // no min interval, rx will drive the update rate @@ -2304,6 +2377,8 @@ void setup() pserialrx_order = serialrx_order_TAER1a2f; #elif defined(SERIALRX_SBUS) pserialrx_order = serialrx_order_AETR1a2f; +#elif defined(SERIALRX_SUMD) + pserialrx_order = serialrx_order_RETA1a2f;; #else pserialrx_order = serialrx_order_RETA1a2f; #endif @@ -2423,7 +2498,7 @@ void setup() // TIMSK0 &= ~(1 << TOIE0); // disable overflow interrupt #if !defined(SERIAL_DEBUG) && !defined(DUMP_SENSORS) -#if (defined(SERIALRX_SPEKTRUM) || defined(SERIALRX_SBUS)) +#if (defined(SERIALRX_SPEKTRUM) || defined(SERIALRX_SBUS) || defined(SERIALRX_SUMD)) serialrx_init(); #endif #endif @@ -2514,7 +2589,7 @@ void setup() #endif // RX3SM #if defined(EAGLE_A3PRO) // TODO(noobee): need to verify functions -#if !(defined(SERIALRX_SPEKTRUM) || defined(SERIALRX_SBUS)) +#if !(defined(SERIALRX_SPEKTRUM) || defined(SERIALRX_SBUS) || defined(SERIALRX_SUMD)) if (cfg.wing_mode == WING_USE_DIPSW) wing_mode = dip_sw_to_wing_mode_map[(ele_sw ? 0 : 2) | (rud_sw ? 0 : 1)]; #endif @@ -2586,7 +2661,7 @@ again: t = micros1(); update_led(t); -#if (defined(SERIALRX_SPEKTRUM) || defined(SERIALRX_SBUS)) +#if (defined(SERIALRX_SPEKTRUM) || defined(SERIALRX_SBUS) || defined(SERIALRX_SUMD)) if (serialrx_update()) { rx_frame_sync = true; } @@ -2776,5 +2851,5 @@ again: } goto again; // the dreaded "goto" statement :O -#endif // DUMP_SENSORS +#endif // !DUMP_SENSORS } From f0b23b13523357b61241ac1fbb923de21584ae51 Mon Sep 17 00:00:00 2001 From: gotchafr Date: Sun, 11 May 2014 18:11:05 +0200 Subject: [PATCH 3/4] Update FlightStab.h Added board: Arduino MINI + GY-521 + 3 pots --- FlightStab/FlightStab.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/FlightStab/FlightStab.h b/FlightStab/FlightStab.h index 2c34d7e..e7c823c 100644 --- a/FlightStab/FlightStab.h +++ b/FlightStab/FlightStab.h @@ -10,7 +10,7 @@ aquastar programming box to be in sync with the flightstab firmware. const int8_t eeprom_cfg_ver = 8; -enum DEVICE_IDS {DEVICE_UNDEF, DEVICE_RX3S_V1, DEVICE_RX3S_V2V3, DEVICE_NANOWII, DEVICE_EAGLE_A3PRO, DEVICE_RX3SM, DEVICE_MINI_MWC, DEVICE_FLIP_1_5}; +enum DEVICE_IDS {DEVICE_UNDEF, DEVICE_RX3S_V1, DEVICE_RX3S_V2V3, DEVICE_NANOWII, DEVICE_EAGLE_A3PRO, DEVICE_RX3SM, DEVICE_MINI_MWC, DEVICE_FLIP_1_5, DEVICE_ARDUINO_MINI_GY_521}; enum WING_MODE {WING_USE_DIPSW=1, WING_RUDELE_1AIL, WING_DELTA_1AIL, WING_VTAIL_1AIL, @@ -74,4 +74,4 @@ struct _ow_msg { uint8_t pad[32]; // pad to accommodate new ver cfg larger than existing one }; -#endif // FLIGHTSTAB_H \ No newline at end of file +#endif // FLIGHTSTAB_H From 84e911700a0bb8a0c5d954568221f4d5d3919fe7 Mon Sep 17 00:00:00 2001 From: gotchafr Date: Sun, 11 May 2014 18:15:41 +0200 Subject: [PATCH 4/4] Update FlightStab.ino --- FlightStab/FlightStab.ino | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/FlightStab/FlightStab.ino b/FlightStab/FlightStab.ino index 0171389..9328145 100644 --- a/FlightStab/FlightStab.ino +++ b/FlightStab/FlightStab.ino @@ -779,8 +779,7 @@ const int8_t serialrx_order_TAER1a2f[rx_chan_size] = { SERIALRX_T, SERIALRX_A, SERIALRX_E, SERIALRX_R, SERIALRX_1, SERIALRX_a, SERIALRX_2, SERIALRX_F}; const int8_t serialrx_order_AETR1a2f[rx_chan_size] = { SERIALRX_A, SERIALRX_E, SERIALRX_T, SERIALRX_R, SERIALRX_1, SERIALRX_a, SERIALRX_2, SERIALRX_F}; -const int8_t serialrx_order_TAERaf12[rx_chan_size] = { - SERIALRX_T, SERIALRX_A, SERIALRX_E, SERIALRX_R, SERIALRX_a, SERIALRX_F, SERIALRX_1, SERIALRX_2}; + volatile int16_t *rx_chan[rx_chan_size] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL};