code:parafoil_v2
Differences
This shows you the differences between two versions of the page.
code:parafoil_v2 [2009/03/27 03:36] – created laurenceb | code:parafoil_v2 [2009/03/27 03:37] (current) – laurenceb | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ===== Main code ===== | ||
+ | |||
<code c> | <code c> | ||
//UAV parafoil main code | //UAV parafoil main code | ||
Line 799: | Line 801: | ||
} | } | ||
+ | </ | ||
+ | |||
+ | ===== header ===== | ||
+ | <code c> | ||
+ | #include " | ||
+ | #include " | ||
+ | #include " | ||
+ | #include " | ||
+ | #include " | ||
+ | #include " | ||
+ | #include " | ||
+ | #include " | ||
+ | #include < | ||
+ | #include < | ||
+ | #include < | ||
+ | #include < | ||
+ | #include < | ||
+ | #include < | ||
+ | #include < | ||
+ | #include < | ||
+ | #define BAUDRATE (int)9600 // | ||
+ | #define DELTA_TIME (float)0.02 // | ||
+ | #define DELAY _delay_loop_2((u16)((float)F_CPU/ | ||
+ | #define SET PORTD |= 0x10 // | ||
+ | #define CLEAR PORTD &= ~0x10 | ||
+ | |||
+ | //kalman filter - NOTE: these constants are airframe specific | ||
+ | #define DAMPING_CONSTANT (float)0.3 // | ||
+ | #define CONTROL (float)0.75 // | ||
+ | #define CONTROL_GAIN (DAMPING_CONSTANT*CONTROL) // | ||
+ | |||
+ | #define TOP_COUNT (u16)((float)F_CPU*DELTA_TIME/ | ||
+ | #define PWM_COUNT_TIME (u16)((float)F_CPU*0.0005/ | ||
+ | |||
+ | #define I_C -0.00037 // | ||
+ | #define P_C -0.25 // | ||
+ | #define D_C -0.35 // | ||
+ | #define R_C -0.0005 // | ||
+ | #define INTEGRAL_LIMIT -0.2/ | ||
+ | #define RATE_INTEGRAL_LIMIT -0.4/I_C | ||
+ | |||
+ | //-we are now using flight data and descent valiable is a macro | ||
+ | #define DESCENT_CONSTANT 2.46e-8 | ||
+ | |||
+ | #define read_rate (u08)0b10010100 // | ||
+ | #define read_temp (u08)0b10011100 | ||
+ | #define read_melexis (u08)0x80 | ||
+ | |||
+ | #define gyro_null 1022 | ||
+ | |||
+ | #define altitudelimit 5000 // | ||
+ | #define timelimit 3600 // | ||
+ | |||
+ | #define targeteast (float)(-0.096236*Deg2rad) // | ||
+ | #define targetnorth (float)(52.25106*Deg2rad) | ||
+ | |||
+ | #define Rad2deg 180.0/ | ||
+ | #define Deg2rad PI/180.0 | ||
+ | |||
+ | #define PRINT_COMMA rprintfChar(pgm_read_byte(& | ||
+ | |||
+ | #define battery_factor (float)0.02505 // | ||
+ | #define battery_chan 0x00 // | ||
+ | |||
+ | #define TOGGLE_PIN PIND=0x20 // | ||
+ | |||
+ | #define BAUDDIV | ||
+ | |||
+ | #define RADIO_CTS bit_is_set(PIND, | ||
+ | |||
+ | #define LED_LEFT PORTC = ((PORTC & ~0x0C) | 0x04) | ||
+ | #define LED_RIGHT PORTC = ((PORTC & ~0x0C) | 0x08) | ||
+ | |||
+ | #define USER_PRESENT !(PINC& | ||
+ | |||
+ | #define CUTTER_ON PORTD|=(1<< | ||
+ | #define CUTTER_OFF PORTD& | ||
+ | |||
+ | #define DISABLE_SMPS PORTD|=(1<< | ||
+ | #define ENABLE_SMPS PORTD& | ||
+ | |||
+ | #define GYRO_OFF PORTB|=1<< | ||
+ | #define GYRO_ON PORTB& | ||
+ | |||
+ | #ifdef ADCSRA | ||
+ | #ifndef ADCSR | ||
+ | #define ADCSR | ||
+ | #endif | ||
+ | #endif | ||
+ | #ifdef ADATE | ||
+ | #define ADFR ADATE | ||
+ | #endif | ||
+ | #ifdef GROUND | ||
+ | void enable_ground_control(); | ||
+ | void disable_ground_control(); | ||
+ | #define PULSE_MIN (u16)(0.0008*(float)F_CPU/ | ||
+ | #define PULSE_MAX (u16)(0.0022*(float)F_CPU/ | ||
+ | #define GROUND_LED_ON PORTD|=(1<< | ||
+ | #define GROUND_LED_OFF PORTD& | ||
+ | #define GROUND_LED_SET PORTD& | ||
+ | void run_ground_control(); | ||
+ | #endif | ||
+ | |||
+ | typedef struct | ||
+ | { | ||
+ | float vup; | ||
+ | float vnorth; | ||
+ | float veast; | ||
+ | float time; | ||
+ | float altitude; | ||
+ | float longitude; | ||
+ | float latitude; | ||
+ | u08 packetflag; | ||
+ | u08 status; | ||
+ | u08 nosats; | ||
+ | } gps_type; | ||
+ | |||
+ | void put_char(unsigned char c); | ||
+ | void suart_send(char c); | ||
+ | void run_ground_control(); | ||
+ | void _delay_10ms(char time); | ||
+ | float driftfactor(int altitude); | ||
+ | u08 I2Cdataprint(u32* I2Caddress); | ||
</ | </ |
code/parafoil_v2.1238124998.txt.gz · Last modified: 2009/03/27 03:36 by laurenceb