From dcceffe1b49c53fdbf74cc8f0c73b84b63610e06 Mon Sep 17 00:00:00 2001 From: Freek van Tienen Date: Mon, 30 Aug 2021 20:55:03 +0200 Subject: [PATCH] Pixhawk ADC 5 and ADC 6 (#2762) * [actuators] Add randomness to UAVCan telemetry * [conf] Update Nederdrone * [boards] Add ADC5 and ADC6 for the pixhawk 4 --- conf/airframes/tudelft/nederdrone4.xml | 4 +++ conf/modules/actuators_uavcan.xml | 1 + conf/telemetry/highspeed_rotorcraft.xml | 2 ++ conf/userconf/tudelft/conf.xml | 8 ++--- .../boards/px4fmu/chibios/v5.0/board.cfg | 4 +-- .../boards/px4fmu/chibios/v5.0/board.h | 32 +++++++++---------- .../boards/px4fmu/chibios/v5.0/px4fmu.h | 18 +++++++++++ .../subsystems/actuators/actuators_uavcan.c | 10 +++++- 8 files changed, 56 insertions(+), 23 deletions(-) diff --git a/conf/airframes/tudelft/nederdrone4.xml b/conf/airframes/tudelft/nederdrone4.xml index aaf701c24cb..ad7e066ffe1 100644 --- a/conf/airframes/tudelft/nederdrone4.xml +++ b/conf/airframes/tudelft/nederdrone4.xml @@ -38,6 +38,10 @@ + + + + diff --git a/conf/modules/actuators_uavcan.xml b/conf/modules/actuators_uavcan.xml index 4cd736bace9..9ca4c2f5a69 100644 --- a/conf/modules/actuators_uavcan.xml +++ b/conf/modules/actuators_uavcan.xml @@ -17,6 +17,7 @@ + diff --git a/conf/telemetry/highspeed_rotorcraft.xml b/conf/telemetry/highspeed_rotorcraft.xml index 9dc899860e6..41b231c62b4 100644 --- a/conf/telemetry/highspeed_rotorcraft.xml +++ b/conf/telemetry/highspeed_rotorcraft.xml @@ -41,6 +41,7 @@ + @@ -219,6 +220,7 @@ + diff --git a/conf/userconf/tudelft/conf.xml b/conf/userconf/tudelft/conf.xml index 20aabc745a1..6960e42f6c7 100644 --- a/conf/userconf/tudelft/conf.xml +++ b/conf/userconf/tudelft/conf.xml @@ -288,12 +288,12 @@ @@ -305,7 +305,7 @@ telemetry="telemetry/highspeed_rotorcraft.xml" flight_plan="flight_plans/tudelft/nederdrone_valkenburg.xml" settings="settings/rotorcraft_basic.xml" - settings_modules="modules/air_data.xml modules/airspeed_ms45xx_i2c.xml modules/gps.xml modules/gps_ubx_ucenter.xml modules/guidance_indi_hybrid.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/ins_ekf2.xml modules/nav_basic_rotorcraft.xml modules/scheduling_indi_simple.xml modules/stabilization_indi_simple.xml" + settings_modules="modules/air_data.xml modules/airspeed_ms45xx_i2c.xml modules/gps.xml modules/gps_ubx_ucenter.xml modules/guidance_indi_hybrid.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/ins_ekf2.xml modules/nav_basic_rotorcraft.xml modules/nav_survey_rectangle_rotorcraft.xml modules/scheduling_indi_simple.xml modules/stabilization_indi_simple.xml" gui_color="blue" release="c52a0b7e581c74b42ecc9f9d712324e3ab1fcc5e" /> diff --git a/sw/airborne/boards/px4fmu/chibios/v5.0/board.cfg b/sw/airborne/boards/px4fmu/chibios/v5.0/board.cfg index 6afbe92ac6c..bb70e4b43eb 100644 --- a/sw/airborne/boards/px4fmu/chibios/v5.0/board.cfg +++ b/sw/airborne/boards/px4fmu/chibios/v5.0/board.cfg @@ -81,7 +81,7 @@ PA00 ADC1 ADC ADC1_IN0 # BAT1_V PA01 ADC2 ADC ADC1_IN1 # BAT1_I PA02 ADC3 ADC ADC1_IN2 # BAT2_V PA03 ADC4 ADC ADC1_IN3 # BAT2_I -PA04 ADC1_SPARE2 ADC ADC1_IN4 +PA04 ADC5 ADC ADC1_IN4 # ADC1_SPARE2 PA05 FMU_CAP1 PASSIVE PA06 SPI1_MISO SPI AF:SPI1_MISO PA07 HEATER PASSIVE @@ -112,7 +112,7 @@ PC00 SCALED_V5 ADC ADC1_IN10 PC01 SCALED_3V3_SENSORS ADC ADC1_IN11 PC02 HW_VER_SENSE ADC ADC1_IN12 PC03 HW_REV_SENSE ADC ADC1_IN13 -PC04 ADC1_SPARE1 ADC ADC1_IN14 +PC04 ADC6 ADC ADC1_IN14 PC05 DRDY4_ICM20602 PASSIVE PC06 LED2 LED # LED_GREEN PC07 LED3 LED # LED_BLUE diff --git a/sw/airborne/boards/px4fmu/chibios/v5.0/board.h b/sw/airborne/boards/px4fmu/chibios/v5.0/board.h index 032ebfb5152..c7ca1189476 100644 --- a/sw/airborne/boards/px4fmu/chibios/v5.0/board.h +++ b/sw/airborne/boards/px4fmu/chibios/v5.0/board.h @@ -53,7 +53,7 @@ #define PA01_ADC2 1U #define PA02_ADC3 2U #define PA03_ADC4 3U -#define PA04_ADC1_SPARE2 4U +#define PA04_ADC5 4U #define PA05_FMU_CAP1 5U #define PA06_SPI1_MISO 6U #define PA07_HEATER 7U @@ -87,7 +87,7 @@ #define PC01_SCALED_3V3_SENSORS 1U #define PC02_HW_VER_SENSE 2U #define PC03_HW_REV_SENSE 3U -#define PC04_ADC1_SPARE1 4U +#define PC04_ADC6 4U #define PC05_DRDY4_ICM20602 5U #define PC06_LED2 6U #define PC07_LED3 7U @@ -243,7 +243,7 @@ #define LINE_ADC2 PAL_LINE(GPIOA, 1U) #define LINE_ADC3 PAL_LINE(GPIOA, 2U) #define LINE_ADC4 PAL_LINE(GPIOA, 3U) -#define LINE_ADC1_SPARE2 PAL_LINE(GPIOA, 4U) +#define LINE_ADC5 PAL_LINE(GPIOA, 4U) #define LINE_FMU_CAP1 PAL_LINE(GPIOA, 5U) #define LINE_SPI1_MISO PAL_LINE(GPIOA, 6U) #define LINE_HEATER PAL_LINE(GPIOA, 7U) @@ -276,7 +276,7 @@ #define LINE_SCALED_3V3_SENSORS PAL_LINE(GPIOC, 1U) #define LINE_HW_VER_SENSE PAL_LINE(GPIOC, 2U) #define LINE_HW_REV_SENSE PAL_LINE(GPIOC, 3U) -#define LINE_ADC1_SPARE1 PAL_LINE(GPIOC, 4U) +#define LINE_ADC6 PAL_LINE(GPIOC, 4U) #define LINE_DRDY4_ICM20602 PAL_LINE(GPIOC, 5U) #define LINE_LED2 PAL_LINE(GPIOC, 6U) #define LINE_LED3 PAL_LINE(GPIOC, 7U) @@ -414,7 +414,7 @@ PIN_MODE_ANALOG(PA01_ADC2) | \ PIN_MODE_ANALOG(PA02_ADC3) | \ PIN_MODE_ANALOG(PA03_ADC4) | \ - PIN_MODE_ANALOG(PA04_ADC1_SPARE2) | \ + PIN_MODE_ANALOG(PA04_ADC5) | \ PIN_MODE_INPUT(PA05_FMU_CAP1) | \ PIN_MODE_ALTERNATE(PA06_SPI1_MISO) | \ PIN_MODE_INPUT(PA07_HEATER) | \ @@ -431,7 +431,7 @@ PIN_OTYPE_PUSHPULL(PA01_ADC2) | \ PIN_OTYPE_PUSHPULL(PA02_ADC3) | \ PIN_OTYPE_PUSHPULL(PA03_ADC4) | \ - PIN_OTYPE_PUSHPULL(PA04_ADC1_SPARE2) | \ + PIN_OTYPE_PUSHPULL(PA04_ADC5) | \ PIN_OTYPE_OPENDRAIN(PA05_FMU_CAP1) | \ PIN_OTYPE_PUSHPULL(PA06_SPI1_MISO) | \ PIN_OTYPE_OPENDRAIN(PA07_HEATER) | \ @@ -448,7 +448,7 @@ PIN_OSPEED_SPEED_VERYLOW(PA01_ADC2) | \ PIN_OSPEED_SPEED_VERYLOW(PA02_ADC3) | \ PIN_OSPEED_SPEED_VERYLOW(PA03_ADC4) | \ - PIN_OSPEED_SPEED_VERYLOW(PA04_ADC1_SPARE2) | \ + PIN_OSPEED_SPEED_VERYLOW(PA04_ADC5) | \ PIN_OSPEED_SPEED_VERYLOW(PA05_FMU_CAP1) | \ PIN_OSPEED_SPEED_HIGH(PA06_SPI1_MISO) | \ PIN_OSPEED_SPEED_VERYLOW(PA07_HEATER) | \ @@ -465,7 +465,7 @@ PIN_PUPDR_FLOATING(PA01_ADC2) | \ PIN_PUPDR_FLOATING(PA02_ADC3) | \ PIN_PUPDR_FLOATING(PA03_ADC4) | \ - PIN_PUPDR_FLOATING(PA04_ADC1_SPARE2) | \ + PIN_PUPDR_FLOATING(PA04_ADC5) | \ PIN_PUPDR_PULLDOWN(PA05_FMU_CAP1) | \ PIN_PUPDR_FLOATING(PA06_SPI1_MISO) | \ PIN_PUPDR_PULLDOWN(PA07_HEATER) | \ @@ -482,7 +482,7 @@ PIN_ODR_LEVEL_LOW(PA01_ADC2) | \ PIN_ODR_LEVEL_LOW(PA02_ADC3) | \ PIN_ODR_LEVEL_LOW(PA03_ADC4) | \ - PIN_ODR_LEVEL_LOW(PA04_ADC1_SPARE2) | \ + PIN_ODR_LEVEL_LOW(PA04_ADC5) | \ PIN_ODR_LEVEL_HIGH(PA05_FMU_CAP1) | \ PIN_ODR_LEVEL_HIGH(PA06_SPI1_MISO) | \ PIN_ODR_LEVEL_HIGH(PA07_HEATER) | \ @@ -499,7 +499,7 @@ PIN_AFIO_AF(PA01_ADC2, 0) | \ PIN_AFIO_AF(PA02_ADC3, 0) | \ PIN_AFIO_AF(PA03_ADC4, 0) | \ - PIN_AFIO_AF(PA04_ADC1_SPARE2, 0) | \ + PIN_AFIO_AF(PA04_ADC5, 0) | \ PIN_AFIO_AF(PA05_FMU_CAP1, 0) | \ PIN_AFIO_AF(PA06_SPI1_MISO, 5) | \ PIN_AFIO_AF(PA07_HEATER, 0)) @@ -620,7 +620,7 @@ PIN_MODE_ANALOG(PC01_SCALED_3V3_SENSORS) | \ PIN_MODE_ANALOG(PC02_HW_VER_SENSE) | \ PIN_MODE_ANALOG(PC03_HW_REV_SENSE) | \ - PIN_MODE_ANALOG(PC04_ADC1_SPARE1) | \ + PIN_MODE_ANALOG(PC04_ADC6) | \ PIN_MODE_INPUT(PC05_DRDY4_ICM20602) | \ PIN_MODE_OUTPUT(PC06_LED2) | \ PIN_MODE_OUTPUT(PC07_LED3) | \ @@ -637,7 +637,7 @@ PIN_OTYPE_PUSHPULL(PC01_SCALED_3V3_SENSORS) | \ PIN_OTYPE_PUSHPULL(PC02_HW_VER_SENSE) | \ PIN_OTYPE_PUSHPULL(PC03_HW_REV_SENSE) | \ - PIN_OTYPE_PUSHPULL(PC04_ADC1_SPARE1) | \ + PIN_OTYPE_PUSHPULL(PC04_ADC6) | \ PIN_OTYPE_OPENDRAIN(PC05_DRDY4_ICM20602) | \ PIN_OTYPE_PUSHPULL(PC06_LED2) | \ PIN_OTYPE_PUSHPULL(PC07_LED3) | \ @@ -654,7 +654,7 @@ PIN_OSPEED_SPEED_VERYLOW(PC01_SCALED_3V3_SENSORS) | \ PIN_OSPEED_SPEED_VERYLOW(PC02_HW_VER_SENSE) | \ PIN_OSPEED_SPEED_VERYLOW(PC03_HW_REV_SENSE) | \ - PIN_OSPEED_SPEED_VERYLOW(PC04_ADC1_SPARE1) | \ + PIN_OSPEED_SPEED_VERYLOW(PC04_ADC6) | \ PIN_OSPEED_SPEED_VERYLOW(PC05_DRDY4_ICM20602) | \ PIN_OSPEED_SPEED_VERYLOW(PC06_LED2) | \ PIN_OSPEED_SPEED_VERYLOW(PC07_LED3) | \ @@ -671,7 +671,7 @@ PIN_PUPDR_FLOATING(PC01_SCALED_3V3_SENSORS) | \ PIN_PUPDR_FLOATING(PC02_HW_VER_SENSE) | \ PIN_PUPDR_FLOATING(PC03_HW_REV_SENSE) | \ - PIN_PUPDR_FLOATING(PC04_ADC1_SPARE1) | \ + PIN_PUPDR_FLOATING(PC04_ADC6) | \ PIN_PUPDR_PULLDOWN(PC05_DRDY4_ICM20602) | \ PIN_PUPDR_FLOATING(PC06_LED2) | \ PIN_PUPDR_FLOATING(PC07_LED3) | \ @@ -688,7 +688,7 @@ PIN_ODR_LEVEL_LOW(PC01_SCALED_3V3_SENSORS) | \ PIN_ODR_LEVEL_LOW(PC02_HW_VER_SENSE) | \ PIN_ODR_LEVEL_LOW(PC03_HW_REV_SENSE) | \ - PIN_ODR_LEVEL_LOW(PC04_ADC1_SPARE1) | \ + PIN_ODR_LEVEL_LOW(PC04_ADC6) | \ PIN_ODR_LEVEL_HIGH(PC05_DRDY4_ICM20602) | \ PIN_ODR_LEVEL_LOW(PC06_LED2) | \ PIN_ODR_LEVEL_LOW(PC07_LED3) | \ @@ -705,7 +705,7 @@ PIN_AFIO_AF(PC01_SCALED_3V3_SENSORS, 0) | \ PIN_AFIO_AF(PC02_HW_VER_SENSE, 0) | \ PIN_AFIO_AF(PC03_HW_REV_SENSE, 0) | \ - PIN_AFIO_AF(PC04_ADC1_SPARE1, 0) | \ + PIN_AFIO_AF(PC04_ADC6, 0) | \ PIN_AFIO_AF(PC05_DRDY4_ICM20602, 0) | \ PIN_AFIO_AF(PC06_LED2, 0) | \ PIN_AFIO_AF(PC07_LED3, 0)) diff --git a/sw/airborne/boards/px4fmu/chibios/v5.0/px4fmu.h b/sw/airborne/boards/px4fmu/chibios/v5.0/px4fmu.h index 16b57e3fdf1..86373003ced 100644 --- a/sw/airborne/boards/px4fmu/chibios/v5.0/px4fmu.h +++ b/sw/airborne/boards/px4fmu/chibios/v5.0/px4fmu.h @@ -115,6 +115,24 @@ #endif #endif +#if defined(LINE_ADC5) +#if USE_ADC_5 +#define AD1_5_CHANNEL ADC_CHANNEL_IN4 +#define ADC_5 AD1_5 +#define ADC_5_GPIO_PORT PAL_PORT(LINE_ADC5) +#define ADC_5_GPIO_PIN PAL_PAD(LINE_ADC5) +#endif +#endif + +#if defined(LINE_ADC6) +#if USE_ADC_6 +#define AD1_6_CHANNEL ADC_CHANNEL_IN14 +#define ADC_6 AD1_6 +#define ADC_6_GPIO_PORT PAL_PORT(LINE_ADC6) +#define ADC_6_GPIO_PIN PAL_PAD(LINE_ADC6) +#endif +#endif + /* allow to define ADC_CHANNEL_VSUPPLY in the airframe file*/ #ifndef ADC_CHANNEL_VSUPPLY #define ADC_CHANNEL_VSUPPLY ADC_1 diff --git a/sw/airborne/subsystems/actuators/actuators_uavcan.c b/sw/airborne/subsystems/actuators/actuators_uavcan.c index 317ed0ebff7..b668f4833c2 100644 --- a/sw/airborne/subsystems/actuators/actuators_uavcan.c +++ b/sw/airborne/subsystems/actuators/actuators_uavcan.c @@ -26,6 +26,7 @@ #include "actuators_uavcan.h" #include "subsystems/electrical.h" +#include "math/pprz_random.h" /* By default enable the usage of the current sensing in the ESC telemetry */ #ifndef UAVCAN_ACTUATORS_USE_CURRENT @@ -102,7 +103,11 @@ static void actuators_uavcan_send_esc(struct transport_tx *trans, struct link_de float energy = telem[i].energy; pprz_msg_send_ESC(trans, dev, AC_ID, &telem[i].current, &electrical.vsupply, &power, &rpm, &telem[i].voltage, &energy, &esc_idx); - esc_idx++; + + // Randomness added for multiple transport devices + if (rand_uniform() > 0.05) { + esc_idx++; + } if (esc_idx >= max_id) { esc_idx = 0; @@ -182,6 +187,9 @@ void actuators_uavcan_init(struct uavcan_iface_t *iface __attribute__((unused))) // Set initialization actuators_uavcan_initialized = true; + + // Initialize Random (for telemetry) + init_random(); } /**