diff --git a/sw/airborne/arch/lpc21/subsystems/actuators/actuators_pwm_arch.h b/sw/airborne/arch/lpc21/subsystems/actuators/actuators_pwm_arch.h index 3a23cedbaf..c8ba69b539 100644 --- a/sw/airborne/arch/lpc21/subsystems/actuators/actuators_pwm_arch.h +++ b/sw/airborne/arch/lpc21/subsystems/actuators/actuators_pwm_arch.h @@ -4,18 +4,6 @@ #include "LPC21xx.h" #include "mcu_periph/sys_time.h" -#define SERVOS_TICS_OF_USEC(s) CPU_TICKS_OF_USEC(s) - -#define SERVO_REG_0 PWMMR5 -#define SERVO_REG_1 PWMMR3 -#define SERVO_REG_2 PWMMR1 -#define SERVO_REG_3 PWMMR6 -#define SERVO_REG_4 PWMMR4 -#define SERVO_REG_5 PWMMR2 - -#define COMMAND_(i) SERVO_REG_ ## i -#define ActuatorPwmSet(_i, _v) { COMMAND_(_i) = SERVOS_TICS_OF_USEC(_v); } - /* wiring on classix PWM connector @@ -29,35 +17,53 @@ PWM6 PWM2 SSEL0 EINT2 P0.7 */ -#define PWM_PINSEL_MASK_VAL 3 +#define SERVOS_TICS_OF_USEC(s) CPU_TICKS_OF_USEC(s) -#define PWM_SERVO_0_PINSEL PINSEL1 -#define PWM_SERVO_0_PINSEL_VAL 1 -#define PWM_SERVO_0_PINSEL_BIT 10 -#define PWM_SERVO_0_PINSEL_MASK ~(PWM_PINSEL_MASK_VAL << PWM_SERVO_0_PINSEL_BIT) -#define PWM_SERVO_0_ENA PWMPCR_ENA5 -#define PWM_SERVO_0_LATCH PWMLER_LATCH5 +/* default definition of servo (from classix order) */ +#ifndef SERVO_REG_0 +#define SERVO_REG_0 PWMMR5 +#endif +#ifndef SERVO_REG_1 +#define SERVO_REG_1 PWMMR3 +#endif +#ifndef SERVO_REG_2 +#define SERVO_REG_2 PWMMR1 +#endif +#ifndef SERVO_REG_3 +#define SERVO_REG_3 PWMMR6 +#endif +#ifndef SERVO_REG_4 +#define SERVO_REG_4 PWMMR4 +#endif +#ifndef SERVO_REG_5 +#define SERVO_REG_5 PWMMR2 +#endif + +#define COMMAND_(i) SERVO_REG_ ## i +#define ActuatorPwmSet(_i, _v) { COMMAND_(_i) = SERVOS_TICS_OF_USEC(_v); } + +#define PWM_PINSEL_MASK_VAL 3 #define PWM_SERVO_1_PINSEL PINSEL0 #define PWM_SERVO_1_PINSEL_VAL 2 -#define PWM_SERVO_1_PINSEL_BIT 2 +#define PWM_SERVO_1_PINSEL_BIT 0 #define PWM_SERVO_1_PINSEL_MASK ~(PWM_PINSEL_MASK_VAL << PWM_SERVO_1_PINSEL_BIT) -#define PWM_SERVO_1_ENA PWMPCR_ENA3 -#define PWM_SERVO_1_LATCH PWMLER_LATCH3 +#define PWM_SERVO_1_ENA PWMPCR_ENA1 +#define PWM_SERVO_1_LATCH PWMLER_LATCH1 #define PWM_SERVO_2_PINSEL PINSEL0 #define PWM_SERVO_2_PINSEL_VAL 2 -#define PWM_SERVO_2_PINSEL_BIT 0 +#define PWM_SERVO_2_PINSEL_BIT 14 #define PWM_SERVO_2_PINSEL_MASK ~(PWM_PINSEL_MASK_VAL << PWM_SERVO_2_PINSEL_BIT) -#define PWM_SERVO_2_ENA PWMPCR_ENA1 -#define PWM_SERVO_2_LATCH PWMLER_LATCH1 +#define PWM_SERVO_2_ENA PWMPCR_ENA2 +#define PWM_SERVO_2_LATCH PWMLER_LATCH2 #define PWM_SERVO_3_PINSEL PINSEL0 #define PWM_SERVO_3_PINSEL_VAL 2 -#define PWM_SERVO_3_PINSEL_BIT 18 +#define PWM_SERVO_3_PINSEL_BIT 2 #define PWM_SERVO_3_PINSEL_MASK ~(PWM_PINSEL_MASK_VAL << PWM_SERVO_3_PINSEL_BIT) -#define PWM_SERVO_3_ENA PWMPCR_ENA6 -#define PWM_SERVO_3_LATCH PWMLER_LATCH6 +#define PWM_SERVO_3_ENA PWMPCR_ENA3 +#define PWM_SERVO_3_LATCH PWMLER_LATCH3 #define PWM_SERVO_4_PINSEL PINSEL0 #define PWM_SERVO_4_PINSEL_VAL 2 @@ -66,12 +72,19 @@ PWM6 PWM2 SSEL0 EINT2 P0.7 #define PWM_SERVO_4_ENA PWMPCR_ENA4 #define PWM_SERVO_4_LATCH PWMLER_LATCH4 -#define PWM_SERVO_5_PINSEL PINSEL0 -#define PWM_SERVO_5_PINSEL_VAL 2 -#define PWM_SERVO_5_PINSEL_BIT 14 +#define PWM_SERVO_5_PINSEL PINSEL1 +#define PWM_SERVO_5_PINSEL_VAL 1 +#define PWM_SERVO_5_PINSEL_BIT 10 #define PWM_SERVO_5_PINSEL_MASK ~(PWM_PINSEL_MASK_VAL << PWM_SERVO_5_PINSEL_BIT) -#define PWM_SERVO_5_ENA PWMPCR_ENA2 -#define PWM_SERVO_5_LATCH PWMLER_LATCH2 +#define PWM_SERVO_5_ENA PWMPCR_ENA5 +#define PWM_SERVO_5_LATCH PWMLER_LATCH5 + +#define PWM_SERVO_6_PINSEL PINSEL0 +#define PWM_SERVO_6_PINSEL_VAL 2 +#define PWM_SERVO_6_PINSEL_BIT 18 +#define PWM_SERVO_6_PINSEL_MASK ~(PWM_PINSEL_MASK_VAL << PWM_SERVO_6_PINSEL_BIT) +#define PWM_SERVO_6_ENA PWMPCR_ENA6 +#define PWM_SERVO_6_LATCH PWMLER_LATCH6 extern const uint8_t pwm_latch_value; diff --git a/sw/airborne/boards/booz_1.0.h b/sw/airborne/boards/booz_1.0.h index 3516c091d4..5fed1bd9d2 100644 --- a/sw/airborne/boards/booz_1.0.h +++ b/sw/airborne/boards/booz_1.0.h @@ -147,16 +147,21 @@ #define MS2100_DRDY_EINT 3 #define MS2100_DRDY_VIC_IT VIC_EINT3 -/* BOOZ PWM0 = PWM_SERVO_0 (driver) = PWM5 (lpc) + +/* Servo definition for actruators_pwm driver */ + +/* BOOZ PWM0 = PWM_SERVO_5 (driver) = PWM5 (lpc) * on CAM connector */ #if USE_PWM0 -#define PWM_SERVO_0 1 +#define PWM_SERVO_5 1 +#define SERVO_REG_0 PWMMR5 #endif -/* BOOZ PWM1 = PWM_SERVO_5 (driver) = PWM2 (lpc) +/* BOOZ PWM1 = PWM_SERVO_2 (driver) = PWM2 (lpc) * on SPI connector */ #if USE_PWM1 -#define PWM_SERVO_5 1 +#define PWM_SERVO_2 1 +#define SERVO_REG_1 PWMMR2 #endif diff --git a/sw/airborne/boards/navgo_1.0.h b/sw/airborne/boards/navgo_1.0.h index f409143362..ea3ff20eee 100644 --- a/sw/airborne/boards/navgo_1.0.h +++ b/sw/airborne/boards/navgo_1.0.h @@ -88,14 +88,18 @@ #define SPI1_DRDY_EINT 0 #define SPI1_DRDY_VIC_IT VIC_EINT0 -/* NAVGO PWM0 = PWM_SERVO_5 (driver) = PWM2 (lpc) */ +/* Servo definition for actruators_pwm driver */ + +/* NAVGO PWM0 = PWM_SERVO_2 (driver) = PWM2 (lpc) */ #if USE_PWM0 -#define PWM_SERVO_5 1 +#define PWM_SERVO_2 1 +#define SERVO_REG_0 PWMMR2 #endif -/* NAVGO PWM1 = PWM_SERVO_0 (driver) = PWM5 (lpc) */ +/* NAVGO PWM1 = PWM_SERVO_5 (driver) = PWM5 (lpc) */ #if USE_PWM1 -#define PWM_SERVO_0 1 +#define PWM_SERVO_5 1 +#define SERVO_REG_1 PWMMR5 #endif #define BOARD_HAS_BARO 1