diff --git a/conf/autopilot/csc.makefile b/conf/autopilot/csc.makefile index 6a6d30ee9b..35ba2ebff5 100644 --- a/conf/autopilot/csc.makefile +++ b/conf/autopilot/csc.makefile @@ -53,15 +53,15 @@ csc.CFLAGS += -DLED -DTIME_LED=1 csc.CFLAGS += -DCSC_BOARD_ID=$(CSC_ID) - csc.CFLAGS += -DPERIODIC_TASK_PERIOD='SYS_TICS_OF_SEC((1./512.))' -DTIMER0_VIC_SLOT=1 csc.srcs += sys_time.c $(SRC_ARCH)/sys_time_hw.c $(SRC_ARCH)/armVIC.c csc.srcs += $(SRC_ARCH)/uart_hw.c - +csc.srcs += $(SRC_ARCH)/adc_hw.c +csc.CFLAGS += -DADC -DUSE_AD0 -DUSE_AD0_0 -DUSE_AD0_1 csc.CFLAGS += -DUSE_UART0 -DUART0_BAUD=B57600 -DUART0_VIC_SLOT=5 -csc.CFLAGS += -DUSE_UART1 -DUART1_BAUD=B57600 -DUART1_VIC_SLOT=6 +#csc.CFLAGS += -DUSE_UART1 -DUART1_BAUD=B57600 -DUART1_VIC_SLOT=6 #csc.CFLAGS += -DDOWNLINK -DDOWNLINK_TRANSPORT=PprzTransport \ # -DDOWNLINK_DEVICE=Uart0 #csc.srcs += downlink.c pprz_transport.c @@ -81,6 +81,8 @@ csc.srcs += $(SRC_CSC)/csc_ap_link.c csc.srcs += $(SRC_CSC)/csc_servos.c +csc.srcs += $(SRC_CSC)/csc_adc.c + csc.CFLAGS += -DTHROTTLE_LINK=Uart0 -DTHROTTLE_LED=3 csc.srcs += $(SRC_CSC)/csc_throttle.c @@ -137,28 +139,3 @@ test_can1.CFLAGS += -DCAN1_VIC_SLOT=3 -DCAN1_ERR_VIC_SLOT=7 test_can1.srcs += $(SRC_CSC)/csc_can.c test_can1.CFLAGS += -DCSC_BOARD_ID=0 - - -# -# TEST CAN2 -# - -test_can2.ARCHDIR = $(ARCHI) -test_can2.ARCH = arm7tdmi -test_can2.TARGET = test_can2 -test_can2.TARGETDIR = test_can2 - - -test_can2.CFLAGS += -I$(SRC_CSC) -test_can2.CFLAGS += -DCONFIG=$(BOARD_CFG) -test_can2.srcs += $(SRC_CSC)/test_can2.c -test_can2.CFLAGS += -DLED - -# -DTIME_LED=1 -test_can2.CFLAGS += -DPERIODIC_TASK_PERIOD='SYS_TICS_OF_SEC((1./512.))' -DTIMER0_VIC_SLOT=1 -test_can2.srcs += sys_time.c $(SRC_ARCH)/sys_time_hw.c $(SRC_ARCH)/armVIC.c - -test_can2.CFLAGS += -DUSE_CAN2 -DCAN2_BTR=CANBitrate125k_2MHz -test_can2.CFLAGS += -DCAN2_VIC_SLOT=3 -DCAN2_ERR_VIC_SLOT=7 -test_can2.srcs += $(SRC_CSC)/csc_can.c -test_can2.CFLAGS += -DCSC_BOARD_ID=0 diff --git a/conf/messages.xml b/conf/messages.xml index d63b30922b..a3ace5470e 100644 --- a/conf/messages.xml +++ b/conf/messages.xml @@ -1038,10 +1038,6 @@ - - - - @@ -1068,13 +1064,22 @@ - + + + + + + + + + + diff --git a/conf/telemetry/telemetry_whirly.xml b/conf/telemetry/telemetry_whirly.xml index ce2c721b69..f729f4c4f4 100644 --- a/conf/telemetry/telemetry_whirly.xml +++ b/conf/telemetry/telemetry_whirly.xml @@ -8,7 +8,7 @@ - + @@ -20,7 +20,7 @@ - + @@ -28,7 +28,7 @@ - + @@ -36,7 +36,7 @@ - + @@ -45,7 +45,7 @@ - + diff --git a/sw/airborne/csc/csc_adc.c b/sw/airborne/csc/csc_adc.c new file mode 100644 index 0000000000..4466cbd278 --- /dev/null +++ b/sw/airborne/csc/csc_adc.c @@ -0,0 +1,30 @@ +#include "csc_adc.h" +#include "csc_ap_link.h" + +#include "LPC21xx.h" +#include "led.h" +#include "adc.h" + +struct adc_buf adc0; +struct adc_buf adc1; + +#define ADC_VDIV 5.7 +#define ADC_VOLT 3.28 +#define ADC_FACTOR 1024.0 * ADC_VOLT * ADC_VDIV + +#define ADC_AV_NB 8 + +void csc_adc_init(void) +{ + adc_init(); + adc_buf_channel(0, &adc0, ADC_AV_NB); + adc_buf_channel(1, &adc1, ADC_AV_NB); +} + +void csc_adc_periodic(void) +{ + float v1 = adc0.sum / adc0.av_nb_sample / ADC_FACTOR; + float v2 = adc1.sum / adc1.av_nb_sample / ADC_FACTOR; + csc_ap_link_send_adc(v1, v2); +} + diff --git a/sw/airborne/csc/csc_adc.h b/sw/airborne/csc/csc_adc.h new file mode 100644 index 0000000000..622556c2ce --- /dev/null +++ b/sw/airborne/csc/csc_adc.h @@ -0,0 +1,10 @@ +#ifndef CSC_ADC_H +#define CSC_ADC_H + +#include + +void csc_adc_init(void); +void csc_adc_periodic(void); + +#endif /* CSC_ADC_H */ + diff --git a/sw/airborne/csc/csc_ap_link.c b/sw/airborne/csc/csc_ap_link.c index cc5f711a1a..f77f4933cc 100644 --- a/sw/airborne/csc/csc_ap_link.c +++ b/sw/airborne/csc/csc_ap_link.c @@ -8,6 +8,16 @@ int32_t csc_ap_link_error_cnt; static void (* servo_msg_cb)(struct CscServoCmd *); static void (* motor_msg_cb)(struct CscMotorMsg *); +void csc_ap_link_send_adc(float adc1, float adc2) +{ + struct CscADCMsg msg; + + msg.ADCVolts1 = adc1; + msg.ADCVolts2 = adc2; + + csc_ap_send_msg(CSC_BOARD_ADCVOLTS_ID, &msg, sizeof(msg)); +} + void csc_ap_link_send_status(uint32_t loops, uint32_t msgs) { diff --git a/sw/airborne/csc/csc_ap_link.h b/sw/airborne/csc/csc_ap_link.h index 45d228ff45..215d64d4b1 100644 --- a/sw/airborne/csc/csc_ap_link.h +++ b/sw/airborne/csc/csc_ap_link.h @@ -12,6 +12,7 @@ extern int32_t csc_ap_link_error_cnt; void csc_ap_link_init(void); void csc_ap_send_msg(uint8_t msg_id, const uint8_t *buf, uint8_t len); void csc_ap_link_send_status(uint32_t loops, uint32_t msgs); +void csc_ap_link_send_adc(float adc1, float adc2); void csc_ap_link_set_servo_cmd_cb(void (* cb)(struct CscServoCmd *cmd)); void csc_ap_link_set_motor_cmd_cb(void (* cb)(struct CscMotorMsg *msg)); diff --git a/sw/airborne/csc/csc_main.c b/sw/airborne/csc/csc_main.c index 271f7ceffa..56776ec26d 100644 --- a/sw/airborne/csc/csc_main.c +++ b/sw/airborne/csc/csc_main.c @@ -37,6 +37,7 @@ #include "csc_servos.h" #include "csc_throttle.h" +#include "csc_adc.h" #include "csc_can.h" #include "csc_ap_link.h" @@ -44,7 +45,7 @@ static inline void on_servo_cmd(struct CscServoCmd *cmd); static inline void on_motor_cmd(struct CscMotorMsg *msg); #define SERVO_TIMEOUT (SYS_TICS_OF_SEC(0.1) / PERIODIC_TASK_PERIOD) -#define CSC_STATUS_TIMEOUT (SYS_TICS_OF_SEC(0.2) / PERIODIC_TASK_PERIOD) +#define CSC_STATUS_TIMEOUT (SYS_TICS_OF_SEC(0.25) / PERIODIC_TASK_PERIOD) static uint32_t servo_cmd_timeout = 0; static uint32_t can_msg_count = 0; @@ -75,6 +76,8 @@ STATIC_INLINE void csc_main_init( void ) { csc_ap_link_set_servo_cmd_cb(on_servo_cmd); csc_ap_link_set_motor_cmd_cb(on_motor_cmd); + csc_adc_init(); + csc_servos_init(); csc_throttle_init(); int_enable(); @@ -96,6 +99,9 @@ STATIC_INLINE void csc_main_periodic( void ) { if ((++csc_loops % CSC_STATUS_TIMEOUT) == 0) { csc_ap_link_send_status(csc_loops, can_msg_count); } + if ((++csc_loops % CSC_STATUS_TIMEOUT) == 0) { + csc_adc_periodic(); + } }