diff --git a/Inc/config.h b/Inc/config.h index 3998808..1d9924f 100644 --- a/Inc/config.h +++ b/Inc/config.h @@ -281,13 +281,13 @@ #define CONTROL_SERIAL_USART3 // right sensor board cable, disable if I2C (nunchuk or lcd) is used! For Arduino control check the hoverSerial.ino #define FEEDBACK_SERIAL_USART3 // right sensor board cable, disable if I2C (nunchuk or lcd) is used! // Min / Max values of each channel (use DEBUG to determine these values) - #define INPUT1_TYPE 3 // 0:Disabled, 1:Normal Pot, 2:Middle Resting Pot, 3:Auto-detect + #define INPUT1_TYPE 1 // 0:Disabled, 1:Normal Pot, 2:Middle Resting Pot, 3:Auto-detect #define INPUT1_MIN -1000 // (-1000 - 0) #define INPUT1_MID 0 #define INPUT1_MAX 1000 // (0 - 1000) #define INPUT1_DEADBAND 0 // How much of the center position is considered 'center' (100 = values -100 to 100 are considered 0) - #define INPUT2_TYPE 3 // 0:Disabled, 1:Normal Pot, 2:Middle Resting Pot, 3:Auto-detect + #define INPUT2_TYPE 1 // 0:Disabled, 1:Normal Pot, 2:Middle Resting Pot, 3:Auto-detect #define INPUT2_MIN -1000 // (-1000 - 0) #define INPUT2_MID 0 #define INPUT2_MAX 1000 // (0 - 1000) @@ -566,13 +566,13 @@ #endif #if defined(FEEDBACK_SERIAL_USART2) || defined(CONTROL_SERIAL_USART2) || defined(DEBUG_SERIAL_USART2) || defined(SIDEBOARD_SERIAL_USART2) #ifndef USART2_BAUD - #define USART2_BAUD 38400 // UART2 baud rate (long wired cable) + #define USART2_BAUD 115200 // UART2 baud rate (long wired cable) #endif #define USART2_WORDLENGTH UART_WORDLENGTH_8B // UART_WORDLENGTH_8B or UART_WORDLENGTH_9B #endif #if defined(FEEDBACK_SERIAL_USART3) || defined(CONTROL_SERIAL_USART3) || defined(DEBUG_SERIAL_USART3) || defined(SIDEBOARD_SERIAL_USART3) #ifndef USART3_BAUD - #define USART3_BAUD 38400 // UART3 baud rate (short wired cable) + #define USART3_BAUD 115200 // UART3 baud rate (short wired cable) #endif #define USART3_WORDLENGTH UART_WORDLENGTH_8B // UART_WORDLENGTH_8B or UART_WORDLENGTH_9B #endif diff --git a/Inc/defines.h b/Inc/defines.h index 5a887da..245b1e3 100644 --- a/Inc/defines.h +++ b/Inc/defines.h @@ -209,14 +209,23 @@ void PWM_ISR_CH1_Callback(void); void PWM_ISR_CH2_Callback(void); // Sideboard definitions -#define LED1_SET (0x01) -#define LED2_SET (0x02) -#define LED3_SET (0x04) -#define LED4_SET (0x08) -#define LED5_SET (0x10) -#define SENSOR1_SET (0x01) -#define SENSOR2_SET (0x02) -#define SENSOR_MPU (0x04) +#define LED1_SET (0x01) +#define LED2_SET (0x02) +#define LED3_SET (0x04) +#define LED4_SET (0x08) +#define LED5_SET (0x10) +#define SENSOR1_SET (0x01) +#define SENSOR2_SET (0x02) +#define SENSOR_MPU (0x04) + +// RC iBUS switch definitions. Flysky FS-i6S has SW1, SW4 - 2 positions; SW2, SW3 - 3 positions +#define SW1_SET (0x0100) // 0000 0001 0000 0000 +#define SW2_SET1 (0x0200) // 0000 0010 0000 0000 +#define SW2_SET2 (0x0400) // 0000 0100 0000 0000 +#define SW3_SET1 (0x0800) // 0000 1000 0000 0000 +#define SW3_SET2 (0x1000) // 0001 0000 0000 0000 +#define SW4_SET (0x2000) // 0010 0000 0000 0000 + #endif // DEFINES_H diff --git a/Inc/util.h b/Inc/util.h index 0037f9c..3f737c1 100644 --- a/Inc/util.h +++ b/Inc/util.h @@ -45,12 +45,13 @@ #endif #if defined(SIDEBOARD_SERIAL_USART2) || defined(SIDEBOARD_SERIAL_USART3) typedef struct{ - uint16_t start; - int16_t roll; - int16_t pitch; - int16_t yaw; - uint16_t sensors; - uint16_t checksum; + uint16_t start; + int16_t pitch; // Angle + int16_t dPitch; // Angle derivative + int16_t cmd1; // RC Channel 1 + int16_t cmd2; // RC Channel 2 + uint16_t sensors; // RC Switches and Optical sideboard sensors + uint16_t checksum; } SerialSideboard; #endif diff --git a/Src/util.c b/Src/util.c index df2781c..8f7e7e4 100644 --- a/Src/util.c +++ b/Src/util.c @@ -870,7 +870,7 @@ void readInput(void) { #if defined(CONTROL_SERIAL_USART2) || defined(CONTROL_SERIAL_USART3) // Handle received data validity, timeout and fix out-of-sync if necessary - #ifdef CONTROL_IBUS + #ifdef CONTROL_IBUS for (uint8_t i = 0; i < (IBUS_NUM_CHANNELS * 2); i+=2) { ibus_captured_value[(i/2)] = CLAMP(command.channels[i] + (command.channels[i+1] << 8) - 1000, 0, INPUT_MAX); // 1000-2000 -> 0-1000 } @@ -1184,7 +1184,7 @@ void usart_process_sideboard(SerialSideboard *Sideboard_in, SerialSideboard *Sid { uint16_t checksum; if (Sideboard_in->start == SERIAL_START_FRAME) { - checksum = (uint16_t)(Sideboard_in->start ^ Sideboard_in->roll ^ Sideboard_in->pitch ^ Sideboard_in->yaw ^ Sideboard_in->sensors); + checksum = (uint16_t)(Sideboard_in->start ^ Sideboard_in->pitch ^ Sideboard_in->dPitch ^ Sideboard_in->cmd1 ^ Sideboard_in->cmd2 ^ Sideboard_in->sensors); if (Sideboard_in->checksum == checksum) { *Sideboard_out = *Sideboard_in; if (usart_idx == 2) { // Sideboard USART2 diff --git a/platformio.ini b/platformio.ini index 9926883..c31fc8d 100644 --- a/platformio.ini +++ b/platformio.ini @@ -32,16 +32,15 @@ upload_protocol = stlink ; Serial Port settings (make sure the COM port is correct) monitor_port = COM5 -monitor_speed = 38400 +monitor_speed = 115200 build_flags = -DUSE_HAL_DRIVER -DSTM32F103xE - -Wl,-T./STM32F103RCTx_FLASH.ld - -Wl,-lc - -Wl,-lm + -T./STM32F103RCTx_FLASH.ld + -lc + -lm -g -ggdb ; to generate correctly the 'firmware.elf' for STM STUDIO vizualization -# -Wl,-lnosys -D VARIANT_ADC ;================================================================ @@ -60,11 +59,10 @@ monitor_speed = 38400 build_flags = -DUSE_HAL_DRIVER -DSTM32F103xE - -Wl,-T./STM32F103RCTx_FLASH.ld - -Wl,-lc - -Wl,-lm + -T./STM32F103RCTx_FLASH.ld + -lc + -lm -g -ggdb ; to generate correctly the 'firmware.elf' for STM STUDIO vizualization -# -Wl,-lnosys -D VARIANT_USART ;================================================================ @@ -79,11 +77,10 @@ upload_protocol = stlink build_flags = -DUSE_HAL_DRIVER -DSTM32F103xE - -Wl,-T./STM32F103RCTx_FLASH.ld - -Wl,-lc - -Wl,-lm + -T./STM32F103RCTx_FLASH.ld + -lc + -lm -g -ggdb ; to generate correctly the 'firmware.elf' for STM STUDIO vizualization -# -Wl,-lnosys -D VARIANT_NUNCHUK ;================================================================ @@ -98,11 +95,10 @@ upload_protocol = stlink build_flags = -DUSE_HAL_DRIVER -DSTM32F103xE - -Wl,-T./STM32F103RCTx_FLASH.ld - -Wl,-lc - -Wl,-lm + -T./STM32F103RCTx_FLASH.ld + -lc + -lm -g -ggdb ; to generate correctly the 'firmware.elf' for STM STUDIO vizualization -# -Wl,-lnosys -D VARIANT_PPM ;================================================================ @@ -117,11 +113,10 @@ upload_protocol = stlink build_flags = -DUSE_HAL_DRIVER -DSTM32F103xE - -Wl,-T./STM32F103RCTx_FLASH.ld - -Wl,-lc - -Wl,-lm + -T./STM32F103RCTx_FLASH.ld + -lc + -lm -g -ggdb ; to generate correctly the 'firmware.elf' for STM STUDIO vizualization -# -Wl,-lnosys -D VARIANT_PWM ;================================================================ @@ -136,11 +131,10 @@ upload_protocol = stlink build_flags = -DUSE_HAL_DRIVER -DSTM32F103xE - -Wl,-T./STM32F103RCTx_FLASH.ld - -Wl,-lc - -Wl,-lm + -T./STM32F103RCTx_FLASH.ld + -lc + -lm -g -ggdb ; to generate correctly the 'firmware.elf' for STM STUDIO vizualization -# -Wl,-lnosys -D VARIANT_IBUS ;================================================================ @@ -159,11 +153,10 @@ monitor_speed = 38400 build_flags = -DUSE_HAL_DRIVER -DSTM32F103xE - -Wl,-T./STM32F103RCTx_FLASH.ld - -Wl,-lc - -Wl,-lm + -T./STM32F103RCTx_FLASH.ld + -lc + -lm -g -ggdb ; to generate correctly the 'firmware.elf' for STM STUDIO vizualization -# -Wl,-lnosys -D VARIANT_HOVERCAR ;================================================================ @@ -182,11 +175,10 @@ monitor_speed = 38400 build_flags = -DUSE_HAL_DRIVER -DSTM32F103xE - -Wl,-T./STM32F103RCTx_FLASH.ld - -Wl,-lc - -Wl,-lm + -T./STM32F103RCTx_FLASH.ld + -lc + -lm -g -ggdb ; to generate correctly the 'firmware.elf' for STM STUDIO vizualization -# -Wl,-lnosys -D VARIANT_HOVERBOARD ;================================================================ @@ -201,11 +193,10 @@ upload_protocol = stlink build_flags = -DUSE_HAL_DRIVER -DSTM32F103xE - -Wl,-T./STM32F103RCTx_FLASH.ld - -Wl,-lc - -Wl,-lm + -T./STM32F103RCTx_FLASH.ld + -lc + -lm -g -ggdb ; to generate correctly the 'firmware.elf' for STM STUDIO vizualization -# -Wl,-lnosys -D VARIANT_TRANSPOTTER ;================================================================ @@ -221,11 +212,10 @@ upload_protocol = stlink build_flags = -DUSE_HAL_DRIVER -DSTM32F103xE - -Wl,-T./STM32F103RCTx_FLASH.ld - -Wl,-lc - -Wl,-lm + -T./STM32F103RCTx_FLASH.ld + -lc + -lm -g -ggdb ; to generate correctly the 'firmware.elf' for STM STUDIO vizualization -# -Wl,-lnosys -D VARIANT_SKATEBOARD ;================================================================