diff --git a/conf/airframes/motor_bench.xml b/conf/airframes/motor_bench.xml index 59238fd4bb..2ff59a5e01 100644 --- a/conf/airframes/motor_bench.xml +++ b/conf/airframes/motor_bench.xml @@ -6,23 +6,24 @@ ARCHI=arm7 FLASH_MODE = IAP +MB=motor_bench main.ARCHDIR = $(ARCHI) main.ARCH = arm7tdmi -main.TARGET = mb1 -main.TARGETDIR = mb1 +main.TARGET = mb +main.TARGETDIR = mb -main.CFLAGS += -DCONFIG=\"conf_motor_bench.h\" -main.srcs = main_motor_bench.c +main.CFLAGS += -DCONFIG=\"conf_motor_bench.h\" -I$(MB) +main.srcs = $(MB)/main_motor_bench.c -main.CFLAGS += -DPERIODIC_TASK_PERIOD='SYS_TICS_OF_SEC(4e-3)' +main.CFLAGS += -DPERIODIC_TASK_PERIOD='SYS_TICS_OF_SEC(1./250.)' main.srcs += sys_time.c $(SRC_ARCH)/sys_time_hw.c main.CFLAGS += -DLED main.srcs += $(SRC_ARCH)/armVIC.c -main.CFLAGS += -DUSE_UART0 -DUART0_BAUD=B38400 +main.CFLAGS += -DUSE_UART0 -DUART0_BAUD=B115200 main.srcs += $(SRC_ARCH)/uart_hw.c main.CFLAGS += -DDOWNLINK -DDOWNLINK_TRANSPORT=PprzTransport -DDOWNLINK_DEVICE=Uart0 @@ -32,9 +33,10 @@ main.CFLAGS += -DDATALINK=PPRZ -DPPRZ_UART=Uart0 main.srcs += $(SRC_ARCH)/mb_servo.c +main.CFLAGS += -DUSE_TWI_CONTROLLER main.CFLAGS += -DI2C_SCLL=100 -DI2C_SCLH=100 #main.srcs += i2c.c $(SRC_ARCH)/i2c_hw.c $(SRC_ARCH)/mb_twi_controller.c -main.srcs += i2c.c $(SRC_ARCH)/i2c_hw.c $(SRC_ARCH)/mb_buss_twi_controller.c +main.srcs += i2c.c $(SRC_ARCH)/i2c_hw.c $(MB)/mb_twi_controller_asctech.c main.CFLAGS += -DMB_TACHO main.srcs += $(SRC_ARCH)/mb_tacho.c diff --git a/conf/settings/motor_bench_settings.xml b/conf/settings/motor_bench_settings.xml index 778950f946..2aaa9258d7 100644 --- a/conf/settings/motor_bench_settings.xml +++ b/conf/settings/motor_bench_settings.xml @@ -5,5 +5,12 @@ + + + + + diff --git a/sw/airborne/motor_bench/mb_twi_controller_asctech.c b/sw/airborne/motor_bench/mb_twi_controller_asctech.c index 77ac54a9c7..a010a3508b 100644 --- a/sw/airborne/motor_bench/mb_twi_controller_asctech.c +++ b/sw/airborne/motor_bench/mb_twi_controller_asctech.c @@ -1,14 +1,11 @@ #include "mb_twi_controller.h" +#include "mb_twi_controller_asctech.h" #include "i2c.h" #include "led.h" bool_t mb_twi_controller_asctech_command; -#define MB_TWI_CONTROLLER_COMMAND_NONE 0 -#define MB_TWI_CONTROLLER_COMMAND_SET_ADDR 1 -#define MB_TWI_CONTROLLER_COMMAND_TEST 2 -#define MB_TWI_CONTROLLER_COMMAND_REVERSE 3 uint8_t mb_twi_controller_asctech_command_type; #define MB_TWI_CONTROLLER_ASCTECH_ADDR_FRONT 0 @@ -16,6 +13,7 @@ uint8_t mb_twi_controller_asctech_command_type; #define MB_TWI_CONTROLLER_ASCTECH_ADDR_LEFT 2 #define MB_TWI_CONTROLLER_ASCTECH_ADDR_RIGHT 3 uint8_t mb_twi_controller_asctech_addr; +uint8_t mb_twi_controller_asctech_new_addr; uint8_t mb_twi_nb_overun; uint8_t mb_twi_i2c_done; @@ -37,6 +35,15 @@ void mb_twi_controller_set( float throttle ) { if (mb_twi_controller_asctech_command) { mb_twi_controller_asctech_command = FALSE; switch (mb_twi_controller_asctech_command_type) { + + case MB_TWI_CONTROLLER_COMMAND_TEST : + i2c_buf[0] = 251; + i2c_buf[1] = mb_twi_controller_asctech_addr; + i2c_buf[2] = 0; + i2c_buf[3] = 231 + mb_twi_controller_asctech_addr; + i2c_transmit(MB_TWI_CONTROLLER_ADDR, 4, &mb_twi_i2c_done); + break; + case MB_TWI_CONTROLLER_COMMAND_REVERSE : i2c_buf[0] = 254; i2c_buf[1] = mb_twi_controller_asctech_addr; @@ -44,6 +51,17 @@ void mb_twi_controller_set( float throttle ) { i2c_buf[3] = 234 + mb_twi_controller_asctech_addr; i2c_transmit(MB_TWI_CONTROLLER_ADDR, 4, &mb_twi_i2c_done); break; + + case MB_TWI_CONTROLLER_COMMAND_SET_ADDR : + i2c_buf[0] = 250; + i2c_buf[1] = mb_twi_controller_asctech_addr; + i2c_buf[2] = mb_twi_controller_asctech_new_addr; + i2c_buf[3] = 230 + mb_twi_controller_asctech_addr + + mb_twi_controller_asctech_new_addr; + mb_twi_controller_asctech_addr = mb_twi_controller_asctech_new_addr; + i2c_transmit(MB_TWI_CONTROLLER_ADDR, 4, &mb_twi_i2c_done); + break; + } } else { diff --git a/sw/airborne/motor_bench/mb_twi_controller_asctech.h b/sw/airborne/motor_bench/mb_twi_controller_asctech.h index f6bc66d59a..c48b523738 100644 --- a/sw/airborne/motor_bench/mb_twi_controller_asctech.h +++ b/sw/airborne/motor_bench/mb_twi_controller_asctech.h @@ -1,12 +1,28 @@ #ifndef MB_TWI_CONTROLLER_ASCTECH_H #define MB_TWI_CONTROLLER_ASCTECH_H + +#define MB_TWI_CONTROLLER_COMMAND_NONE 0 +#define MB_TWI_CONTROLLER_COMMAND_TEST 1 +#define MB_TWI_CONTROLLER_COMMAND_REVERSE 2 +#define MB_TWI_CONTROLLER_COMMAND_SET_ADDR 3 + + extern bool_t mb_twi_controller_asctech_command; extern uint8_t mb_twi_controller_asctech_command_type; +extern uint8_t mb_twi_controller_asctech_addr; +extern uint8_t mb_twi_controller_asctech_new_addr; #define mb_twi_controller_asctech_SetCommand(value) { \ mb_twi_controller_asctech_command = TRUE; \ mb_twi_controller_asctech_command_type = value; \ } +#define mb_twi_controller_asctech_SetAddr(value) { \ + mb_twi_controller_asctech_command = TRUE; \ + mb_twi_controller_asctech_command_type = MB_TWI_CONTROLLER_COMMAND_SET_ADDR; \ + mb_twi_controller_asctech_new_addr = value; \ + } + + #endif /* MB_TWI_CONTROLLER_ASCTECH_H */