paparazzi-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[paparazzi-commits] [4659] Add external turbine trigger (will move that


From: Martin Mueller
Subject: [paparazzi-commits] [4659] Add external turbine trigger (will move that into a module...promise ).
Date: Wed, 10 Mar 2010 16:55:06 +0000

Revision: 4659
          http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=4659
Author:   mmm
Date:     2010-03-10 16:55:04 +0000 (Wed, 10 Mar 2010)
Log Message:
-----------
Add external turbine trigger (will move that into a module...promise).

Modified Paths:
--------------
    paparazzi3/trunk/sw/airborne/arm7/sys_time_hw.c
    paparazzi3/trunk/sw/airborne/arm7/sys_time_hw.h
    paparazzi3/trunk/sw/airborne/gps_ubx.c
    paparazzi3/trunk/sw/airborne/gps_ubx.h
    paparazzi3/trunk/sw/airborne/main_ap.c

Added Paths:
-----------
    paparazzi3/trunk/conf/airframes/mm/
    paparazzi3/trunk/conf/airframes/mm/extra/
    paparazzi3/trunk/conf/airframes/mm/extra/press_t.xml
    paparazzi3/trunk/conf/airframes/mm/extra/probe_t.xml
    paparazzi3/trunk/conf/airframes/mm/extra/turbine_trigger.xml
    paparazzi3/trunk/sw/airborne/arm7/trig_ext_hw.c
    paparazzi3/trunk/sw/airborne/arm7/trig_ext_hw.h
    paparazzi3/trunk/sw/airborne/trig_ext.h

Added: paparazzi3/trunk/conf/airframes/mm/extra/press_t.xml
===================================================================
--- paparazzi3/trunk/conf/airframes/mm/extra/press_t.xml                        
        (rev 0)
+++ paparazzi3/trunk/conf/airframes/mm/extra/press_t.xml        2010-03-10 
16:55:04 UTC (rev 4659)
@@ -0,0 +1,302 @@
+<!DOCTYPE airframe SYSTEM "airframe.dtd">
+
+<!-- Funjet Multiplex (http://www.multiplex-rc.de/), Jeti ECO 25
+     Tiny 2.11 board (http://paparazzi.enac.fr/wiki/index.php/Tiny_v2)
+     PerkinElmer TPS334 IR Sensors
+     Tilted infrared sensor 
(http://paparazzi.enac.fr/wiki/index.php/Image:Tiny_v2_1_Funjet.jpg)
+     XBee modem
+     /* Payload: Sensirion humidity/temp, VTI pressure/temp */
+     K66, LEA 5H
+-->
+
+<airframe name="Funjet mm 1 K66">
+
+<!-- commands section -->
+  <servos>
+    <servo name="MOTOR"         no="0" min="1000" neutral="1000" max="2000"/>
+    <servo name="AILEVON_LEFT"  no="2" min="1900" neutral="1442" max="1100"/>
+    <servo name="AILEVON_RIGHT" no="6" min="1100" neutral="1549" max="1900"/>
+    <servo name="HATCH"         no="7" min="1070" neutral="1070" max="2200"/>
+  </servos>
+
+  <commands>
+    <axis name="THROTTLE" failsafe_value="0"/>
+    <axis name="ROLL"     failsafe_value="0"/>
+    <axis name="PITCH"    failsafe_value="0"/>
+    <axis name="HATCH"     failsafe_value="0"/>
+  </commands>
+
+  <rc_commands>
+    <set command="THROTTLE" value="@THROTTLE"/>
+    <set command="ROLL"     value="@ROLL"/>
+    <set command="PITCH"    value="@PITCH"/>
+    <set command="HATCH"    value="@CALIB"/>
+  </rc_commands>
+
+  <section name="MIXER">
+    <define name="AILEVON_AILERON_RATE" value="0.45"/>
+    <define name="AILEVON_ELEVATOR_RATE" value="0.8"/>
+  </section>
+
+  <command_laws>
+    <let var="aileron"  value="@ROLL  * AILEVON_AILERON_RATE"/>
+    <let var="elevator" value="@PITCH * AILEVON_ELEVATOR_RATE"/>  
+    <set servo="MOTOR"         value="@THROTTLE"/>
+    <set servo="AILEVON_LEFT"  value="$elevator + $aileron"/>
+    <set servo="AILEVON_RIGHT" value="$elevator - $aileron"/>
+    <set servo="HATCH"         value="@HATCH"/>
+  </command_laws>
+
+  <section name="AUTO1" prefix="AUTO1_">
+    <define name="MAX_ROLL" value="0.85"/>
+    <define name="MAX_PITCH" value="0.6"/>
+  </section>
+
+  <section name="adc" prefix="ADC_CHANNEL_">
+    <define name="IR1" value="ADC_1"/>
+    <define name="IR2" value="ADC_2"/>
+    <define name="IR_TOP" value="ADC_0"/>
+    <define name="IR_NB_SAMPLES" value="16"/>
+  </section>
+
+  <section name="INFRARED" prefix="IR_">
+    <define name="ADC_IR1_NEUTRAL" value="512"/>
+    <define name="ADC_IR2_NEUTRAL" value="512"/>
+    <define name="ADC_TOP_NEUTRAL" value="512"/>
+
+    <define name="CORRECTION_UP" value="1."/>
+    <define name="CORRECTION_DOWN" value="1."/>
+    <define name="CORRECTION_LEFT" value="1."/>
+    <define name="CORRECTION_RIGHT" value="1."/>
+
+    <define name="LATERAL_CORRECTION" value="-1"/>
+    <define name="LONGITUDINAL_CORRECTION" value="1"/>
+    <define name="VERTICAL_CORRECTION" value="1.5"/>
+
+    <define name="HORIZ_SENSOR_TILTED" value="1"/>
+    <define name="IR1_SIGN" value="1"/>
+    <define name="IR2_SIGN" value="-1"/>
+    <define name="TOP_SIGN" value="-1"/>
+
+    <define name="ROLL_NEUTRAL_DEFAULT" value="0" unit="deg"/>
+    <define name="PITCH_NEUTRAL_DEFAULT" value="0" unit="deg"/>
+  </section>
+
+  <section name="BAT">
+    <!--define name="MILLIAMP_AT_FULL_THROTTLE" value="10000."/-->
+    <define name="ADC_CHANNEL_CURRENT" value="ADC_4"/>
+    <define name="MilliAmpereOfAdc(adc)" value="(88*adc)"/>
+    <define name="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V"/>
+                                        <!-- 0.0247311828 -->
+                                        <!-- 0.02432905 -->
+    <define name="VoltageOfAdc(adc)" value="(0.02454*adc)"/>    
+  </section>
+ 
+  <section name="MISC">
+    <define name="NOMINAL_AIRSPEED" value="15." unit="m/s"/>
+    <define name="CARROT" value="5." unit="s"/>
+    <define name="KILL_MODE_DISTANCE" value="(1.5*MAX_DIST_FROM_HOME)"/>
+    <define name="CONTROL_RATE" value="60" unit="Hz"/>
+<!--    <define name="XBEE_INIT" value="\"ATPL2\rATRN1\rATTT80\r\""/> -->
+<!--    <define name="NO_XBEE_API_INIT" value="TRUE"/> -->
+    <define name="ALT_KALMAN_ENABLED" value="FALSE"/>
+
+    <define name="TRIGGER_DELAY" value="1."/>
+    <define name="DEFAULT_CIRCLE_RADIUS" value="120."/>
+    <define name="MIN_CIRCLE_RADIUS" value="50."/>
+  </section>
+ 
+  <section name="VERTICAL CONTROL" prefix="V_CTL_">
+
+    <define name="POWER_CTL_BAT_NOMINAL" value="11.1" unit="volt"/>
+    <!-- outer loop proportional gain -->
+    <define name="ALTITUDE_PGAIN" value="-0.06"/> <!-- -0.024 -->
+    <!-- outer loop saturation -->
+    <define name="ALTITUDE_MAX_CLIMB" value="2."/>
+
+    <!-- auto throttle inner loop -->
+    <define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.45"/>
+    <define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.25"/>
+    <define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.85"/>
+    <define name="AUTO_THROTTLE_LOITER_TRIM" value="1000"/>
+    <define name="AUTO_THROTTLE_DASH_TRIM" value="-1200"/>
+    <define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0.2" 
unit="%/(m/s)"/>
+    <define name="AUTO_THROTTLE_PGAIN" value="-0.023"/> <!-- -0.012 -->
+    <define name="AUTO_THROTTLE_IGAIN" value="0.01"/>
+    <define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.05"/>
+
+    <!-- auto pitch inner loop -->
+    <define name="AUTO_PITCH_PGAIN" value="-0.06"/> <!-- -0.03 -->
+    <define name="AUTO_PITCH_IGAIN" value="0.0"/>
+    <define name="AUTO_PITCH_MAX_PITCH" value="0.35"/>
+    <define name="AUTO_PITCH_MIN_PITCH" value="-0.35"/>
+
+   <define name="THROTTLE_SLEW" value="0.1"/>
+
+  </section>
+
+  <section name="HORIZONTAL CONTROL" prefix="H_CTL_">
+    <define name="COURSE_PGAIN" value="-0.9"/>
+    <define name="ROLL_MAX_SETPOINT" value="0.70" unit="radians"/> <!-- 0.5 -->
+    <define name="PITCH_MAX_SETPOINT" value="0.5" unit="radians"/>
+    <define name="PITCH_MIN_SETPOINT" value="-0.5" unit="radians"/>
+
+    <define name="ROLL_PGAIN" value="6600."/>
+    <define name="AILERON_OF_THROTTLE" value="0.0"/>
+    <define name="PITCH_PGAIN" value="-5500."/>
+    <define name="PITCH_DGAIN" value="0.4"/>
+
+    <define name="ELEVATOR_OF_ROLL" value="2400"/>
+
+    <!--define name="ROLL_ATTITUDE_GAIN" value="-7500"/>
+    <define name="ROLL_RATE_GAIN" value="-1500"/-->
+
+  </section>
+
+  <section name="NAV">
+    <define name="NAV_PITCH" value="0."/>
+    <define name="NAV_GLIDE_PITCH_TRIM" value="0"/>
+  </section>
+
+  <section name="AGGRESSIVE" prefix="AGR_">
+    <define name="BLEND_START" value="50"/><!-- Altitude Error to Initiate 
Aggressive Climb CANNOT BE ZERO!!-->
+    <define name="BLEND_END" value="15"/><!-- Altitude Error to Blend 
Aggressive to Regular Climb Modes  CANNOT BE ZERO!!-->
+    <define name="CLIMB_THROTTLE" value="0.9"/><!-- Gaz for Aggressive Climb 
-->
+    <define name="CLIMB_PITCH" value="0.35"/><!-- Pitch for Aggressive Climb 
-->
+    <define name="DESCENT_THROTTLE" value="0.05"/><!-- Gaz for Aggressive 
Decent -->
+    <define name="DESCENT_PITCH" value="-0.35"/><!-- Pitch for Aggressive 
Decent -->
+    <define name="CLIMB_NAV_RATIO" value="0.8"/><!-- Percent Navigation for 
Altitude Error Equal to Start Altitude -->
+    <define name="DESCENT_NAV_RATIO" value="1.0"/>
+    </section>
+
+  <section name="FAILSAFE" prefix="FAILSAFE_">
+       <define name="DELAY_WITHOUT_GPS" value="2" unit="s"/>
+       <define name="DEFAULT_THROTTLE" value="0.3" unit="%"/>
+       <define name="DEFAULT_ROLL" value="0.3" unit="rad"/>
+       <define name="DEFAULT_PITCH" value="0.5" unit="rad"/>
+       <define name="HOME_RADIUS" value="100" unit="m"/>
+</section>
+
+ <section name="DATALINK" prefix="DATALINK_">
+    <define name="DEVICE_TYPE" value="XBEE"/>
+    <define name="DEVICE_ADDRESS" value="...."/>
+  </section>
+ 
+ <section name="SIMU">
+    <define name="YAW_RESPONSE_FACTOR" value="0.5"/>
+ </section>
+
+  <section name="MICROMAG">
+
+    <define name="MM_SS_PIN" value="20"/>
+    <define name="MM_SS_IODIR" value="IO0DIR"/>
+    <define name="MM_SS_IOSET" value="IO0SET"/>
+    <define name="MM_SS_IOCLR" value="IO0CLR"/>
+
+    <define name="MM_RESET_PIN" value="29"/>
+    <define name="MM_RESET_IODIR" value="IO0DIR"/>
+    <define name="MM_RESET_IOSET" value="IO0SET"/>
+    <define name="MM_RESET_IOCLR" value="IO0CLR"/>
+
+    <define name="MM_DRDY_PINSEL" value="PINSEL1"/>
+    <define name="MM_DRDY_PINSEL_BIT" value="0"/>
+    <define name="MM_DRDY_PINSEL_VAL" value="1"/>
+    <define name="MM_DRDY_EINT" value="0"/>
+    <define name="MM_DRDY_VIC_IT" value="VIC_EINT0"/>
+
+  </section>
+
+  <section name="MAX11040">
+
+    <define name="MAXM_SS_PIN" value="20"/>
+    <define name="MAXM_SS_IODIR" value="IO0DIR"/>
+    <define name="MAXM_SS_IOSET" value="IO0SET"/>
+    <define name="MAXM_SS_IOCLR" value="IO0CLR"/>
+
+    <define name="MAXM_DRDY_PINSEL" value="PINSEL1"/>
+    <define name="MAXM_DRDY_PINSEL_BIT" value="0"/>
+    <define name="MAXM_DRDY_PINSEL_VAL" value="1"/>
+    <define name="MAXM_DRDY_EINT" value="0"/>
+    <define name="MAXM_DRDY_VIC_IT" value="VIC_EINT0"/>
+
+  </section>
+
+ <makefile>
+CONFIG = \"tiny_2_1.h\"
+
+include $(PAPARAZZI_SRC)/conf/autopilot/tiny.makefile
+
+FLASH_MODE=IAP
+
+ap.CFLAGS +=  -DFBW -DAP -DBOARD_CONFIG=$(CONFIG) -DLED -DTIME_LED=1
+ap.srcs = sys_time.c $(SRC_ARCH)/sys_time_hw.c $(SRC_ARCH)/armVIC.c main_fbw.c 
main_ap.c main.c
+
+ap.srcs += commands.c
+
+ap.CFLAGS += -DACTUATORS=\"servos_4017_hw.h\" -DSERVOS_4017
+ap.srcs += $(SRC_ARCH)/servos_4017_hw.c actuators.c
+
+ap.CFLAGS += -DRADIO_CONTROL
+ap.srcs += radio_control.c $(SRC_ARCH)/ppm_hw.c  
+
+ap.CFLAGS += -DDOWNLINK -DUSE_UART1 -DDOWNLINK_TRANSPORT=XBeeTransport 
-DXBEE_UART=Uart1 -DDATALINK=XBEE -DUART1_BAUD=B57600
+ap.srcs += downlink.c $(SRC_ARCH)/uart_hw.c datalink.c xbee.c
+
+#TRANSPARENT
+#ap.CFLAGS += -DDOWNLINK -DUSE_UART1 -DDOWNLINK_TRANSPORT=PprzTransport 
-DDOWNLINK_FBW_DEVICE=Uart1 -DDOWNLINK_AP_DEVICE=Uart1 -DPPRZ_UART=Uart1 
-DDATALINK=PPRZ -DUART1_BAUD=B9600
+#ap.srcs += downlink.c $(SRC_ARCH)/uart_hw.c datalink.c pprz_transport.c
+
+
+ap.CFLAGS += -DINTER_MCU
+ap.srcs += inter_mcu.c 
+
+ap.CFLAGS += -DADC -DUSE_ADC_0 -DUSE_ADC_1 -DUSE_ADC_2 -DUSE_ADC_4
+ap.srcs += $(SRC_ARCH)/adc_hw.c
+
+ap.CFLAGS += -DGPS -DUBX -DUSE_UART0 -DGPS_LINK=Uart0 -DUART0_BAUD=B38400 
-DGPS_USE_LATLONG
+# -DGPS_LED=2
+ap.srcs += gps_ubx.c gps.c latlong.c
+
+ap.CFLAGS += -DINFRARED -DALT_KALMAN -DWIND_INFO -DWIND_INFO_RET
+ap.srcs += infrared.c estimator.c
+
+ap.CFLAGS += -DNAV -DAGR_CLIMB -DLOITER_TRIM
+ap.srcs += nav.c fw_h_ctl.c fw_v_ctl.c
+
+ap.srcs += nav_line.c
+ap.srcs += nav_survey_rectangle.c
+
+ap.srcs += humid_sht.c
+ap.CFLAGS += -DUSE_HUMID_SHT -DDAT_PIN=3  -DSCK_PIN=2
+
+ap.srcs += baro_scp.c
+ap.CFLAGS += -DUSE_BARO_SCP
+
+#ap.CFLAGS += -DMICROMAG_DRDY_VIC_SLOT=9 -DSSP_VIC_SLOT=11 -DUSE_MICROMAG_FW
+#ap.srcs += micromag_fw.c $(SRC_ARCH)/micromag_fw_hw.c
+
+#ap.CFLAGS += -DMAX11040_DRDY_VIC_SLOT=12 -DSSP_VIC_SLOT=11 -DUSE_MAX11040
+#ap.srcs += max11040.c $(SRC_ARCH)/max11040_hw.c
+
+ap.srcs += joystick.c
+ap.CFLAGS += -DUSE_JOYSTICK
+
+ap.srcs += bomb.c
+
+ap.srcs += snav.c
+
+# distance sensor
+ap.CFLAGS += -DUSE_ADC_3 -DUSE_ADC_GENERIC -DADC_CHANNEL_GENERIC1=ADC_3 
-DADC_CHANNEL_GENERIC_NB_SAMPLES=16
+ap.srcs += adc_generic.c
+
+# Config for SITL simulation
+include $(PAPARAZZI_SRC)/conf/autopilot/sitl.makefile
+sim.CFLAGS += -DBOARD_CONFIG=\"tiny.h\" -DAGR_CLIMB -DLOITER_TRIM -DALT_KALMAN
+sim.srcs += nav_line.c nav_survey_rectangle.c
+
+sim.srcs += joystick.c
+sim.CFLAGS += -DUSE_JOYSTICK
+
+
+  </makefile>
+</airframe>


Property changes on: paparazzi3/trunk/conf/airframes/mm/extra/press_t.xml
___________________________________________________________________
Added: svn:executable
   + *

Added: paparazzi3/trunk/conf/airframes/mm/extra/probe_t.xml
===================================================================
--- paparazzi3/trunk/conf/airframes/mm/extra/probe_t.xml                        
        (rev 0)
+++ paparazzi3/trunk/conf/airframes/mm/extra/probe_t.xml        2010-03-10 
16:55:04 UTC (rev 4659)
@@ -0,0 +1,251 @@
+<!DOCTYPE airframe SYSTEM "airframe.dtd">
+
+
+<airframe name="Pressure test">
+
+<!-- commands section -->
+  <servos>
+    <servo name="MOTOR"         no="0" min="1000" neutral="1000" max="2000"/>
+    <servo name="AILEVON_LEFT"  no="2" min="1900" neutral="1442" max="1100"/>
+    <servo name="AILEVON_RIGHT" no="6" min="1100" neutral="1549" max="1900"/>
+    <servo name="HATCH"         no="7" min="1070" neutral="1070" max="2200"/>
+  </servos>
+
+  <commands>
+    <axis name="THROTTLE" failsafe_value="0"/>
+    <axis name="ROLL"     failsafe_value="0"/>
+    <axis name="PITCH"    failsafe_value="0"/>
+    <axis name="HATCH"     failsafe_value="0"/>
+  </commands>
+
+  <rc_commands>
+    <set command="THROTTLE" value="@THROTTLE"/>
+    <set command="ROLL"     value="@ROLL"/>
+    <set command="PITCH"    value="@PITCH"/>
+    <set command="HATCH"    value="@CALIB"/>
+  </rc_commands>
+
+  <section name="MIXER">
+    <define name="AILEVON_AILERON_RATE" value="0.45"/>
+    <define name="AILEVON_ELEVATOR_RATE" value="0.8"/>
+  </section>
+
+  <command_laws>
+    <let var="aileron"  value="@ROLL  * AILEVON_AILERON_RATE"/>
+    <let var="elevator" value="@PITCH * AILEVON_ELEVATOR_RATE"/>  
+    <set servo="MOTOR"         value="@THROTTLE"/>
+    <set servo="AILEVON_LEFT"  value="$elevator + $aileron"/>
+    <set servo="AILEVON_RIGHT" value="$elevator - $aileron"/>
+    <set servo="HATCH"         value="@HATCH"/>
+  </command_laws>
+
+  <section name="AUTO1" prefix="AUTO1_">
+    <define name="MAX_ROLL" value="0.85"/>
+    <define name="MAX_PITCH" value="0.6"/>
+  </section>
+
+  <section name="adc" prefix="ADC_CHANNEL_">
+    <define name="IR1" value="ADC_1"/>
+    <define name="IR2" value="ADC_2"/>
+    <define name="IR_TOP" value="ADC_0"/>
+    <define name="IR_NB_SAMPLES" value="16"/>
+  </section>
+
+  <section name="INFRARED" prefix="IR_">
+    <define name="ADC_IR1_NEUTRAL" value="512"/>
+    <define name="ADC_IR2_NEUTRAL" value="512"/>
+    <define name="ADC_TOP_NEUTRAL" value="512"/>
+
+    <define name="CORRECTION_UP" value="1."/>
+    <define name="CORRECTION_DOWN" value="1."/>
+    <define name="CORRECTION_LEFT" value="1."/>
+    <define name="CORRECTION_RIGHT" value="1."/>
+
+    <define name="LATERAL_CORRECTION" value="-1"/>
+    <define name="LONGITUDINAL_CORRECTION" value="1"/>
+    <define name="VERTICAL_CORRECTION" value="1.5"/>
+
+    <define name="HORIZ_SENSOR_TILTED" value="1"/>
+    <define name="IR1_SIGN" value="1"/>
+    <define name="IR2_SIGN" value="-1"/>
+    <define name="TOP_SIGN" value="-1"/>
+
+    <define name="ROLL_NEUTRAL_DEFAULT" value="0" unit="deg"/>
+    <define name="PITCH_NEUTRAL_DEFAULT" value="0" unit="deg"/>
+  </section>
+
+  <section name="BAT">
+    <define name="MILLIAMP_AT_FULL_THROTTLE" value="10000."/>
+    <define name="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V"/>
+                                        <!-- 0.0247311828 -->
+                                        <!-- 0.02432905 -->
+    <define name="VoltageOfAdc(adc)" value="(0.02454*adc)"/>    
+  </section>
+ 
+  <section name="MISC">
+    <define name="NOMINAL_AIRSPEED" value="15." unit="m/s"/>
+    <define name="CARROT" value="5." unit="s"/>
+    <define name="KILL_MODE_DISTANCE" value="(1.5*MAX_DIST_FROM_HOME)"/>
+    <define name="CONTROL_RATE" value="60" unit="Hz"/>
+<!--    <define name="XBEE_INIT" value="\"ATPL2\rATRN1\rATTT80\r\""/> -->
+<!--    <define name="NO_XBEE_API_INIT" value="TRUE"/> -->
+    <define name="ALT_KALMAN_ENABLED" value="FALSE"/>
+
+    <define name="TRIGGER_DELAY" value="1."/>
+    <define name="DEFAULT_CIRCLE_RADIUS" value="120."/>
+    <define name="MIN_CIRCLE_RADIUS" value="50."/>
+  </section>
+ 
+  <section name="VERTICAL CONTROL" prefix="V_CTL_">
+
+    <define name="POWER_CTL_BAT_NOMINAL" value="11.1" unit="volt"/>
+    <!-- outer loop proportional gain -->
+    <define name="ALTITUDE_PGAIN" value="-0.06"/> <!-- -0.024 -->
+    <!-- outer loop saturation -->
+    <define name="ALTITUDE_MAX_CLIMB" value="2."/>
+
+    <!-- auto throttle inner loop -->
+    <define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.45"/>
+    <define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.25"/>
+    <define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.85"/>
+    <define name="AUTO_THROTTLE_LOITER_TRIM" value="1000"/>
+    <define name="AUTO_THROTTLE_DASH_TRIM" value="-1200"/>
+    <define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0.2" 
unit="%/(m/s)"/>
+    <define name="AUTO_THROTTLE_PGAIN" value="-0.023"/> <!-- -0.012 -->
+    <define name="AUTO_THROTTLE_IGAIN" value="0.01"/>
+    <define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.05"/>
+
+    <!-- auto pitch inner loop -->
+    <define name="AUTO_PITCH_PGAIN" value="-0.06"/> <!-- -0.03 -->
+    <define name="AUTO_PITCH_IGAIN" value="0.0"/>
+    <define name="AUTO_PITCH_MAX_PITCH" value="0.35"/>
+    <define name="AUTO_PITCH_MIN_PITCH" value="-0.35"/>
+
+   <define name="THROTTLE_SLEW" value="0.1"/>
+
+  </section>
+
+  <section name="HORIZONTAL CONTROL" prefix="H_CTL_">
+    <define name="COURSE_PGAIN" value="-0.9"/>
+    <define name="ROLL_MAX_SETPOINT" value="0.70" unit="radians"/> <!-- 0.5 -->
+    <define name="PITCH_MAX_SETPOINT" value="0.5" unit="radians"/>
+    <define name="PITCH_MIN_SETPOINT" value="-0.5" unit="radians"/>
+
+    <define name="ROLL_PGAIN" value="6600."/>
+    <define name="AILERON_OF_THROTTLE" value="0.0"/>
+    <define name="PITCH_PGAIN" value="-5500."/>
+    <define name="PITCH_DGAIN" value="0.4"/>
+
+    <define name="ELEVATOR_OF_ROLL" value="2400"/>
+
+    <!--define name="ROLL_ATTITUDE_GAIN" value="-7500"/>
+    <define name="ROLL_RATE_GAIN" value="-1500"/-->
+
+  </section>
+
+  <section name="NAV">
+    <define name="NAV_PITCH" value="0."/>
+    <define name="NAV_GLIDE_PITCH_TRIM" value="0"/>
+  </section>
+
+  <section name="AGGRESSIVE" prefix="AGR_">
+    <define name="BLEND_START" value="50"/><!-- Altitude Error to Initiate 
Aggressive Climb CANNOT BE ZERO!!-->
+    <define name="BLEND_END" value="15"/><!-- Altitude Error to Blend 
Aggressive to Regular Climb Modes  CANNOT BE ZERO!!-->
+    <define name="CLIMB_THROTTLE" value="0.9"/><!-- Gaz for Aggressive Climb 
-->
+    <define name="CLIMB_PITCH" value="0.35"/><!-- Pitch for Aggressive Climb 
-->
+    <define name="DESCENT_THROTTLE" value="0.05"/><!-- Gaz for Aggressive 
Decent -->
+    <define name="DESCENT_PITCH" value="-0.35"/><!-- Pitch for Aggressive 
Decent -->
+    <define name="CLIMB_NAV_RATIO" value="0.8"/><!-- Percent Navigation for 
Altitude Error Equal to Start Altitude -->
+    <define name="DESCENT_NAV_RATIO" value="1.0"/>
+    </section>
+
+  <section name="FAILSAFE" prefix="FAILSAFE_">
+       <define name="DELAY_WITHOUT_GPS" value="2" unit="s"/>
+       <define name="DEFAULT_THROTTLE" value="0.3" unit="%"/>
+       <define name="DEFAULT_ROLL" value="0.3" unit="rad"/>
+       <define name="DEFAULT_PITCH" value="0.5" unit="rad"/>
+       <define name="HOME_RADIUS" value="100" unit="m"/>
+</section>
+
+  <section name="DATALINK" prefix="DATALINK_">
+    <define name="DEVICE_TYPE" value="XBEE"/>
+    <define name="DEVICE_ADDRESS" value="...."/>
+  </section>
+ 
+  <section name="MAX11040">
+
+    <define name="MAXM_SS_PIN" value="20"/>
+    <define name="MAXM_SS_IODIR" value="IO0DIR"/>
+    <define name="MAXM_SS_IOSET" value="IO0SET"/>
+    <define name="MAXM_SS_IOCLR" value="IO0CLR"/>
+
+    <define name="MAXM_DRDY_PINSEL" value="PINSEL1"/>
+    <define name="MAXM_DRDY_PINSEL_BIT" value="0"/>
+    <define name="MAXM_DRDY_PINSEL_VAL" value="1"/>
+    <define name="MAXM_DRDY_EINT" value="0"/>
+    <define name="MAXM_DRDY_VIC_IT" value="VIC_EINT0"/>
+
+  </section>
+
+ <makefile>
+CONFIG = \"tiny_2_1.h\"
+
+include $(PAPARAZZI_SRC)/conf/autopilot/tiny.makefile
+
+FLASH_MODE=IAP
+
+ap.CFLAGS +=  -DFBW -DAP -DBOARD_CONFIG=$(CONFIG) -DLED -DTIME_LED=1
+ap.srcs = sys_time.c $(SRC_ARCH)/sys_time_hw.c $(SRC_ARCH)/armVIC.c main_fbw.c 
main_ap.c main.c
+
+ap.srcs += commands.c
+
+ap.CFLAGS += -DACTUATORS=\"servos_4017_hw.h\" -DSERVOS_4017
+ap.srcs += $(SRC_ARCH)/servos_4017_hw.c actuators.c
+
+ap.CFLAGS += -DRADIO_CONTROL
+ap.srcs += radio_control.c $(SRC_ARCH)/ppm_hw.c  
+
+ap.CFLAGS += -DDOWNLINK -DUSE_UART1 -DDOWNLINK_TRANSPORT=XBeeTransport 
-DXBEE_UART=Uart1 -DDATALINK=XBEE -DUART1_BAUD=B57600
+ap.srcs += downlink.c $(SRC_ARCH)/uart_hw.c datalink.c xbee.c
+
+#TRANSPARENT
+#ap.CFLAGS += -DDOWNLINK -DUSE_UART1 -DDOWNLINK_TRANSPORT=PprzTransport 
-DDOWNLINK_FBW_DEVICE=Uart1 -DDOWNLINK_AP_DEVICE=Uart1 -DPPRZ_UART=Uart1 
-DDATALINK=PPRZ -DUART1_BAUD=B9600
+#ap.srcs += downlink.c $(SRC_ARCH)/uart_hw.c datalink.c pprz_transport.c
+
+
+ap.CFLAGS += -DINTER_MCU
+ap.srcs += inter_mcu.c 
+
+ap.CFLAGS += -DADC -DUSE_ADC_0 -DUSE_ADC_1 -DUSE_ADC_2
+ap.srcs += $(SRC_ARCH)/adc_hw.c
+
+ap.CFLAGS += -DGPS -DUBX -DUSE_UART0 -DGPS_LINK=Uart0 -DUART0_BAUD=B38400 
-DGPS_USE_LATLONG
+# -DGPS_LED=2
+ap.srcs += gps_ubx.c gps.c latlong.c
+
+ap.CFLAGS += -DINFRARED -DALT_KALMAN -DWIND_INFO -DWIND_INFO_RET
+ap.srcs += infrared.c estimator.c
+
+ap.CFLAGS += -DNAV -DAGR_CLIMB -DLOITER_TRIM
+ap.srcs += nav.c fw_h_ctl.c fw_v_ctl.c
+
+ap.srcs += nav_line.c
+ap.srcs += nav_survey_rectangle.c
+
+# MAX11040 adc
+ap.CFLAGS += -DMAX11040_DRDY_VIC_SLOT=12 -DSSP_VIC_SLOT=11 -DUSE_MAX11040
+ap.srcs += max11040.c $(SRC_ARCH)/max11040_hw.c
+
+ap.srcs += snav.c
+
+# Config for SITL simulation
+include $(PAPARAZZI_SRC)/conf/autopilot/sitl.makefile
+sim.CFLAGS += -DBOARD_CONFIG=\"tiny.h\" -DAGR_CLIMB -DLOITER_TRIM -DALT_KALMAN
+sim.srcs += nav_line.c nav_survey_rectangle.c
+
+sim.srcs += joystick.c
+sim.CFLAGS += -DUSE_JOYSTICK
+
+
+  </makefile>
+</airframe>


Property changes on: paparazzi3/trunk/conf/airframes/mm/extra/probe_t.xml
___________________________________________________________________
Added: svn:executable
   + *

Added: paparazzi3/trunk/conf/airframes/mm/extra/turbine_trigger.xml
===================================================================
--- paparazzi3/trunk/conf/airframes/mm/extra/turbine_trigger.xml                
                (rev 0)
+++ paparazzi3/trunk/conf/airframes/mm/extra/turbine_trigger.xml        
2010-03-10 16:55:04 UTC (rev 4659)
@@ -0,0 +1,258 @@
+<!DOCTYPE airframe SYSTEM "airframe.dtd">
+
+<!-- Funjet Multiplex (http://www.multiplex-rc.de/), Jeti ECO 25
+     Tiny 2.11 board (http://paparazzi.enac.fr/wiki/index.php/Tiny_v2)
+     PerkinElmer TPS334 IR Sensors
+     Tilted infrared sensor 
(http://paparazzi.enac.fr/wiki/index.php/Image:Tiny_v2_1_Funjet.jpg)
+     XBee modem
+     /* Payload: Sensirion humidity/temp, VTI pressure/temp */
+     K66, LEA 5H
+-->
+
+<airframe name="Funjet mm 1 K66">
+
+<!-- commands section -->
+  <servos>
+    <servo name="MOTOR"         no="0" min="1000" neutral="1000" max="2000"/>
+    <servo name="AILEVON_LEFT"  no="2" min="1900" neutral="1442" max="1100"/>
+    <servo name="AILEVON_RIGHT" no="6" min="1100" neutral="1549" max="1900"/>
+    <servo name="HATCH"         no="7" min="1070" neutral="1070" max="2200"/>
+  </servos>
+
+  <commands>
+    <axis name="THROTTLE" failsafe_value="0"/>
+    <axis name="ROLL"     failsafe_value="0"/>
+    <axis name="PITCH"    failsafe_value="0"/>
+    <axis name="HATCH"     failsafe_value="0"/>
+  </commands>
+
+  <rc_commands>
+    <set command="THROTTLE" value="@THROTTLE"/>
+    <set command="ROLL"     value="@ROLL"/>
+    <set command="PITCH"    value="@PITCH"/>
+    <set command="HATCH"    value="@CALIB"/>
+  </rc_commands>
+
+  <section name="MIXER">
+    <define name="AILEVON_AILERON_RATE" value="0.45"/>
+    <define name="AILEVON_ELEVATOR_RATE" value="0.8"/>
+  </section>
+
+  <command_laws>
+    <let var="aileron"  value="@ROLL  * AILEVON_AILERON_RATE"/>
+    <let var="elevator" value="@PITCH * AILEVON_ELEVATOR_RATE"/>  
+    <set servo="MOTOR"         value="@THROTTLE"/>
+    <set servo="AILEVON_LEFT"  value="$elevator + $aileron"/>
+    <set servo="AILEVON_RIGHT" value="$elevator - $aileron"/>
+    <set servo="HATCH"         value="@HATCH"/>
+  </command_laws>
+
+  <section name="AUTO1" prefix="AUTO1_">
+    <define name="MAX_ROLL" value="0.85"/>
+    <define name="MAX_PITCH" value="0.6"/>
+  </section>
+
+  <section name="adc" prefix="ADC_CHANNEL_">
+    <define name="IR1" value="ADC_1"/>
+    <define name="IR2" value="ADC_2"/>
+    <define name="IR_TOP" value="ADC_0"/>
+    <define name="IR_NB_SAMPLES" value="16"/>
+  </section>
+
+  <section name="INFRARED" prefix="IR_">
+    <define name="ADC_IR1_NEUTRAL" value="512"/>
+    <define name="ADC_IR2_NEUTRAL" value="512"/>
+    <define name="ADC_TOP_NEUTRAL" value="512"/>
+
+    <define name="CORRECTION_UP" value="1."/>
+    <define name="CORRECTION_DOWN" value="1."/>
+    <define name="CORRECTION_LEFT" value="1."/>
+    <define name="CORRECTION_RIGHT" value="1."/>
+
+    <define name="LATERAL_CORRECTION" value="-1"/>
+    <define name="LONGITUDINAL_CORRECTION" value="1"/>
+    <define name="VERTICAL_CORRECTION" value="1.5"/>
+
+    <define name="HORIZ_SENSOR_TILTED" value="1"/>
+    <define name="IR1_SIGN" value="1"/>
+    <define name="IR2_SIGN" value="-1"/>
+    <define name="TOP_SIGN" value="-1"/>
+
+    <define name="ROLL_NEUTRAL_DEFAULT" value="0" unit="deg"/>
+    <define name="PITCH_NEUTRAL_DEFAULT" value="0" unit="deg"/>
+  </section>
+
+  <section name="BAT">
+    <!--define name="MILLIAMP_AT_FULL_THROTTLE" value="10000."/-->
+    <define name="ADC_CHANNEL_CURRENT" value="ADC_4"/>
+    <define name="MilliAmpereOfAdc(adc)" value="(88*adc)"/>
+    <define name="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V"/>
+                                        <!-- 0.0247311828 -->
+                                        <!-- 0.02432905 -->
+    <define name="VoltageOfAdc(adc)" value="(0.02454*adc)"/>    
+  </section>
+ 
+  <section name="MISC">
+    <define name="NOMINAL_AIRSPEED" value="15." unit="m/s"/>
+    <define name="CARROT" value="5." unit="s"/>
+    <define name="KILL_MODE_DISTANCE" value="(1.5*MAX_DIST_FROM_HOME)"/>
+    <define name="CONTROL_RATE" value="60" unit="Hz"/>
+<!--    <define name="XBEE_INIT" value="\"ATPL2\rATRN1\rATTT80\r\""/> -->
+<!--    <define name="NO_XBEE_API_INIT" value="TRUE"/> -->
+    <define name="ALT_KALMAN_ENABLED" value="FALSE"/>
+
+    <define name="TRIGGER_DELAY" value="1."/>
+    <define name="DEFAULT_CIRCLE_RADIUS" value="120."/>
+    <define name="MIN_CIRCLE_RADIUS" value="50."/>
+  </section>
+ 
+  <section name="VERTICAL CONTROL" prefix="V_CTL_">
+
+    <define name="POWER_CTL_BAT_NOMINAL" value="11.1" unit="volt"/>
+    <!-- outer loop proportional gain -->
+    <define name="ALTITUDE_PGAIN" value="-0.06"/> <!-- -0.024 -->
+    <!-- outer loop saturation -->
+    <define name="ALTITUDE_MAX_CLIMB" value="2."/>
+
+    <!-- auto throttle inner loop -->
+    <define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.45"/>
+    <define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.25"/>
+    <define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.85"/>
+    <define name="AUTO_THROTTLE_LOITER_TRIM" value="1000"/>
+    <define name="AUTO_THROTTLE_DASH_TRIM" value="-1200"/>
+    <define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0.2" 
unit="%/(m/s)"/>
+    <define name="AUTO_THROTTLE_PGAIN" value="-0.023"/> <!-- -0.012 -->
+    <define name="AUTO_THROTTLE_IGAIN" value="0.01"/>
+    <define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.05"/>
+
+    <!-- auto pitch inner loop -->
+    <define name="AUTO_PITCH_PGAIN" value="-0.06"/> <!-- -0.03 -->
+    <define name="AUTO_PITCH_IGAIN" value="0.0"/>
+    <define name="AUTO_PITCH_MAX_PITCH" value="0.35"/>
+    <define name="AUTO_PITCH_MIN_PITCH" value="-0.35"/>
+
+   <define name="THROTTLE_SLEW" value="0.1"/>
+
+  </section>
+
+  <section name="HORIZONTAL CONTROL" prefix="H_CTL_">
+    <define name="COURSE_PGAIN" value="-0.9"/>
+    <define name="ROLL_MAX_SETPOINT" value="0.70" unit="radians"/> <!-- 0.5 -->
+    <define name="PITCH_MAX_SETPOINT" value="0.5" unit="radians"/>
+    <define name="PITCH_MIN_SETPOINT" value="-0.5" unit="radians"/>
+
+    <define name="ROLL_PGAIN" value="6600."/>
+    <define name="AILERON_OF_THROTTLE" value="0.0"/>
+    <define name="PITCH_PGAIN" value="-5500."/>
+    <define name="PITCH_DGAIN" value="0.4"/>
+
+    <define name="ELEVATOR_OF_ROLL" value="2400"/>
+
+    <!--define name="ROLL_ATTITUDE_GAIN" value="-7500"/>
+    <define name="ROLL_RATE_GAIN" value="-1500"/-->
+
+  </section>
+
+  <section name="NAV">
+    <define name="NAV_PITCH" value="0."/>
+    <define name="NAV_GLIDE_PITCH_TRIM" value="0"/>
+  </section>
+
+  <section name="AGGRESSIVE" prefix="AGR_">
+    <define name="BLEND_START" value="50"/><!-- Altitude Error to Initiate 
Aggressive Climb CANNOT BE ZERO!!-->
+    <define name="BLEND_END" value="15"/><!-- Altitude Error to Blend 
Aggressive to Regular Climb Modes  CANNOT BE ZERO!!-->
+    <define name="CLIMB_THROTTLE" value="0.9"/><!-- Gaz for Aggressive Climb 
-->
+    <define name="CLIMB_PITCH" value="0.35"/><!-- Pitch for Aggressive Climb 
-->
+    <define name="DESCENT_THROTTLE" value="0.05"/><!-- Gaz for Aggressive 
Decent -->
+    <define name="DESCENT_PITCH" value="-0.35"/><!-- Pitch for Aggressive 
Decent -->
+    <define name="CLIMB_NAV_RATIO" value="0.8"/><!-- Percent Navigation for 
Altitude Error Equal to Start Altitude -->
+    <define name="DESCENT_NAV_RATIO" value="1.0"/>
+    </section>
+
+  <section name="FAILSAFE" prefix="FAILSAFE_">
+       <define name="DELAY_WITHOUT_GPS" value="2" unit="s"/>
+       <define name="DEFAULT_THROTTLE" value="0.3" unit="%"/>
+       <define name="DEFAULT_ROLL" value="0.3" unit="rad"/>
+       <define name="DEFAULT_PITCH" value="0.5" unit="rad"/>
+       <define name="HOME_RADIUS" value="100" unit="m"/>
+</section>
+
+ <section name="DATALINK" prefix="DATALINK_">
+    <define name="DEVICE_TYPE" value="XBEE"/>
+    <define name="DEVICE_ADDRESS" value="...."/>
+  </section>
+ 
+ <section name="SIMU">
+    <define name="YAW_RESPONSE_FACTOR" value="0.5"/>
+ </section>
+
+  <section name="MICROMAG">
+
+    <define name="MM_SS_PIN" value="20"/>
+    <define name="MM_SS_IODIR" value="IO0DIR"/>
+    <define name="MM_SS_IOSET" value="IO0SET"/>
+    <define name="MM_SS_IOCLR" value="IO0CLR"/>
+
+    <define name="MM_RESET_PIN" value="29"/>
+    <define name="MM_RESET_IODIR" value="IO0DIR"/>
+    <define name="MM_RESET_IOSET" value="IO0SET"/>
+    <define name="MM_RESET_IOCLR" value="IO0CLR"/>
+
+    <define name="MM_DRDY_PINSEL" value="PINSEL1"/>
+    <define name="MM_DRDY_PINSEL_BIT" value="0"/>
+    <define name="MM_DRDY_PINSEL_VAL" value="1"/>
+    <define name="MM_DRDY_EINT" value="0"/>
+    <define name="MM_DRDY_VIC_IT" value="VIC_EINT0"/>
+
+  </section>
+
+ <makefile>
+CONFIG = \"tiny_2_1.h\"
+
+include $(PAPARAZZI_SRC)/conf/autopilot/tiny.makefile
+
+FLASH_MODE=IAP
+
+ap.CFLAGS +=  -DFBW -DAP -DBOARD_CONFIG=$(CONFIG) -DLED -DTIME_LED=1
+ap.srcs = sys_time.c $(SRC_ARCH)/sys_time_hw.c $(SRC_ARCH)/armVIC.c main_fbw.c 
main_ap.c main.c
+
+ap.srcs += commands.c
+
+ap.CFLAGS += -DACTUATORS=\"servos_4017_hw.h\" -DSERVOS_4017
+ap.srcs += $(SRC_ARCH)/servos_4017_hw.c actuators.c
+
+ap.CFLAGS += -DDOWNLINK -DUSE_UART1 -DDOWNLINK_TRANSPORT=XBeeTransport 
-DXBEE_UART=Uart1 -DDATALINK=XBEE -DUART1_BAUD=B57600
+ap.srcs += downlink.c $(SRC_ARCH)/uart_hw.c datalink.c xbee.c
+
+ap.CFLAGS += -DINTER_MCU
+ap.srcs += inter_mcu.c 
+
+ap.CFLAGS += -DADC -DUSE_ADC_0 -DUSE_ADC_1 -DUSE_ADC_2 -DUSE_ADC_4
+ap.srcs += $(SRC_ARCH)/adc_hw.c
+
+ap.CFLAGS += -DGPS -DUBX -DUSE_UART0 -DGPS_LINK=Uart0 -DUART0_BAUD=B38400 
-DGPS_USE_LATLONG
+# -DGPS_LED=2
+ap.srcs += gps_ubx.c gps.c latlong.c
+
+ap.CFLAGS += -DINFRARED -DALT_KALMAN -DWIND_INFO -DWIND_INFO_RET
+ap.srcs += infrared.c estimator.c
+
+ap.CFLAGS += -DNAV -DAGR_CLIMB -DLOITER_TRIM
+ap.srcs += nav.c fw_h_ctl.c fw_v_ctl.c
+
+ap.srcs += nav_line.c
+ap.srcs += nav_survey_rectangle.c
+
+ap.srcs += $(SRC_ARCH)/trig_ext_hw.c  
+ap.CFLAGS += -DTRIG_EXT_PULSE_TYPE=TRIG_EXT_EDGE_FALLING -DTRIGGER_EXT
+
+ap.CFLAGS += -DGPS_TIMESTAMP
+
+# Config for SITL simulation
+include $(PAPARAZZI_SRC)/conf/autopilot/sitl.makefile
+sim.CFLAGS += -DBOARD_CONFIG=\"tiny.h\" -DAGR_CLIMB -DLOITER_TRIM -DALT_KALMAN
+sim.srcs += nav_line.c nav_survey_rectangle.c
+
+
+  </makefile>
+</airframe>

Modified: paparazzi3/trunk/sw/airborne/arm7/sys_time_hw.c
===================================================================
--- paparazzi3/trunk/sw/airborne/arm7/sys_time_hw.c     2010-03-10 16:17:57 UTC 
(rev 4658)
+++ paparazzi3/trunk/sw/airborne/arm7/sys_time_hw.c     2010-03-10 16:55:04 UTC 
(rev 4659)
@@ -50,6 +50,9 @@
 #define AMI601_IT 0x00
 #endif
 
+#ifdef TRIGGER_EXT
+#include "trig_ext.h"
+#endif
 
 #define TIMER0_IT_MASK (ACTUATORS_IT         |\
                         PPM_IT               |\
@@ -85,6 +88,14 @@
       T0IR = PPM_IT;
     }
 #endif
+#ifdef TRIGGER_EXT
+#define TRIGGER_IT PPM_CRI
+    if (T0IR&TRIGGER_IT) {
+      TRIG_ISR();
+      T0IR = TRIGGER_IT;
+LED_TOGGLE(3);
+    }
+#endif
 #if defined USE_RADIO_CONTROL && defined RADIO_CONTROL_TYPE_PPM
     if (T0IR&RADIO_CONTROL_PPM_IT) {
       RADIO_CONTROL_PPM_ISR();

Modified: paparazzi3/trunk/sw/airborne/arm7/sys_time_hw.h
===================================================================
--- paparazzi3/trunk/sw/airborne/arm7/sys_time_hw.h     2010-03-10 16:17:57 UTC 
(rev 4658)
+++ paparazzi3/trunk/sw/airborne/arm7/sys_time_hw.h     2010-03-10 16:55:04 UTC 
(rev 4659)
@@ -125,6 +125,7 @@
 #define SIGNED_SYS_TICS_OF_USEC(us) SIGNED_SYS_TICS_OF_SEC((us) * 1e-6)
 
 #define SEC_OF_SYS_TICS(st) (st / PCLK * T0_PCLK_DIV)
+#define MSEC_OF_SYS_TICS(st) (st / (PCLK/1000) * T0_PCLK_DIV)
 
 #define GET_CUR_TIME_FLOAT() ((float)cpu_time_sec + 
SEC_OF_SYS_TICS((float)cpu_time_ticks))
 

Added: paparazzi3/trunk/sw/airborne/arm7/trig_ext_hw.c
===================================================================
--- paparazzi3/trunk/sw/airborne/arm7/trig_ext_hw.c                             
(rev 0)
+++ paparazzi3/trunk/sw/airborne/arm7/trig_ext_hw.c     2010-03-10 16:55:04 UTC 
(rev 4659)
@@ -0,0 +1,12 @@
+//#include "trig_ext.h"
+#include "std.h"
+#include "sys_time.h"
+
+
+
+
+uint32_t trigger_t0;
+uint32_t delta_t0;
+volatile bool_t trig_ext_valid;
+
+

Added: paparazzi3/trunk/sw/airborne/arm7/trig_ext_hw.h
===================================================================
--- paparazzi3/trunk/sw/airborne/arm7/trig_ext_hw.h                             
(rev 0)
+++ paparazzi3/trunk/sw/airborne/arm7/trig_ext_hw.h     2010-03-10 16:55:04 UTC 
(rev 4659)
@@ -0,0 +1,41 @@
+#ifndef TRIG_EXT_HW_H
+#define TRIG_EXT_HW_H
+
+
+/**
+ *  falling/rising edge
+ */
+#define TRIG_EXT_EDGE_RISING 1
+#define TRIG_EXT_EDGE_FALLING 0
+
+
+
+#include "LPC21xx.h"
+#include BOARD_CONFIG
+
+
+static inline void trig_ext_init ( void ) {
+  /* select pin for capture */
+  PPM_PINSEL |= PPM_PINSEL_VAL << PPM_PINSEL_BIT;
+  /* enable capture 0.2 on falling or rising edge + trigger interrupt */
+#if defined TRIG_EXT_PULSE_TYPE && TRIG_EXT_PULSE_TYPE == 
TRIG_EXT_PULSE_TYPE_RISING
+  T0CCR = PPM_CCR_CRF | PPM_CCR_CRI;
+#elif defined TRIG_EXT_PULSE_TYPE && TRIG_EXT_PULSE_TYPE == 
TRIG_EXT_PULSE_TYPE_FALLING
+  T0CCR = PPM_CCR_CRR | PPM_CCR_CRI;
+#else
+#error "trig_ext_hw.h: Unknown PULSE_TYPE"
+#endif
+  trig_ext_valid = FALSE;
+}
+
+#define TRIG_ISR() {                                           \
+    static uint32_t last;                                      \
+    trigger_t0 = PPM_CR;                                       \
+    delta_t0 = trigger_t0 - last;                              \
+    last = trigger_t0;                                         \
+    trig_ext_valid = TRUE;                                     \
+}
+
+
+#endif /* TRIG_EXT_HW_H */
+

Modified: paparazzi3/trunk/sw/airborne/gps_ubx.c
===================================================================
--- paparazzi3/trunk/sw/airborne/gps_ubx.c      2010-03-10 16:17:57 UTC (rev 
4658)
+++ paparazzi3/trunk/sw/airborne/gps_ubx.c      2010-03-10 16:55:04 UTC (rev 
4659)
@@ -38,6 +38,11 @@
 #include "nav.h"
 #include "latlong.h"
 
+#ifdef GPS_TIMESTAMP
+#include "sys_time.h"
+#define MSEC_PER_WEEK (1000*60*60*24*7)
+#endif 
+
 #define UbxInitCheksum() { send_ck_a = send_ck_b = 0; }
 #define UpdateChecksum(c) { send_ck_a += c; send_ck_b += send_ck_a; }
 #define UbxTrailer() { GpsUartSend1(send_ck_a);  GpsUartSend1(send_ck_b); 
GpsUartSendMessage(); }
@@ -64,6 +69,11 @@
 
 uint16_t gps_week;
 uint32_t gps_itow;
+#ifdef GPS_TIMESTAMP
+uint32_t gps_t0;
+uint32_t gps_t0_itow;
+uint32_t gps_t0_frac;
+#endif
 int32_t gps_alt;
 uint16_t gps_gspeed;
 int16_t gps_climb;
@@ -248,6 +258,13 @@
       
       gps_pos_available = TRUE; /* The 3 UBX messages are sent in one rafale */
     } else if (ubx_id == UBX_NAV_SOL_ID) {
+#ifdef GPS_TIMESTAMP
+      /* get hardware clock ticks */
+      gps_t0 = T0TC;
+      /* set receive time */
+      gps_t0_itow = UBX_NAV_SOL_ITOW(ubx_msg_buf);
+      gps_t0_frac = UBX_NAV_SOL_Frac(ubx_msg_buf);
+#endif
       gps_mode = UBX_NAV_SOL_GPSfix(ubx_msg_buf);
       gps_PDOP = UBX_NAV_SOL_PDOP(ubx_msg_buf);
       gps_Pacc = UBX_NAV_SOL_Pacc(ubx_msg_buf);
@@ -339,3 +356,31 @@
   ubx_status = UNINIT;
   return;
 }
+
+#ifdef GPS_TIMESTAMP
+
+#ifndef PCLK
+#error unknown PCLK frequency
+#endif
+
+uint32_t itow_from_ticks(uint32_t clock_ticks)
+{
+  uint32_t clock_delta;
+  uint32_t time_delta;
+  uint32_t itow_now;
+
+  if (clock_ticks < gps_t0) {
+    clock_delta = (0xFFFFFFFF - clock_ticks) + gps_t0 + 1;
+  } else {
+    clock_delta = clock_ticks - gps_t0;
+  }
+
+  time_delta = MSEC_OF_SYS_TICS(clock_delta);
+
+  itow_now = gps_t0_itow + time_delta;
+  if (itow_now > MSEC_PER_WEEK) itow_now %= MSEC_PER_WEEK;
+
+  return itow_now;
+}
+#endif
+

Modified: paparazzi3/trunk/sw/airborne/gps_ubx.h
===================================================================
--- paparazzi3/trunk/sw/airborne/gps_ubx.h      2010-03-10 16:17:57 UTC (rev 
4658)
+++ paparazzi3/trunk/sw/airborne/gps_ubx.h      2010-03-10 16:55:04 UTC (rev 
4659)
@@ -93,4 +93,8 @@
   ubxsend_cfg_rst(gps_reset, CFG_RST_Reset_Controlled); \
 }
 
+#ifdef GPS_TIMESTAMP
+uint32_t itow_from_ticks(uint32_t clock_ticks);
+#endif
+
 #endif /* UBX_H */

Modified: paparazzi3/trunk/sw/airborne/main_ap.c
===================================================================
--- paparazzi3/trunk/sw/airborne/main_ap.c      2010-03-10 16:17:57 UTC (rev 
4658)
+++ paparazzi3/trunk/sw/airborne/main_ap.c      2010-03-10 16:55:04 UTC (rev 
4659)
@@ -138,6 +138,10 @@
 #include "baro_ets.h"
 #endif // USE_BARO_ETS
 
+#ifdef TRIGGER_EXT
+#include "trig_ext.h"
+#endif // TRIGGER_EXT
+
 /*code added by Haiyang Chao for using Xsens IMU for fixed wing UAV 20080804*/
 #ifdef UGEAR
 #include "osam_imu_ugear.h"
@@ -842,6 +846,10 @@
   LightInit();
 #endif
 
+#ifdef TRIGGER_EXT
+  trig_ext_init();
+#endif
+
   /************ Multi-uavs status ***************/
 
 #ifdef TRAFFIC_INFO
@@ -991,6 +999,23 @@
   }
 #endif
 
+#ifdef TRIGGER_EXT
+  if (trig_ext_valid == TRUE) {
+    uint8_t turb_id = 0;
+    uint32_t sync_itow, cycle_time;
+
+    sync_itow = itow_from_ticks(trigger_t0);
+    cycle_time =  MSEC_OF_SYS_TICS(delta_t0);
+
+    DOWNLINK_SEND_WINDTURBINE_STATUS_(DefaultChannel,
+                &turb_id,
+                &turb_id,
+                &sync_itow,
+                &cycle_time );
+    trig_ext_valid = FALSE;
+  }
+#endif
+
   if (inter_mcu_received_fbw) {
     /* receive radio control task from fbw */
     inter_mcu_received_fbw = FALSE;

Added: paparazzi3/trunk/sw/airborne/trig_ext.h
===================================================================
--- paparazzi3/trunk/sw/airborne/trig_ext.h                             (rev 0)
+++ paparazzi3/trunk/sw/airborne/trig_ext.h     2010-03-10 16:55:04 UTC (rev 
4659)
@@ -0,0 +1,38 @@
+/* $Id: ppm.h 4281 2009-10-19 18:32:12Z mmm $
+ *
+ * (c) 2005 Pascal Brisset, Antoine Drouin
+ *
+ * This file is part of paparazzi.
+ *
+ * paparazzi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * paparazzi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with paparazzi; see the file COPYING.  If not, write to
+ * the Free Software Foundation, 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.  
+ *
+ */
+
+#ifndef TRIG_EXT_H
+#define TRIG_EXT_H
+
+#if defined TRIGGER_EXT
+
+#include "std.h"
+extern uint32_t trigger_t0;
+extern uint32_t delta_t0;
+extern volatile bool_t trig_ext_valid;
+
+#include "trig_ext_hw.h"
+
+#endif /* TRIGGER_EXT */
+
+#endif





reply via email to

[Prev in Thread] Current Thread [Next in Thread]