Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 183 → Rev 184

/branches/salvo_gps/GPS.c
13,7 → 13,7
Peter Muehlenbrock
Auswertung der Daten vom GPS im ublox Format
Hold Modus mit PID Regler
Stand 28.9.2007
Stand 29.9.2007
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*/
#include "main.h"
283,10 → 283,10
//Zentrale Statemachine fuer alle GPS relevanten Regelungsablauefe
short int GPS_CRTL(short int cmd)
{
static unsigned int cnt; //Zaehler fuer diverse Verzoegerungen
static int int_east,int_north; //Integrierer
static signed int dist_north,dist_east;
int diff_east,diff_north; // Differenzierer (Differenz zum vorhergehenden x bzw. y Wert)
static unsigned int cnt; //Zaehler fuer diverse Verzoegerungen
static signed int int_east,int_north; //Integrierer
static signed int dist_north,dist_east;
int diff_east,diff_north; // Differenzierer (Differenz zum vorhergehenden x bzw. y Wert)
int n;
long int dist;
switch (cmd)
312,6 → 312,8
int_north = 0;
gps_reg_x = 0;
gps_reg_y = 0;
dist_east = 0;
dist_north = 0;
gps_rel_hold_position.utm_east = gps_rel_act_position.utm_east;
gps_rel_hold_position.utm_north = gps_rel_act_position.utm_north;
gps_rel_hold_position.status = 1; // gueltige Positionsdaten
357,10 → 359,10
gps_updte_flag = 0;
// ab hier wird geregelt
 
diff_east = -dist_east; //Alten Wert schon mal abziehen
diff_north = -dist_north;
dist_east = gps_rel_hold_position.utm_east - gps_rel_act_position.utm_east;
dist_north = gps_rel_hold_position.utm_north - gps_rel_act_position.utm_north;
diff_east = -dist_east; //Alten Wert schon mal abziehen
diff_north = -dist_north;
dist_east = gps_rel_hold_position.utm_east - gps_rel_act_position.utm_east;
dist_north = gps_rel_hold_position.utm_north - gps_rel_act_position.utm_north;
int_east += dist_east;
int_north += dist_north;
diff_east += dist_east; // Differenz zur vorhergehenden East Position
372,16 → 374,10
int_east -= dist_east;
int_north -= dist_north;
}
#define DIST_MAX 100 //neuer Wert ab 24.9.2007 Begrenzung
if (dist_east > DIST_MAX) dist_east = DIST_MAX;
if (dist_east <-DIST_MAX) dist_east = -DIST_MAX;
if (dist_north > DIST_MAX) dist_north = DIST_MAX;
if (dist_north <-DIST_MAX) dist_north = -DIST_MAX;
 
//PID Regler
gps_reg_x = ((int_east * Parameter_UserParam1)/32) + ((dist_east * Parameter_UserParam2)/8)+ ((diff_east * Parameter_UserParam3)/2); //
gps_reg_y = ((int_north * Parameter_UserParam1)/32) + ((dist_north * Parameter_UserParam2)/8)+ ((diff_north * Parameter_UserParam3)/2); // I + P +D Anteil Y Achse
gps_reg_x = ((int_east * Parameter_UserParam2)/32) + ((dist_east * Parameter_UserParam1)/8)+ ((diff_east * Parameter_UserParam3)/2); //
gps_reg_y = ((int_north * Parameter_UserParam2)/32) + ((dist_north * Parameter_UserParam1)/8)+ ((diff_north * Parameter_UserParam3)/2); // I + P +D Anteil Y Achse
 
//Richtung bezogen auf Nordpol bestimmen
GPS_hdng_abs_2trgt = arctan_i((long)gps_reg_x,(long)gps_reg_y);
397,8 → 393,7
else if (GPS_hdng_rel_2trgt >180) GPS_hdng_rel_2trgt = 360 - GPS_hdng_rel_2trgt;
else if (GPS_hdng_rel_2trgt <-180) GPS_hdng_rel_2trgt = 360 + GPS_hdng_rel_2trgt;
// Regelabweichung aus x,y zu Ziel in Distanz umrechnen
// Regelabweichung aus x,y zu Ziel in Distanz umrechnen
if (abs(gps_reg_x) > abs(gps_reg_y) )
{
dist = (long)gps_reg_x; //Groesseren Wert wegen besserer Genauigkeit nehmen
409,18 → 404,41
dist = (long)gps_reg_y;
dist = abs((dist *1000) / (long) sin_i(GPS_hdng_abs_2trgt));
}
if (dist > 200) dist = 200;
GPS_dist_2trgt = (int )dist;
// if (dist > 200) dist = 200;
// GPS_dist_2trgt = (int )dist;
 
// Winkel und Distanz in Nick und Roll groessen umrechnen
GPS_Roll = (int) +((dist * sin_i(GPS_hdng_rel_2trgt))/(1000*8));
GPS_Nick = (int) -((dist * cos_i(GPS_hdng_rel_2trgt))/(1000*8));
GPS_Roll = (int) +( (dist * (long) sin_i(GPS_hdng_rel_2trgt))/1000);
GPS_Nick = (int) -((dist * (long) cos_i(GPS_hdng_rel_2trgt))/1000);
 
if (GPS_Roll > GPS_NICKROLL_MAX) GPS_Roll = GPS_NICKROLL_MAX; //Auf Maxwerte begrenzen
else if (GPS_Roll < -GPS_NICKROLL_MAX) GPS_Roll = - GPS_NICKROLL_MAX;
if (GPS_Nick > GPS_NICKROLL_MAX) GPS_Nick = GPS_NICKROLL_MAX;
else if (GPS_Nick < - GPS_NICKROLL_MAX) GPS_Nick = - GPS_NICKROLL_MAX;
return (GPS_STST_OK);
#define GPS_V 8
if (GPS_Roll > (GPS_NICKROLL_MAX * GPS_V)) GPS_Roll = (GPS_NICKROLL_MAX * GPS_V);
else if (GPS_Roll < -(GPS_NICKROLL_MAX * GPS_V)) GPS_Roll = -(GPS_NICKROLL_MAX * GPS_V);
if (GPS_Nick > (GPS_NICKROLL_MAX * GPS_V)) GPS_Nick = (GPS_NICKROLL_MAX * GPS_V);
else if (GPS_Nick < -(GPS_NICKROLL_MAX * GPS_V)) GPS_Nick = -(GPS_NICKROLL_MAX * GPS_V);
 
//Kleine Werte verstaerken, Grosse abschwaechen
long int nick,roll;
roll = (((long) GPS_Roll) * ((long)sin_i(abs((GPS_Roll*90)/(GPS_NICKROLL_MAX * GPS_V)))))/1000;
GPS_Roll = (int) (roll / GPS_V);
nick = (((long) GPS_Nick) * ((long)sin_i(abs((GPS_Nick*90)/(GPS_NICKROLL_MAX * GPS_V)))))/1000;
GPS_Nick = (int) (nick / GPS_V);
if ((abs(dist_east) > GPS_DIST_MAX) || (abs(dist_north) > GPS_DIST_MAX)) // bei zu grossem Abstand abbrechen
{
GPS_Roll = 0;
GPS_Nick = 0;
gps_state = GPS_CRTL_IDLE;
return (GPS_STST_ERR);
}
else // Distanz ok // Die Abfrage kann noch rausfliegen, weil vorher bereits begrenzung war
{
if (GPS_Roll > GPS_NICKROLL_MAX) GPS_Roll = GPS_NICKROLL_MAX; //Auf Maxwerte begrenzen
else if (GPS_Roll < -GPS_NICKROLL_MAX) GPS_Roll = - GPS_NICKROLL_MAX;
if (GPS_Nick > GPS_NICKROLL_MAX) GPS_Nick = GPS_NICKROLL_MAX;
else if (GPS_Nick < - GPS_NICKROLL_MAX) GPS_Nick = - GPS_NICKROLL_MAX;
return (GPS_STST_OK);
}
}
else return (GPS_STST_OK);
break;
/branches/salvo_gps/README_Gps.txt
1,17 → 1,16
*********************************************************************
GPS Implementierung von Peter Muehlenbrock ("Salvo") fuer Mikrokopter/FlightCrtl
Stand 28.9.2007
GPS Implementierung von Peter Muehlenbrock ("Salvo") fürMikrokopter/FlightCrtl
Stand 29.9.2007
Verwendung der SW ohne Gewaehr. Siehe auch die Lizenzbedingungen in den Files gps.c, math.c
 
*********************************************************************
 
Hardware-Voraussetzungen:
Kalibrierter Kompass vom Typ CMPS03, waagrecht eingebaut
GPS Modul vom Typ ublox, Die Meldungungen "NAV_STATUS, NAV_POSUTM und NAV_VELED"
GPS Modul vom Typ ublox, Die Meldungungen "NAV_STATUS", "NAV_POSUTM" und "NAV_VELED"
mussen mit 4 HZ Updaterate aktiviert sein. Anschluss an RX Port der FlightCRtl.
 
Software-Voraussetzungen:
in fc.h muessen die Neutralwerte ACC_X_NEUTRAL, ACC_Y_NEUTRAL und ACC_Z_NEUTRAL
in fc.h müsen die Neutralwerte ACC_X_NEUTRAL und ACC_Y_NEUTRAL
eingetragen werden. Hierzu den Kopter waagrecht ausrichten (Wasserwaage) und mit dem Mikrokoptertool
die Neutralwerte ermitteln.
In timer0.h muess die Ausrichtung des Kompasses bezogen auf die Nordachse des Kopters
20,37 → 19,37
Hexfiles:
Ich habe bewußt keinen Hexfile generiert, da die Neutralwerte spezifisch je Kopter sind.
Die SW muß also individuell compiliert werden und der Hexfile in die FlightCrtl eingebaut werden.
Der Lohn fuer die Muehe ist eine sehr driftarme Fluglageregelung sowie eine von der Startausrichtung
unabhaengige waagrechte Lage in der Luft.
Der Lohn für die Muehe ist eine sehr driftarme Fluglageregelung sowie eine von der Startausrichtung
unabhängige waagrechte Lage in der Luft.
Alle Einstellungen beziehen sich auf AVR Studio von Atmel und den WIN_AVR Compiler.
 
Parametrierung:
Der GPS Hold Regler ist ein PID Regler, der ueber die UserParameter1(I), 2(P) und D(3) gesteuert wird.
UserParameter1 beschreibt den I-Anteil, UserParameter2 den P-Anteil, UserParameter3 den D-Anteil.
Hier kann gespielt werden. Wenn alle 0 sind, ist der Regler deaktiviert.
Standardwerte sind 1 fuer Parameter1, 2 fuer Parameter2 und 4 fuer Parameter3.
Der GPS Hold Regler ist ein PID Regler, der ueber die UserParameter1(P), 2(I) und D(3) gesteuert wird.
UserParameter1 beschreibt den P-Anteil, UserParameter2 den I-Anteil und UserParameter3 den D-Anteil.
Hier kann und muss gespielt werden. Wenn alle 0 sind, ist der Regler deaktiviert.
Standardwerte sind 8 für den P-Anteil, 1 für den I-Anteil und 18 für den D-Anteil.
 
Voraussetzungen für GPS_Hold:
Neben den genannten HW und SW Voraussetzungen muß beim Kalibrieren das GPS MOdul bereits Positions
daten liefern. Nur dann wird die Home Position abgespeichert und nur dann wird GPS_Hold aktiviert.
Kenntlich gemacht wird dies durch einen etwas laengeren Piepser nach dem Kalibrieren.
Neben den genannten HW und SW Voraussetzungen muß beim Kalibrieren das GPS MOdul bereits Positionsdaten liefern.
Nur dann wird die Home Position abgespeichert und nur dann wird GPS_Hold aktiviert.
Kenntlich gemacht wird dies durch einen etwas längeren Piepser nach dem Kalibrieren.
Das GPS Aktiv Flag im Setting muss aktiviert sein. Eine Ausrichtung des Kopters nach Nord etc. ist nicht erforderlich.
 
Aktivierung GPS_Hold im Flug:
Wenn alle genannten Voraussetzungen erfüllt sind, wird GPS Hold im Flug automatisch aktiviert, sobald der Nick und Roll Stick
fuer ca. 500msec in Neutrallage sind. Weicht einer der Sticks davon ab (Parameter GPS_STICK_HOLDOFF) oder liefert das GPS Modul keine
fürca. 500msec in Neutrallage sind. Weicht einer der Sticks davon ab (Parameter GPS_STICK_HOLDOFF) oder liefert das GPS Modul keine
gueltigen Daten mehr wird GPS_Hold sofort deaktiviert.
Damit kann jederzeit die manuelle Kontrolle wieder übernommen werden.
 
GPS_Hold regelt nur horizontale Abweichungen, keine Hoehe.
Der Magnetkompass wird nur in waagrechter Lage dazu benutzt einen
internen aus dem Giergyro ermittelten "Ersatz"kompasswert nach zu kalibrieren. Daher funktioniert die
Bstimmung der Kopterausrichtung in jeder Lebenslage, sofern nur ab und zu der Magnetkompass in die waagrechte Lage kommt.
Ein 3D Kompass ist damit überfluessig.
Der Magnetkompass wird nur in waagrechter Lage dazu benutzt einen internen aus dem Giergyro ermittelten "Ersatz"kompasswert
nach zu kalibrieren. Daher funktioniert die Bstimmung der Kopterausrichtung in jeder Lebenslage, sofern nur ab und zu
der Magnetkompass in die waagrechte Lage kommt.
Ein 3D Kompass ist damit überflüssig.
 
Bekannte Maengel:
Leichte Schwingneigung, bei laengerer Neigung weicht der Ersatzkompass
PID Regler muss noch esser parametriert werden.
Leichte Schwingneigung, bei längerer Neigung weicht der Ersatzkompass ab.
PID Regler muss noch besser parametriert werden.
 
 
/branches/salvo_gps/fc.c
329,8 → 329,8
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation
EE_Parameter.I_Faktor = 5;
EE_Parameter.UserParam1 = 0; //zur freien Verwendung
EE_Parameter.UserParam2 = 2; //zur freien Verwendung, derzeit I-Anteil GPS
EE_Parameter.UserParam3 = 64; //zur freien Verwendung, derzeit P-Anteil GPS
EE_Parameter.UserParam2 = 0; //zur freien Verwendung, derzeit I-Anteil GPS
EE_Parameter.UserParam3 = 0; //zur freien Verwendung, derzeit P-Anteil GPS
EE_Parameter.UserParam4 = 0; //zur freien Verwendung
EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos
EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo
/branches/salvo_gps/fc.h
7,10 → 7,10
 
//Salvo 1.9.2007 Neutralwerte fuer ACC Sensor fest einstellen. Startausrichtung ist dann egal ! *****
// Laut Datenblatt sind die Werte ueber Zeit und Temperatur sehr stabil.
#define ACC_NEUTRAL_FIXED 1 // wenn eins werden die neutralwerte fuer den ACC Sensor festeingestellt
#define ACC_X_NEUTRAL 518 // ADC Wandler Wert in Neutrallage (0g): Vom individuellen Sensor abhaengig
#define ACC_Y_NEUTRAL 516 // ADC Wandler wert in Neutrallage (0g)
#define ACC_Z_NEUTRAL 745 // ADC Wandler Wert in Neutrallage (1g)
#define ACC_NEUTRAL_FIXED 1 // wenn eins werden die Neutralwerte fuer den ACC Sensor festeingestellt
#define ACC_X_NEUTRAL 518 // ADC Wandler Wert in Neutrallage (0g): Vom individuellen Sensor abhaengig
#define ACC_Y_NEUTRAL 516 // ADC Wandler wert in Neutrallage (0g)
//#define ACC_Z_NEUTRAL 745 // ADC Wandler Wert in Neutrallage (1g)
 
#define ACC_WAAGRECHT_LIMIT 100 // Nick und Roll kleiner als dieser Wert gelten als Kriterium fuer waagrechte Lage
// Salvo End
18,10 → 18,8
// Laut Datenblatt sind die Werte ueber Zeit und Temperatur sehr stabil.
#define GYROKOMP_INC_GRAD_DEFAULT 1250 // Gyroincrements/Grad als Defaultwert
// Salvo End
//Salvo 16.9.2007 GPS_STICK_HOLDOFF ***************
// Laut Datenblatt sind die Werte ueber Zeit und Temperatur sehr stabil.
#define GPS_STICK_HOLDOFF 25 // Wenn der Nick oder Roll groesser ist, wird GPS_HOLD deaktiviert
 
 
extern unsigned char Parameter_UserParam1 ;
extern unsigned char Parameter_UserParam2 ;
extern unsigned char Parameter_UserParam3 ;
/branches/salvo_gps/flight_ctrl.aps
1,0 → 0,0
<AVRStudio><MANAGEMENT><ProjectName>flight_ctrl</ProjectName><Created>28-Aug-2007 19:41:41</Created><LastEdit>26-Sep-2007 20:20:09</LastEdit><ICON>241</ICON><ProjectType>0</ProjectType><Created>28-Aug-2007 19:41:41</Created><Version>4</Version><Build>4, 13, 0, 528</Build><ProjectTypeName>AVR GCC</ProjectTypeName></MANAGEMENT><CODE_CREATION><ObjectFile>flight_ctrl.elf</ObjectFile><EntryFile></EntryFile><SaveFolder>C:\Mikrokopter\Flight_Crtl\svn\work\</SaveFolder></CODE_CREATION><DEBUG_TARGET><CURRENT_TARGET>AVR Simulator</CURRENT_TARGET><CURRENT_PART>ATmega644.xml</CURRENT_PART><BREAKPOINTS></BREAKPOINTS><IO_EXPAND><HIDE>false</HIDE></IO_EXPAND><REGISTERNAMES><Register>R00</Register><Register>R01</Register><Register>R02</Register><Register>R03</Register><Register>R04</Register><Register>R05</Register><Register>R06</Register><Register>R07</Register><Register>R08</Register><Register>R09</Register><Register>R10</Register><Register>R11</Register><Register>R12</Register><Register>R13</Register><Register>R14</Register><Register>R15</Register><Register>R16</Register><Register>R17</Register><Register>R18</Register><Register>R19</Register><Register>R20</Register><Register>R21</Register><Register>R22</Register><Register>R23</Register><Register>R24</Register><Register>R25</Register><Register>R26</Register><Register>R27</Register><Register>R28</Register><Register>R29</Register><Register>R30</Register><Register>R31</Register></REGISTERNAMES><COM>Auto</COM><COMType>0</COMType><WATCHNUM>0</WATCHNUM><WATCHNAMES><Pane0></Pane0><Pane1></Pane1><Pane2></Pane2><Pane3></Pane3></WATCHNAMES><BreakOnTrcaeFull>0</BreakOnTrcaeFull></DEBUG_TARGET><Debugger><modules><module></module></modules><Triggers><trigger clsid="{11A8571C-BF39-4FA7-8642-286DD19644B8}" enabled="1" variable="{&quot;GPS.c&quot;, 44} ptr_position" condition="0" access="0" value1="0" value2="0" elements="1" hitcount="1" continue="0" customType="0" customScope="0"/></Triggers></Debugger><AVRGCCPLUGIN><FILES><SOURCEFILE>main.c</SOURCEFILE><SOURCEFILE>uart.c</SOURCEFILE><SOURCEFILE>analog.c</SOURCEFILE><SOURCEFILE>eeprom.c</SOURCEFILE><SOURCEFILE>fc.c</SOURCEFILE><SOURCEFILE>GPS.c</SOURCEFILE><SOURCEFILE>menu.c</SOURCEFILE><SOURCEFILE>printf_P.c</SOURCEFILE><SOURCEFILE>rc.c</SOURCEFILE><SOURCEFILE>timer0.c</SOURCEFILE><SOURCEFILE>twimaster.c</SOURCEFILE><SOURCEFILE>math.c</SOURCEFILE><HEADERFILE>uart.h</HEADERFILE><HEADERFILE>_Settings.h</HEADERFILE><HEADERFILE>analog.h</HEADERFILE><HEADERFILE>fc.h</HEADERFILE><HEADERFILE>gps.h</HEADERFILE><HEADERFILE>main.h</HEADERFILE><HEADERFILE>menu.h</HEADERFILE><HEADERFILE>old_macros.h</HEADERFILE><HEADERFILE>printf_P.h</HEADERFILE><HEADERFILE>rc.h</HEADERFILE><HEADERFILE>Settings.h</HEADERFILE><HEADERFILE>timer0.h</HEADERFILE><HEADERFILE>twimaster.h</HEADERFILE><HEADERFILE>math.h</HEADERFILE><OTHERFILE>makefile</OTHERFILE></FILES><CONFIGS><CONFIG><NAME>default</NAME><USESEXTERNALMAKEFILE>YES</USESEXTERNALMAKEFILE><EXTERNALMAKEFILE>makefile</EXTERNALMAKEFILE><PART>atmega644</PART><HEX>1</HEX><LIST>0</LIST><MAP>0</MAP><OUTPUTFILENAME>flight_ctrl.elf</OUTPUTFILENAME><OUTPUTDIR>default\</OUTPUTDIR><ISDIRTY>0</ISDIRTY><OPTIONS><OPTION><FILE>GPS.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>analog.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>eeprom.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>fc.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>main.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>math.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>menu.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>printf_P.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>rc.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>timer0.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>twimaster.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>uart.c</FILE><OPTIONLIST></OPTIONLIST></OPTION></OPTIONS><INCDIRS/><LIBDIRS/><LIBS/><LINKOBJECTS/><OPTIONSFORALL>-Wall -gdwarf-2 -O0 -fsigned-char</OPTIONSFORALL><LINKEROPTIONS></LINKEROPTIONS><SEGMENTS/></CONFIG></CONFIGS><LASTCONFIG>default</LASTCONFIG><USES_WINAVR>1</USES_WINAVR><GCC_LOC>C:\Programme\WinAVR-20070525\bin\avr-gcc.exe</GCC_LOC><MAKE_LOC>C:\Programme\WinAVR-20070525\utils\bin\make.exe</MAKE_LOC></AVRGCCPLUGIN><ProjectFiles><Files><Name>C:\Mikrokopter\Flight_Crtl\svn\work\uart.h</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\_Settings.h</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\analog.h</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\fc.h</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\gps.h</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\main.h</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\menu.h</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\old_macros.h</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\printf_P.h</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\rc.h</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\Settings.h</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\timer0.h</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\twimaster.h</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\math.h</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\main.c</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\uart.c</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\analog.c</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\eeprom.c</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\fc.c</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\GPS.c</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\menu.c</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\printf_P.c</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\rc.c</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\timer0.c</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\twimaster.c</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\math.c</Name></Files></ProjectFiles><IOView><usergroups/></IOView><Files><File00000><FileId>00000</FileId><FileName>GPS.c</FileName><Status>1</Status></File00000></Files><Events><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio>
<AVRStudio><MANAGEMENT><ProjectName>flight_ctrl</ProjectName><Created>28-Aug-2007 19:41:41</Created><LastEdit>28-Sep-2007 21:51:22</LastEdit><ICON>241</ICON><ProjectType>0</ProjectType><Created>28-Aug-2007 19:41:41</Created><Version>4</Version><Build>4, 13, 0, 528</Build><ProjectTypeName>AVR GCC</ProjectTypeName></MANAGEMENT><CODE_CREATION><ObjectFile>flight_ctrl.elf</ObjectFile><EntryFile></EntryFile><SaveFolder>C:\Mikrokopter\Flight_Crtl\svn\work\</SaveFolder></CODE_CREATION><DEBUG_TARGET><CURRENT_TARGET>AVR Simulator</CURRENT_TARGET><CURRENT_PART>ATmega644.xml</CURRENT_PART><BREAKPOINTS></BREAKPOINTS><IO_EXPAND><HIDE>false</HIDE></IO_EXPAND><REGISTERNAMES><Register>R00</Register><Register>R01</Register><Register>R02</Register><Register>R03</Register><Register>R04</Register><Register>R05</Register><Register>R06</Register><Register>R07</Register><Register>R08</Register><Register>R09</Register><Register>R10</Register><Register>R11</Register><Register>R12</Register><Register>R13</Register><Register>R14</Register><Register>R15</Register><Register>R16</Register><Register>R17</Register><Register>R18</Register><Register>R19</Register><Register>R20</Register><Register>R21</Register><Register>R22</Register><Register>R23</Register><Register>R24</Register><Register>R25</Register><Register>R26</Register><Register>R27</Register><Register>R28</Register><Register>R29</Register><Register>R30</Register><Register>R31</Register></REGISTERNAMES><COM>Auto</COM><COMType>0</COMType><WATCHNUM>0</WATCHNUM><WATCHNAMES><Pane0></Pane0><Pane1></Pane1><Pane2></Pane2><Pane3></Pane3></WATCHNAMES><BreakOnTrcaeFull>0</BreakOnTrcaeFull></DEBUG_TARGET><Debugger><modules><module></module></modules><Triggers><trigger clsid="{11A8571C-BF39-4FA7-8642-286DD19644B8}" enabled="1" variable="{&quot;GPS.c&quot;, 44} ptr_position" condition="0" access="0" value1="0" value2="0" elements="1" hitcount="1" continue="0" customType="0" customScope="0"/></Triggers></Debugger><AVRGCCPLUGIN><FILES><SOURCEFILE>main.c</SOURCEFILE><SOURCEFILE>uart.c</SOURCEFILE><SOURCEFILE>analog.c</SOURCEFILE><SOURCEFILE>eeprom.c</SOURCEFILE><SOURCEFILE>fc.c</SOURCEFILE><SOURCEFILE>GPS.c</SOURCEFILE><SOURCEFILE>menu.c</SOURCEFILE><SOURCEFILE>printf_P.c</SOURCEFILE><SOURCEFILE>rc.c</SOURCEFILE><SOURCEFILE>timer0.c</SOURCEFILE><SOURCEFILE>twimaster.c</SOURCEFILE><SOURCEFILE>math.c</SOURCEFILE><HEADERFILE>uart.h</HEADERFILE><HEADERFILE>_Settings.h</HEADERFILE><HEADERFILE>analog.h</HEADERFILE><HEADERFILE>fc.h</HEADERFILE><HEADERFILE>gps.h</HEADERFILE><HEADERFILE>main.h</HEADERFILE><HEADERFILE>menu.h</HEADERFILE><HEADERFILE>old_macros.h</HEADERFILE><HEADERFILE>printf_P.h</HEADERFILE><HEADERFILE>rc.h</HEADERFILE><HEADERFILE>Settings.h</HEADERFILE><HEADERFILE>timer0.h</HEADERFILE><HEADERFILE>twimaster.h</HEADERFILE><HEADERFILE>math.h</HEADERFILE><OTHERFILE>makefile</OTHERFILE></FILES><CONFIGS><CONFIG><NAME>default</NAME><USESEXTERNALMAKEFILE>YES</USESEXTERNALMAKEFILE><EXTERNALMAKEFILE>makefile</EXTERNALMAKEFILE><PART>atmega644</PART><HEX>1</HEX><LIST>0</LIST><MAP>0</MAP><OUTPUTFILENAME>flight_ctrl.elf</OUTPUTFILENAME><OUTPUTDIR>default\</OUTPUTDIR><ISDIRTY>0</ISDIRTY><OPTIONS><OPTION><FILE>GPS.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>analog.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>eeprom.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>fc.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>main.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>math.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>menu.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>printf_P.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>rc.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>timer0.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>twimaster.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>uart.c</FILE><OPTIONLIST></OPTIONLIST></OPTION></OPTIONS><INCDIRS/><LIBDIRS/><LIBS/><LINKOBJECTS/><OPTIONSFORALL>-Wall -gdwarf-2 -O0 -fsigned-char</OPTIONSFORALL><LINKEROPTIONS></LINKEROPTIONS><SEGMENTS/></CONFIG></CONFIGS><LASTCONFIG>default</LASTCONFIG><USES_WINAVR>1</USES_WINAVR><GCC_LOC>C:\Programme\WinAVR-20070525\bin\avr-gcc.exe</GCC_LOC><MAKE_LOC>C:\Programme\WinAVR-20070525\utils\bin\make.exe</MAKE_LOC></AVRGCCPLUGIN><ProjectFiles><Files><Name>C:\Mikrokopter\Flight_Crtl\svn\work\uart.h</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\_Settings.h</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\analog.h</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\fc.h</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\gps.h</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\main.h</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\menu.h</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\old_macros.h</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\printf_P.h</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\rc.h</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\Settings.h</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\timer0.h</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\twimaster.h</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\math.h</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\main.c</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\uart.c</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\analog.c</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\eeprom.c</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\fc.c</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\GPS.c</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\menu.c</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\printf_P.c</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\rc.c</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\timer0.c</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\twimaster.c</Name><Name>C:\Mikrokopter\Flight_Crtl\svn\work\math.c</Name></Files></ProjectFiles><IOView><usergroups/></IOView><Files><File00000><FileId>00000</FileId><FileName>GPS.c</FileName><Status>1</Status></File00000></Files><Events><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio>
/branches/salvo_gps/gps.h
96,5 → 96,8
#define GPS_STST_ERR 2 // Fehler
 
// GPS Lageregler
#define GPS_NICKROLL_MAX 20 //Maximaler Einfluss des GPS Lagereglers auf Nick und Roll
 
#define GPS_NICKROLL_MAX 35 //Maximaler Einfluss des GPS Lagereglers auf Nick und Roll
#define GPS_DIST_MAX 300 //Maximal zulaessige Distanz bevor Regelung gestoppt wird (in 10cm)
//Salvo 16.9.2007 GPS_STICK_HOLDOFF ***************
// Laut Datenblatt sind die Werte ueber Zeit und Temperatur sehr stabil.
#define GPS_STICK_HOLDOFF 25 // Wenn der Nick oder Roll groesser ist, wird GPS_HOLD deaktiviert
/branches/salvo_gps/makefile
4,7 → 4,7
F_CPU = 20000000
#-------------------------------------------------------------------
HAUPT_VERSION = 0
NEBEN_VERSION = 06
NEBEN_VERSION = 01
VERSION_KOMPATIBEL = 4 # PC-Kompatibilität
#-------------------------------------------------------------------