mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-06-08 11:01:12 +08:00
Add CSC code to send ADC0/1 values via CAN bus (for vsupply monitoring), also rename
WHIRLY_ERRORCOUNTER message to WHIRLY_STATUS and send the vsupply values along with error counters
This commit is contained in:
@@ -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
|
||||
|
||||
+10
-5
@@ -1038,10 +1038,6 @@
|
||||
<field name="flap_2" type="int16"/>
|
||||
<field name="xsens1_seq" type="uint16"/>
|
||||
<field name="xsens2_seq" type="uint16"/>
|
||||
<field name="csc1_loops" type="uint32"/>
|
||||
<field name="csc1_msgs" type="uint32"/>
|
||||
<field name="csc2_loops" type="uint32"/>
|
||||
<field name="csc2_msgs" type="uint32"/>
|
||||
</message>
|
||||
|
||||
<message name="WHIRLY_ESTIMATOR" id="182">
|
||||
@@ -1068,13 +1064,22 @@
|
||||
<field name="fault2" type="uint16"/>
|
||||
</message>
|
||||
|
||||
<message name="WHIRLY_ERRORCOUNTER" id="184">
|
||||
<message name="WHIRLY_STATUS" id="184">
|
||||
<field name="whirly_timestamp" type="float"/>
|
||||
<field name="xsens1_error_ck" type="uint32"/>
|
||||
<field name="xsens2_error_ck" type="uint32"/>
|
||||
<field name="xsens1_error_mid" type="uint32"/>
|
||||
<field name="xsens2_error_mid" type="uint32"/>
|
||||
<field name="xsens1_error_seq" type="uint32"/>
|
||||
<field name="xsens2_error_seq" type="uint32"/>
|
||||
<field name="csc1_loops" type="uint32"/>
|
||||
<field name="csc1_msgs" type="uint32"/>
|
||||
<field name="csc2_loops" type="uint32"/>
|
||||
<field name="csc2_msgs" type="uint32"/>
|
||||
<field name="busvolts0_0" type="float"/>
|
||||
<field name="busvolts0_1" type="float"/>
|
||||
<field name="busvolts1_0" type="float"/>
|
||||
<field name="busvolts1_1" type="float"/>
|
||||
</message>
|
||||
|
||||
<message name="WHIRLY_IMU" id="185">
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<mode name="default">
|
||||
<message name="DL_VALUE" period="0.25"/>
|
||||
<message name="WHIRLY_MOTORCONTROL" period="0.25"/>
|
||||
<message name="WHIRLY_ERRORCOUNTER" period="0.25"/>
|
||||
<message name="WHIRLY_STATUS" period="0.25"/>
|
||||
<message name="ALIVE" period="2.1"/>
|
||||
<message name="WHIRLY_CONTROL" period="0.01"/>
|
||||
<message name="WHIRLY_IMU" period="0.001"/>
|
||||
@@ -20,7 +20,7 @@
|
||||
<mode name="raw_sensors">
|
||||
<message name="DL_VALUE" period="0.5"/>
|
||||
<message name="WHIRLY_MOTORCONTROL" period="0.33"/>
|
||||
<message name="WHIRLY_ERRORCOUNTER" period="0.33"/>
|
||||
<message name="WHIRLY_STATUS" period="0.33"/>
|
||||
<message name="WHIRLY_IMU_RAW" period="0.01"/>
|
||||
<message name="ALIVE" period="2.1"/>
|
||||
</mode>
|
||||
@@ -28,7 +28,7 @@
|
||||
<mode name="scaled_sensors">
|
||||
<message name="DL_VALUE" period="0.5"/>
|
||||
<message name="WHIRLY_MOTORCONTROL" period="0.33"/>
|
||||
<message name="WHIRLY_ERRORCOUNTER" period="0.33"/>
|
||||
<message name="WHIRLY_STATUS" period="0.33"/>
|
||||
<message name="WHIRLY_IMU" period="0.01"/>
|
||||
<message name="ALIVE" period="2.1"/>
|
||||
</mode>
|
||||
@@ -36,7 +36,7 @@
|
||||
<mode name="ahrs">
|
||||
<message name="DL_VALUE" period="0.5"/>
|
||||
<message name="WHIRLY_MOTORCONTROL" period="0.25"/>
|
||||
<message name="WHIRLY_ERRORCOUNTER" period="0.33"/>
|
||||
<message name="WHIRLY_STATUS" period="0.33"/>
|
||||
<message name="ALIVE" period="2.1"/>
|
||||
<message name="WHIRLY_ESTIMATOR" period=" .01"/>
|
||||
<message name="WHIRLY_CONTROL" period="0.01"/>
|
||||
@@ -45,7 +45,7 @@
|
||||
<mode name="setup_commands">
|
||||
<message name="DL_VALUE" period="0.5"/>
|
||||
<message name="WHIRLY_MOTORCONTROL" period="0.33"/>
|
||||
<message name="WHIRLY_ERRORCOUNTER" period="0.33"/>
|
||||
<message name="WHIRLY_STATUS" period="0.33"/>
|
||||
<message name="ALIVE" period="2.1"/>
|
||||
<message name="ACTUATORS" period="0.25"/>
|
||||
<message name="COMMANDS" period="0.25"/>
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
#ifndef CSC_ADC_H
|
||||
#define CSC_ADC_H
|
||||
|
||||
#include <inttypes.h>
|
||||
|
||||
void csc_adc_init(void);
|
||||
void csc_adc_periodic(void);
|
||||
|
||||
#endif /* CSC_ADC_H */
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user