diff --git a/flight/targets/boards/revonano/board_hw_defs.c b/flight/targets/boards/revonano/board_hw_defs.c index f3d9cde3e..740c8b6da 100644 --- a/flight/targets/boards/revonano/board_hw_defs.c +++ b/flight/targets/boards/revonano/board_hw_defs.c @@ -961,7 +961,10 @@ static const struct pios_tim_clock_cfg tim_3_cfg = { */ #include #include -static const struct pios_tim_channel pios_tim_servoport_all_pins[] = { +static const struct pios_tim_channel dummmy_timer = + TIM_SERVO_CHANNEL_CONFIG(TIM9, 1, E, 5); // dummy unused timer + gpio. Hack to free tim1 + +static struct pios_tim_channel pios_tim_servoport_all_pins[] = { // TIMER, CHANNEL, GPIO, PIN TIM_SERVO_CHANNEL_CONFIG(TIM1, 3, A, 10), TIM_SERVO_CHANNEL_CONFIG(TIM2, 2, B, 3), @@ -1176,9 +1179,9 @@ void DMA2_Stream1_IRQHandler(void) __attribute__((alias("PIOS_WS2811_irq_handler // pins will be reconfigured as _OUT so the alternate function is disabled. const struct pios_ws2811_pin_cfg pios_ws2811_pin_cfg[] = { [HWSETTINGS_WS2811LED_OUT_SERVOOUT1] = { - .gpio = GPIOB, + .gpio = GPIOA, .gpioInit = { - .GPIO_Pin = GPIO_Pin_0, + .GPIO_Pin = GPIO_Pin_10, .GPIO_Speed = GPIO_Speed_25MHz, .GPIO_Mode = GPIO_Mode_OUT, .GPIO_OType = GPIO_OType_PP, diff --git a/flight/targets/boards/revonano/firmware/Makefile b/flight/targets/boards/revonano/firmware/Makefile index c2cd12ae3..f3b2269fb 100644 --- a/flight/targets/boards/revonano/firmware/Makefile +++ b/flight/targets/boards/revonano/firmware/Makefile @@ -48,6 +48,7 @@ MODULES += PathFollower #MODULES += Osd/osdoutout #MODULES += Logging MODULES += Telemetry +MODULES += Notify OPTMODULES += ComUsbBridge @@ -90,7 +91,7 @@ ifndef TESTAPP SRC += $(FLIGHTLIB)/WorldMagModel.c SRC += $(FLIGHTLIB)/insgps13state.c CPPSRC += $(FLIGHTLIB)/mini_cpp.cpp - + SRC += $(FLIGHTLIB)/lednotification.c SRC += $(FLIGHTLIB)/auxmagsupport.c ## UAVObjects include ./UAVObjects.inc diff --git a/flight/targets/boards/revonano/firmware/inc/pios_config.h b/flight/targets/boards/revonano/firmware/inc/pios_config.h index d88a936ec..8ee73576e 100644 --- a/flight/targets/boards/revonano/firmware/inc/pios_config.h +++ b/flight/targets/boards/revonano/firmware/inc/pios_config.h @@ -97,7 +97,7 @@ #define PIOS_SENSOR_RATE 500.0f -// #define PIOS_INCLUDE_WS2811 +#define PIOS_INCLUDE_WS2811 /* #define PIOS_INCLUDE_HCSR04 */ diff --git a/flight/targets/boards/revonano/firmware/pios_board.c b/flight/targets/boards/revonano/firmware/pios_board.c index 413f1f70b..20218a00f 100644 --- a/flight/targets/boards/revonano/firmware/pios_board.c +++ b/flight/targets/boards/revonano/firmware/pios_board.c @@ -696,6 +696,19 @@ void PIOS_Board_Init(void) pios_rcvr_group_map[MANUALCONTROLSETTINGS_CHANNELGROUPS_GCS] = pios_gcsrcvr_rcvr_id; #endif /* PIOS_INCLUDE_GCSRCVR */ +#ifdef PIOS_INCLUDE_WS2811 +#include + HwSettingsWS2811LED_OutOptions ws2811_pin_settings; + HwSettingsWS2811LED_OutGet(&ws2811_pin_settings); + + // No other choices but servo pin 1 on nano + if (ws2811_pin_settings != HWSETTINGS_WS2811LED_OUT_DISABLED) { + pios_tim_servoport_all_pins[0] = dummmy_timer; // free timer 1 + PIOS_WS2811_Init(&pios_ws2811_cfg, &pios_ws2811_pin_cfg[0]); + } +#endif // PIOS_INCLUDE_WS2811 + + #ifndef PIOS_ENABLE_DEBUG_PINS // pios_servo_cfg points to the correct configuration based on input port settings PIOS_Servo_Init(pios_servo_cfg); @@ -721,16 +734,6 @@ void PIOS_Board_Init(void) PIOS_MS5611_Register(); #endif -#ifdef PIOS_INCLUDE_WS2811 -#include - HwSettingsWS2811LED_OutOptions ws2811_pin_settings; - HwSettingsWS2811LED_OutGet(&ws2811_pin_settings); - - if (ws2811_pin_settings != HWSETTINGS_WS2811LED_OUT_DISABLED && ws2811_pin_settings < NELEMENTS(pios_ws2811_pin_cfg)) { - PIOS_WS2811_Init(&pios_ws2811_cfg, &pios_ws2811_pin_cfg[ws2811_pin_settings]); - } -#endif // PIOS_INCLUDE_WS2811 - #ifdef PIOS_INCLUDE_ADC uint8_t adc_config[HWSETTINGS_ADCROUTING_NUMELEM]; HwSettingsADCRoutingArrayGet(adc_config);