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();
+ }
}