[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[paparazzi-commits] [5410] More CSC updates from Tobias (merging battery
From: |
Allen Ibara |
Subject: |
[paparazzi-commits] [5410] More CSC updates from Tobias (merging battery monitor code into main ) |
Date: |
Tue, 17 Aug 2010 04:37:47 +0000 |
Revision: 5410
http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=5410
Author: aibara
Date: 2010-08-17 04:37:47 +0000 (Tue, 17 Aug 2010)
Log Message:
-----------
More CSC updates from Tobias (merging battery monitor code into main)
Modified Paths:
--------------
paparazzi3/trunk/sw/airborne/csc/csc_ap_link.c
paparazzi3/trunk/sw/airborne/csc/csc_ap_link.h
paparazzi3/trunk/sw/airborne/csc/csc_msg_def.h
paparazzi3/trunk/sw/airborne/csc/csc_telemetry.h
paparazzi3/trunk/sw/airborne/csc/mercury_csc_main.c
Modified: paparazzi3/trunk/sw/airborne/csc/csc_ap_link.c
===================================================================
--- paparazzi3/trunk/sw/airborne/csc/csc_ap_link.c 2010-08-17 04:37:37 UTC
(rev 5409)
+++ paparazzi3/trunk/sw/airborne/csc/csc_ap_link.c 2010-08-17 04:37:47 UTC
(rev 5410)
@@ -58,19 +58,45 @@
csc_ap_send_msg(CSC_PRESSURE_MSG_ID, (const uint8_t *) &msg, sizeof(msg));
}
-void csc_ap_link_send_baro(uint32_t pressure, uint16_t temperature, uint8_t
status)
+void csc_ap_link_send_airspeed(float airspeed, uint8_t sensor_id)
{
+ struct CscAirspeedMsg msg;
+
+ msg.airspeed = airspeed;
+ msg.sensor_addr = sensor_id;
+
+ csc_ap_send_msg(CSC_AIRSPEED_MSG_ID, (const uint8_t *) &msg, sizeof(msg));
+}
+
+
+void csc_ap_link_send_baro(uint32_t pressure, uint16_t temperature, uint8_t
status, uint8_t sensor_addr)
+{
+
struct CscBaroMsg msg;
msg.baro_pressure = pressure;
msg.baro_temperature = temperature;
msg.baro_status = status;
+ msg.baro_sensor_addr = sensor_addr;
csc_ap_send_msg(CSC_BARO_MSG_ID, (const uint8_t *) &msg, sizeof(msg));
}
+void csc_ap_link_send_bat(uint16_t volts, uint16_t amps, uint8_t msgctr)
+{
+
+ struct CscBatMsg msg;
+
+ msg.volts = volts;
+ msg.amps = amps;
+ msg.msgctr = msgctr;
+
+ csc_ap_send_msg(CSC_BAT_MSG_ID, (const uint8_t *) &msg, sizeof(msg));
+}
+
+
// Generic function for sending can messages
void can_write_csc(uint8_t board_id, uint8_t msg_id, const uint8_t *buf,
uint8_t len)
{
Modified: paparazzi3/trunk/sw/airborne/csc/csc_ap_link.h
===================================================================
--- paparazzi3/trunk/sw/airborne/csc/csc_ap_link.h 2010-08-17 04:37:37 UTC
(rev 5409)
+++ paparazzi3/trunk/sw/airborne/csc/csc_ap_link.h 2010-08-17 04:37:47 UTC
(rev 5410)
@@ -16,7 +16,8 @@
void csc_ap_link_send_adc(float adc1, float adc2);
void csc_ap_link_send_vane(float *vane_angle);
void csc_ap_link_send_pressure(float pressure1, float pressure2);
-void csc_ap_link_send_baro(uint32_t pressure, uint16_t temp, uint8_t status);
+void csc_ap_link_send_airspeed(float airspeed, uint8_t sensor_id);
+void csc_ap_link_send_baro(uint32_t pressure, uint16_t temp, uint8_t status,
uint8_t sensor_addr);
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));
void csc_ap_link_set_prop_cmd_cb(void (* cb)(struct CscPropCmd *cmd, int idx));
@@ -24,6 +25,7 @@
void csc_ap_link_set_gpsfix_cb(void (* cb)(struct CscGPSFixMsg *msg));
void csc_ap_link_set_gpspos_cb(void (* cb)(struct CscGPSPosMsg *msg));
void csc_ap_link_set_gpsacc_cb(void (* cb)(struct CscGPSAccMsg *msg));
+void csc_ap_link_send_bat(uint16_t volts, uint16_t amps, uint8_t msgctr);
#endif /* CSC_AP_LINK_H */
Modified: paparazzi3/trunk/sw/airborne/csc/csc_msg_def.h
===================================================================
--- paparazzi3/trunk/sw/airborne/csc/csc_msg_def.h 2010-08-17 04:37:37 UTC
(rev 5409)
+++ paparazzi3/trunk/sw/airborne/csc/csc_msg_def.h 2010-08-17 04:37:47 UTC
(rev 5410)
@@ -3,25 +3,30 @@
#include "paparazzi.h"
-#define CSC_GPS_AXIS_IDX_X 0
-#define CSC_GPS_AXIS_IDX_Y 1
-#define CSC_GPS_AXIS_IDX_Z 2
+#define CSC_GPS_AXIS_IDX_X 0
+#define CSC_GPS_AXIS_IDX_Y 1
+#define CSC_GPS_AXIS_IDX_Z 2
-#define CSC_SERVO_CMD_ID 0
-#define CSC_MOTOR_CMD_ID 1
-#define CSC_PROP_CMD_ID 2
-#define CSC_MOTOR_STATUS_ID 3
-#define CSC_BOARD_STATUS_ID 4
-#define CSC_BOARD_ADCVOLTS_ID 5
-#define CSC_RC_ID 6
-#define CSC_GPS_FIX_ID 7
-#define CSC_GPS_POS_ID 8
-#define CSC_GPS_ACC_ID 9
-#define CSC_PROP2_CMD_ID 10
-#define CSC_VANE_MSG_ID 11
-#define CSC_PRESSURE_MSG_ID 12
-#define CSC_BARO_MSG_ID 13
-#define CSC_ID_COUNT 14
+typedef enum {
+ CSC_SERVO_CMD_ID = 0,
+ CSC_MOTOR_CMD_ID = 1,
+ CSC_PROP_CMD_ID = 2,
+ CSC_MOTOR_STATUS_ID = 3,
+ CSC_BOARD_STATUS_ID = 4,
+ CSC_BOARD_ADCVOLTS_ID = 5,
+ CSC_RC_ID
= 6,
+ CSC_GPS_FIX_ID = 7,
+ CSC_GPS_POS_ID = 8,
+ CSC_GPS_ACC_ID = 9,
+ CSC_PROP2_CMD_ID = 10,
+ CSC_VANE_MSG_ID = 11,
+ CSC_PRESSURE_MSG_ID = 12,
+ CSC_BARO_MSG_ID = 13,
+ CSC_BAT_MSG_ID = 14,
+ CSC_AIRSPEED_MSG_ID = 15,
+
+ CSC_ID_COUNT
+} csc_can_msg_id;
/* Received from the autopilot */
struct CscServoCmd {
@@ -86,10 +91,29 @@
float pressure2;
} __attribute__((packed));
+/*
+struct CscAirspeedMsg {
+ float airspeed1;
+ float airspeed2;
+} __attribute__((packed));
+*/
+
+struct CscAirspeedMsg {
+ float airspeed;
+ uint8_t sensor_addr;
+} __attribute__((packed));
+
+struct CscBatMsg {
+ uint16_t volts;
+ uint16_t amps;
+ uint8_t msgctr;
+} __attribute__((packed));
+
struct CscBaroMsg {
uint32_t baro_pressure;
uint16_t baro_temperature;
uint8_t baro_status;
+ uint8_t baro_sensor_addr;
} __attribute__((packed));
#define CSC_RC_SCALE 20
Modified: paparazzi3/trunk/sw/airborne/csc/csc_telemetry.h
===================================================================
--- paparazzi3/trunk/sw/airborne/csc/csc_telemetry.h 2010-08-17 04:37:37 UTC
(rev 5409)
+++ paparazzi3/trunk/sw/airborne/csc/csc_telemetry.h 2010-08-17 04:37:47 UTC
(rev 5410)
@@ -32,7 +32,6 @@
#include "downlink.h"
#include "settings.h"
-#include "booz/booz2_gps.h"
#define PERIODIC_SEND_DL_VALUE(_chan) PeriodicSendDlValue(_chan)
Modified: paparazzi3/trunk/sw/airborne/csc/mercury_csc_main.c
===================================================================
--- paparazzi3/trunk/sw/airborne/csc/mercury_csc_main.c 2010-08-17 04:37:37 UTC
(rev 5409)
+++ paparazzi3/trunk/sw/airborne/csc/mercury_csc_main.c 2010-08-17 04:37:47 UTC
(rev 5410)
@@ -31,6 +31,7 @@
#include "init_hw.h"
#include "sys_time.h"
#include "led.h"
+
#include "csc_vane.h"
#ifdef USE_BUSS_TWI_BLMC_MOTOR
@@ -48,17 +49,22 @@
#include "interrupt_hw.h"
#include "uart.h"
#include "csc_telemetry.h"
+
#include "periodic.h"
#include "downlink.h"
+
#include "pwm_input.h"
#include "csc_airspeed.h"
#include "csc_baro.h"
+#include "csc_bat_monitor.h"
#include "csc_adc.h"
+
#include "csc_rc_spektrum.h"
#include "csc_can.h"
#include "csc_ap_link.h"
+
static inline void on_servo_cmd(struct CscServoCmd *cmd);
static inline void on_motor_cmd(struct CscMotorMsg *msg);
static inline void on_prop_cmd(struct CscPropCmd *msg, int idx);
@@ -67,192 +73,201 @@
#define CSC_STATUS_TIMEOUT (SYS_TICS_OF_SEC(0.25) / PERIODIC_TASK_PERIOD)
#define AIRSPEED_TIMEOUT (SYS_TICS_OF_SEC(0.01) / PERIODIC_TASK_PERIOD)
+
static uint32_t servo_cmd_timeout = 0;
static uint32_t can_msg_count = 0;
static void csc_main_init( void ) {
- hw_init();
- sys_time_init();
- led_init();
+ hw_init();
+ sys_time_init();
+ led_init();
+
+ actuators_init();
-
- actuators_init();
- csc_servos_init();
-
-
+
#ifdef USE_UART0
- Uart0Init();
+ Uart0Init();
#endif
-
+
#ifdef USE_UART1
- Uart1Init();
+ Uart1Init();
#endif
#ifdef SPEKTRUM_LINK
- spektrum_init();
+ spektrum_init();
#endif
#ifdef USE_PWM_INPUT
- pwm_input_init();
+ pwm_input_init();
#endif
- csc_ap_link_init();
- csc_ap_link_set_servo_cmd_cb(on_servo_cmd);
- csc_ap_link_set_motor_cmd_cb(on_motor_cmd);
- csc_ap_link_set_prop_cmd_cb(on_prop_cmd);
+// be sure to call servos_init after uart1 init since they are sharing pins
+#ifdef USE_VANE_SENSOR
+ csc_servos_init();
+#endif
+
+ csc_ap_link_init();
+ csc_ap_link_set_servo_cmd_cb(on_servo_cmd);
+ csc_ap_link_set_motor_cmd_cb(on_motor_cmd);
+ csc_ap_link_set_prop_cmd_cb(on_prop_cmd);
+
#ifdef ADC
- csc_adc_init();
+ csc_adc_init();
#endif
+
+
+#ifdef USE_I2C0
+ i2c0_init();
+#endif
- // be sure to call servos_init after uart1 init since they are sharing pins
- #ifdef USE_I2C0
- i2c0_init();
- #endif
+#ifdef USE_BUSS_TWI_BLMC_MOTOR
+ motors_init();
+#endif
- #ifdef USE_BUSS_TWI_BLMC_MOTOR
- motors_init();
- #endif
-
#ifdef USE_AIRSPEED
- airspeed_init();
+ airspeed_init();
#endif
-
#ifdef USE_AIRSPEED_ETS
- airspeed_ets_init();
+ airspeed_ets_init();
#endif
#ifdef USE_BARO_ETS
- baro_ets_init();
+ baro_ets_init();
#endif
#ifdef USE_AMS5812
- csc_ams5812_init();
+ csc_ams5812_init();
#endif
#ifdef USE_BARO_SCP
- baro_scp_init();
+ baro_scp_init();
#endif
- int_enable();
+#ifdef USE_BAT_MONITOR
+ csc_bat_monitor_init();
+#endif
+
+ int_enable();
+
}
+static void csc_main_periodic( void )
+{
+ static uint32_t zeros[4] = {0, 0, 0, 0};
+ static uint32_t csc_loops = 0;
-static void csc_main_periodic( void ) {
- static uint32_t zeros[4] = {0, 0, 0, 0};
- static uint32_t csc_loops = 0;
+#ifdef DOWNLINK
+ PeriodicSendAp(DefaultChannel);
+#endif
- #ifdef DOWNLINK
- PeriodicSendAp(DefaultChannel);
- #endif
-
- #ifdef USE_VANE_SENSOR
- csc_vane_periodic();
- #endif
-
- if (servo_cmd_timeout > SERVO_TIMEOUT) {
- csc_servos_set(zeros);
- } else {
- servo_cmd_timeout++;
- }
-
- if ((++csc_loops % CSC_STATUS_TIMEOUT) == 0) {
- csc_ap_link_send_status(csc_loops, can_msg_count);
- }
-#ifdef ADC
- csc_adc_periodic();
+#ifdef USE_VANE_SENSOR
+ csc_vane_periodic();
#endif
- if ((csc_loops % AIRSPEED_TIMEOUT) == 0) {
+ if (servo_cmd_timeout > SERVO_TIMEOUT) {
+ csc_servos_set(zeros);
+ } else {
+ servo_cmd_timeout++;
+ }
+
+ if ((++csc_loops % CSC_STATUS_TIMEOUT) == 0) {
+ csc_ap_link_send_status(csc_loops, can_msg_count);
+ }
+
+ csc_adc_periodic();
+
+ if ((csc_loops % AIRSPEED_TIMEOUT) == 0) {
#ifdef USE_AIRSPEED_ETS
- airspeed_ets_periodic();
+ airspeed_ets_periodic();
#endif
#ifdef USE_BARO_ETS
- baro_ets_read();
+ baro_ets_read();
#endif
- } else if ((csc_loops % AIRSPEED_TIMEOUT) == 1) {
+ } else if ((csc_loops % AIRSPEED_TIMEOUT) == 1) {
#ifdef USE_BARO_ETS
- baro_ets_periodic();
+ baro_ets_periodic();
#endif
#ifdef USE_AIRSPEED_ETS
- airspeed_ets_read();
+ airspeed_ets_read();
#endif
#ifdef USE_AIRSPEED
- csc_airspeed_periodic();
+ csc_airspeed_periodic();
#endif
#ifdef USE_AMS5812
- csc_ams5812_periodic();
- csc_ap_link_send_pressure(ams5812_pressure[0], ams5812_pressure[1]);
+ csc_ams5812_periodic();
+ csc_ap_link_send_pressure(ams5812_pressure[0],
ams5812_pressure[1]);
#endif
- }
+ }
#ifdef USE_AIRSPEED
- airspeed_update();
+ airspeed_update();
#endif
+
#ifdef USE_BARO_SCP
- baro_scp_periodic();
- csc_ap_link_send_baro(baro_scp_pressure, baro_scp_temperature,
baro_scp_status);
+ baro_scp_periodic();
+ csc_ap_link_send_baro(baro_scp_pressure, baro_scp_temperature,
baro_scp_status);
#endif
+
+#ifdef USE_BAT_MONITOR
+ csc_bat_monitor_periodic();
+#endif
+
}
static void csc_main_event( void ) {
+ csc_can_event();
- csc_can_event();
#ifdef USE_BUSS_TWI_BLMC_MOTOR
- motors_event();
+ motors_event();
#endif
+
#ifdef SPEKTRUM_LINK
- spektrum_event_task();
+ spektrum_event_task();
#endif
}
-
#define MIN_SERVO SYS_TICS_OF_USEC(1000)
#define MAX_SERVO SYS_TICS_OF_USEC(2000)
#ifdef USE_BUSS_TWI_BLMC_MOTOR
static void on_prop_cmd(struct CscPropCmd *cmd, int idx)
{
- for(uint8_t i = 0; i < 4; i++)
- motors_set_motor(i + idx * 4, cmd->speeds[i]);
-
- motors_commit(idx == 1);
+ for(uint8_t i = 0; i < 4; i++)
+ motors_set_motor(i + idx * 4, cmd->speeds[i]);
- ++can_msg_count;
-}
+ motors_commit(idx == 1);
+
+ ++can_msg_count;
+}
#else
static void on_prop_cmd(struct CscPropCmd *cmd, int idx) {}
#endif
-
static void on_servo_cmd(struct CscServoCmd *cmd)
{
+ uint16_t* servos = (uint16_t*)(cmd);
+ uint8_t i;
- uint16_t* servos = (uint16_t*)(cmd);
- uint8_t i;
-
- // uint32_t servos_checked[4];
- for(i = 0; i < 4; i++)
- csc_servo_normalized_set(i,servos[i]);
- csc_servos_commit();
-
- servo_cmd_timeout = 0;
-
- ++can_msg_count;
+ // uint32_t servos_checked[4];
+ for(i = 0; i < 4; i++) {
+ csc_servo_normalized_set(i,servos[i]);
+ }
+ csc_servos_commit();
+ servo_cmd_timeout = 0;
+ ++can_msg_count;
}
+static void on_motor_cmd(struct CscMotorMsg *msg) {}
-static void on_motor_cmd(struct CscMotorMsg *msg)
-{
-
-}
-
int main( void ) {
- csc_main_init();
- while(1) {
- if (sys_time_periodic())
- csc_main_periodic();
- csc_main_event();
- }
- return 0;
+ csc_main_init();
+// Uart0PrintString("Hello");
+ while(1) {
+ if (sys_time_periodic()) {
+ csc_main_periodic();
+ }
+ csc_main_event();
+ }
+ return 0;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [paparazzi-commits] [5410] More CSC updates from Tobias (merging battery monitor code into main ),
Allen Ibara <=