mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-06-06 16:58:48 +08:00
still not finished
This commit is contained in:
+1
-1
@@ -56,7 +56,7 @@ UISP_FLAGS = $(ISP_FLAGS)
|
||||
|
||||
|
||||
CFLAGS = \
|
||||
-W -Wall \
|
||||
-Werror -W -Wall \
|
||||
$(ATMEL_INCLUDES) \
|
||||
$(INCLUDES) \
|
||||
-Wstrict-prototypes \
|
||||
|
||||
@@ -74,6 +74,7 @@
|
||||
<set servo="MOTOR_RIGHT" value="$throttle + $roll + $yaw"/>
|
||||
<set servo="MOTOR_LEFT" value="$throttle - $roll + $yaw"/>
|
||||
</command_laws>
|
||||
|
||||
<section name="INFRARED" prefix="IR_">
|
||||
<define name="ADC_ROLL_NEUTRAL" value="0"/>
|
||||
<define name="ADC_PITCH_NEUTRAL" value="1024"/>
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
<section name="control board">
|
||||
<define name="AVR_ARCH" value="1"/>
|
||||
</section>
|
||||
|
||||
<section name="adc" prefix="ADC_CHANNEL_">
|
||||
<define name="IR1" value="1"/>
|
||||
<define name="IR2" value="2"/>
|
||||
@@ -20,13 +21,15 @@
|
||||
<axis name="ROLL" failsafe_value="0"/>
|
||||
<axis name="PITCH" failsafe_value="0"/>
|
||||
<axis name="YAW" failsafe_value="0"/>
|
||||
<axis name="MODE" failsafe_value="0"/>
|
||||
<axis name="GAIN1" failsafe_value="0"/>
|
||||
<axis name="GAIN2" failsafe_value="0"/>
|
||||
<axis name="SWITCH1" failsafe_value="0"/>
|
||||
<axis name="CALIB" failsafe_value="0"/>
|
||||
</commands>
|
||||
|
||||
<radio_laws>
|
||||
<set command="THROTTLE" value="@THROTTLE"/>
|
||||
<set command="ROLL" value="@ROLL"/>
|
||||
<set command="PITCH" value="@PITCH"/>
|
||||
<set command="YAW" value="@YAW"/>
|
||||
</radio_laws>
|
||||
|
||||
<command_laws>
|
||||
<set servo="GAZ" value="2 * @THROTTLE"/>
|
||||
<set servo="ELEVATOR" value="@PITCH"/>
|
||||
|
||||
@@ -20,4 +20,4 @@ fbw.HIGH_FUSE = cb
|
||||
fbw.EXT_FUSE = ff
|
||||
fbw.LOCK_FUSE = ff
|
||||
fbw.CFLAGS += -DFBW -DMCU_SPI_LINK -DACTUATORS=\"servos_4017.h\"
|
||||
fbw.srcs = $(SRC_ARCH)/ppm_hw.c inter_mcu.c $(SRC_ARCH)/servo.c $(SRC_ARCH)/spi_fbw.c $(SRC_ARCH)/uart_fbw.c $(SRC_ARCH)/adc_fbw.c sys_time.c main_fbw.c main.c
|
||||
fbw.srcs = $(SRC_ARCH)/ppm_hw.c inter_mcu.c $(SRC_ARCH)/servos_4017.c $(SRC_ARCH)/spi_fbw.c $(SRC_ARCH)/uart_fbw.c $(SRC_ARCH)/adc_fbw.c sys_time.c main_fbw.c main.c
|
||||
|
||||
@@ -40,7 +40,6 @@ static const pprz_t failsafe_values[COMMANDS_NB] = COMMANDS_FAILSAFE;
|
||||
#define ChopServo(x,a,b) Chop(x, a, b)
|
||||
|
||||
#define COMMAND(i) servo_widths[i]
|
||||
#define SERVOS_TICS_OF_USEC(s) SYS_TICS_OF_USEC(s)
|
||||
/*
|
||||
* We use the output compare registers to generate our servo pulses.
|
||||
* These should be connected to a decade counter that routes the
|
||||
|
||||
@@ -48,8 +48,8 @@ static volatile uint8_t idx_buf = 0;
|
||||
static volatile uint16_t crc_in, crc_out;
|
||||
|
||||
void spi_init(void) {
|
||||
from_fbw.status = 0;
|
||||
from_fbw.nb_err = 0;
|
||||
from_fbw.from_fbw.status = 0;
|
||||
from_fbw.from_fbw.nb_err = 0;
|
||||
|
||||
/* set it pin output */
|
||||
// IT_DDR |= _BV(IT_PIN);
|
||||
@@ -67,7 +67,7 @@ void spi_reset(void) {
|
||||
crc_in = CRC_INIT;
|
||||
crc_out = CRC_INIT;
|
||||
|
||||
uint8_t first_byte = ((uint8_t*)&from_fbw)[0];
|
||||
uint8_t first_byte = ((uint8_t*)&from_fbw.from_fbw)[0];
|
||||
crc_out = CrcUpdate(crc_out, first_byte);
|
||||
SPDR = first_byte;
|
||||
|
||||
@@ -93,7 +93,7 @@ SIGNAL(SIG_SPI) {
|
||||
if (crc_in1 == Crc1(crc_in) && tmp == Crc2(crc_in))
|
||||
from_ap_receive_valid = TRUE;
|
||||
else
|
||||
from_fbw.nb_err++;
|
||||
from_fbw.from_fbw.nb_err++;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -109,7 +109,7 @@ SIGNAL(SIG_SPI) {
|
||||
/* we are sending/receiving payload */
|
||||
if (idx_buf < FRAME_LENGTH - 2) {
|
||||
/* place new payload byte in send register */
|
||||
tmp = ((uint8_t*)&from_fbw)[idx_buf];
|
||||
tmp = ((uint8_t*)&from_fbw.from_fbw)[idx_buf];
|
||||
SPDR = tmp;
|
||||
crc_out = CrcUpdate(crc_out, tmp);
|
||||
}
|
||||
|
||||
@@ -95,7 +95,7 @@ typedef union {
|
||||
#define STATUS_AUTO_OK 0
|
||||
|
||||
/** Two bytes for the CRC */
|
||||
#define FRAME_LENGTH (sizeof(struct inter_mcu_msg)+2)
|
||||
#define FRAME_LENGTH (sizeof(inter_mcu_msg)+2)
|
||||
|
||||
#define CRC_INIT 0xffff
|
||||
#define CrcUpdate(_crc, _data) _crc_ccitt_update(_crc, _data)
|
||||
|
||||
@@ -204,9 +204,9 @@ void event_task_fbw( void) {
|
||||
ap_ok = TRUE;
|
||||
if (mode == FBW_MODE_AUTO) {
|
||||
#if defined IMU_ANALOG || defined IMU_3DMG
|
||||
control_set_desired(from_ap.channels);
|
||||
control_set_desired(from_ap.from_ap.channels);
|
||||
#else
|
||||
command_set(from_ap.channels);
|
||||
command_set(from_ap.from_ap.channels);
|
||||
#endif
|
||||
}
|
||||
to_autopilot_from_rc_values();
|
||||
|
||||
@@ -107,6 +107,24 @@ let parse_command_laws = fun command ->
|
||||
| _ -> xml_error "set|let"
|
||||
|
||||
|
||||
let parse_radio_laws = fun rc ->
|
||||
let a = fun s -> ExtXml.attrib rc s in
|
||||
match Xml.tag rc with
|
||||
"set" ->
|
||||
let com = a "command"
|
||||
and value = a "value" in
|
||||
let v = preprocess_command value in
|
||||
printf " values[COMMAND_%s] = %s;\\\n" com v;
|
||||
| "let" ->
|
||||
let var = a "var"
|
||||
and value = a "value" in
|
||||
let v = preprocess_command value in
|
||||
printf " int16_t _var_%s = %s;\\\n" var v
|
||||
| "define" ->
|
||||
parse_element "" rc
|
||||
| _ -> xml_error "set|let"
|
||||
|
||||
|
||||
let parse_command = fun commands_params command no ->
|
||||
let command_name = "COMMAND_"^ExtXml.attrib command "name" in
|
||||
let failsafe_value = int_of_string (ExtXml.attrib command "failsafe_value") in
|
||||
@@ -136,7 +154,11 @@ let parse_section = fun s ->
|
||||
let commands_params = Array.to_list commands_params in
|
||||
define "COMMANDS_FAILSAFE" (sprint_float_array (List.map (fun x -> string_of_int x.failsafe_value) commands_params));
|
||||
nl (); nl ()
|
||||
| "command_laws" ->
|
||||
| "radio_laws" ->
|
||||
printf "#define CommandsOfRC(values) { \\\n";
|
||||
List.iter parse_radio_laws (Xml.children s);
|
||||
printf "}\n\n"
|
||||
| "command_laws" ->
|
||||
printf "#define CommandsSet(values) { \\\n";
|
||||
printf " uint16_t servo_value;\\\n";
|
||||
printf " float command_value;\\\n";
|
||||
|
||||
Reference in New Issue
Block a user