Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 154 → Rev 155

/branches/salvo_gps/fc.c
76,9 → 76,10
unsigned char Notlandung = 0;
unsigned char HoehenReglerAktiv = 0;
static int SignalSchlecht = 0;
uint8_t magkompass_ok=0;
 
//Salvo 2.9.2007 Ersatzkompass
volatile long GyroKomp_Int,GyroKomp_Int2;
volatile int GyroKomp_Inc_Grad; // Gyroincrements / Grad
volatile int GyroKomp_Value; // Der ermittelte Kompasswert aus Gyro und Magnetkompass
// Salvo End
float GyroFaktor;
177,7 → 178,6
//Salvo 2.9.2007 Ersatzkompass
GyroKomp_Int = 0;
GyroKomp_Int2 = 0;
GyroKomp_Inc_Grad = GYROKOMP_INC_GRAD_DEFAULT;
// Salvo End
}
 
321,8 → 321,8
EE_Parameter.Gyro_P = 120; //80 // Wert : 0-250
EE_Parameter.Gyro_I = 150; // Wert : 0-250
EE_Parameter.UnterspannungsWarnung = 100; // Wert : 0-250
EE_Parameter.NotGas = 90; // Wert : 0-250 // Gaswert bei Empangsverlust
EE_Parameter.NotGasZeit = 50; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen
EE_Parameter.NotGas = 100; // Wert : 0-250 // Gaswert bei Empangsverlust
EE_Parameter.NotGasZeit = 60; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation
EE_Parameter.I_Faktor = 5;
EE_Parameter.UserParam1 = 0; //zur freien Verwendung
364,8 → 364,8
EE_Parameter.Gyro_P = 175; //80 // Wert : 0-250
EE_Parameter.Gyro_I = 175; // Wert : 0-250
EE_Parameter.UnterspannungsWarnung = 100; // Wert : 0-250
EE_Parameter.NotGas = 90; // Wert : 0-250 // Gaswert bei Empangsverlust
EE_Parameter.NotGasZeit = 50; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen
EE_Parameter.NotGas = 100; // Wert : 0-250 // Gaswert bei Empangsverlust
EE_Parameter.NotGasZeit = 60; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation
EE_Parameter.I_Faktor = 5;
EE_Parameter.UserParam1 = 0; //zur freien Verwendung
616,13 → 616,9
#define DRIFT_FAKTOR 3
if(ZaehlMessungen >= 1000 / DRIFT_FAKTOR)
{
// Salvo 8.9.2007 Ersatzkompass *******
// Salvo 12.9.2007 Ersatzkompass *******
ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern
if (GyroKomp_Int/GYROKOMP_INC_GRAD_DEFAULT >=360 )
{
// GyroKomp_Int = GyroKomp_Int- (long)(GYROKOMP_INC_GRAD_DEFAULT *360);
GyroKomp_Int = 0;
}
if (GyroKomp_Int/GYROKOMP_INC_GRAD_DEFAULT >=360 ) GyroKomp_Int = 0;
ANALOG_ON; // ADC einschalten
ROT_OFF;
// Salvo End
662,15 → 658,15
// Salvo 31.8.2007 Abgleich Giergyro nur wenn Kompass aktiv und ok ist ***********************
// Ohne Kompass wird die Pseudo-Gyrodrift durch die Driftkompensation nur verschlimmert
// Ohne Driftkompensation ist die Gierachse wesentlich stabiler
if ((EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV) && (!SignalSchlecht))
{
if(Mess_Integral_Gier2 > 500/DRIFT_FAKTOR) AdNeutralGier--;
if(Mess_Integral_Gier2 <-500/DRIFT_FAKTOR) AdNeutralGier++;
}
else
{
Mess_Integral_Gier2 = 0;
}
// if ((EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV) && (!SignalSchlecht))
// Salvo 13.9.2007
// if ((EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV) && (magkompass_ok >0))
// {
// if(Mess_Integral_Gier2 > 500/DRIFT_FAKTOR) AdNeutralGier--;
// if(Mess_Integral_Gier2 <-500/DRIFT_FAKTOR) AdNeutralGier++;
// }
// else Mess_Integral_Gier2 = 0;
// Salvo End ***********************
ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern
Mess_IntegralNick2 = IntegralNick;
718,7 → 714,7
// Gieren
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
sollGier = StickGier;
if(abs(StickGier) > 35)
if(abs(StickGier) > 30)
{
if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX)) NeueKompassRichtungMerken = 1;
}
734,13 → 730,15
// Salvo Ersatzkompass 8.9.2007 **********************
if (Kompass_Neuer_Wert > 0)
{
w = (abs(Mittelwert_AccNick));
Kompass_Neuer_Wert = 0;
w = (abs(Mittelwert_AccNick));
v = (abs(Mittelwert_AccRoll));
if ((w < ACC_WAAGRECHT_LIMIT) && (v < ACC_WAAGRECHT_LIMIT)) //Ersatzkompass nur mit Magnetkompass aktualisieren wenn alle sok
{
if ((abs(KompassValue - Kompass_Value_Old)) < 5) // Aufeinanderfolgende Werte duerfen nur minimal abweichen
{
ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern
ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern
magkompass_ok = 1; // Flag dass Magnetkompass stabil arbeitet
GyroKomp_Int = (GyroKomp_Int )/GYROKOMP_INC_GRAD_DEFAULT;
w = KompassValue - GyroKomp_Int;
if ((w > 0) && (w < 180))
765,7 → 763,7
ANALOG_ON; // ADC einschalten
}
}
Kompass_Neuer_Wert = 0;
else magkompass_ok = 0;
}
 
// Salvo End *************************
774,17 → 772,29
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Kompass
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//KompassValue = 12;
if(KompassValue && (EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV))
{
w = abs(IntegralNick /512); // mit zunehmender Neigung den Einfluss drosseln
v = abs(IntegralRoll /512);
if(v > w) w = v; // grösste Neigung ermitteln
if(w < 20 && NeueKompassRichtungMerken && !SignalSchlecht)
if(v > w) w = v; // grösste Neigung ermitteln
// Salvo 12.9.2007 Kompassdaempfung abschalten weil Ersatzkompass verwendet wird
// w=0, v=0;
//Salvo End
// if(w < 20 && NeueKompassRichtungMerken && !SignalSchlecht)
if ((magkompass_ok > 0) && NeueKompassRichtungMerken)
{
KompassStartwert = KompassValue;
// Salvo 12.9.2007 Ersatzkompass nehmen statt Magnetkompass
// KompassStartwert = KompassValue;
// KompassStartwert = GyroKomp_Int/GYROKOMP_INC_GRAD_DEFAULT;
// Salvo End *************************
// Salvo 13.9.2007
KompassStartwert = KompassValue;
// Salvo End
NeueKompassRichtungMerken = 0;
}
// Salvo 13.9.2007
w=0;
// Salvo End
w = (w * Parameter_KompassWirkung) / 64; // auf die Wirkung normieren
w = Parameter_KompassWirkung - w; // Wirkung ggf drosseln
if(w > 0)
791,7 → 801,11
{
ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern
 
// Salvo 30.8.2007 Winkelbegrenzung **********************
// Salvo Kompasssteuerung **********************
if (magkompass_ok > 0) Mess_Integral_Gier += (KompassRichtung * w) / 32; // nach Kompass ausrichten
// Salvo End
// Salvo 30.8.2007 Winkelbegrenzung **********************
/*
if ((!SignalSchlecht) )
{
if (abs(KompassRichtung) < 135 )
799,6 → 813,7
Mess_Integral_Gier += (KompassRichtung * w) / 32; // nach Kompass ausrichten
}
}
*/
// Salvo End *************************
 
ANALOG_ON; // ADC einschalten
829,16 → 844,18
DebugOut.Analog[7] = GasMischanteil;
DebugOut.Analog[8] = KompassValue;
// ******provisorisch
DebugOut.Analog[9] = cnt1;
// DebugOut.Analog[9] = cnt1;
// DebugOut.Analog[10] = cnt1;
// DebugOut.Analog[11] = cnt2;
DebugOut.Analog[10] = (gps_act_position.utm_east/10) % 10000;
DebugOut.Analog[11] = (gps_act_position.utm_north/10) % 10000;
// DebugOut.Analog[10] = (gps_act_position.utm_east/10) % 10000;
// DebugOut.Analog[11] = (gps_act_position.utm_north/10) % 10000;
// ******provisorisch
/*
 
DebugOut.Analog[9] = GyroKomp_Int/GYROKOMP_INC_GRAD_DEFAULT;
DebugOut.Analog[10] = GyroKomp_Int2/GYROKOMP_INC_GRAD_DEFAULT;
DebugOut.Analog[10] = magkompass_ok;
DebugOut.Analog[11] = Mess_Integral_Gier2;
/*
DebugOut.Analog[11] = GyroKomp_Inc_Grad;
DebugOut.Analog[12] = GyroKomp_Value;
*/
/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>11-Sep-2007 20:26:56</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><IOView><usergroups/></IOView><Files><File00000><FileId>00000</FileId><FileName>main.c</FileName><Status>1</Status></File00000><File00001><FileId>00001</FileId><FileName>fc.c</FileName><Status>1</Status></File00001><File00002><FileId>00002</FileId><FileName>fc.h</FileName><Status>1</Status></File00002><File00003><FileId>00003</FileId><FileName>timer0.c</FileName><Status>1</Status></File00003><File00004><FileId>00004</FileId><FileName>timer0.h</FileName><Status>1</Status></File00004><File00005><FileId>00005</FileId><FileName>uart.c</FileName><Status>1</Status></File00005><File00006><FileId>00006</FileId><FileName>C:\Mikrokopter\PitSchu\070812_v5.1b\GPS.c</FileName><Status>1</Status></File00006><File00007><FileId>00007</FileId><FileName>math.c</FileName><Status>1</Status></File00007><File00008><FileId>00008</FileId><FileName>analog.c</FileName><Status>1</Status></File00008><File00009><FileId>00009</FileId><FileName>menu.c</FileName><Status>1</Status></File00009><File00010><FileId>00010</FileId><FileName>main.h</FileName><Status>1</Status></File00010><File00011><FileId>00011</FileId><FileName>math.h</FileName><Status>1</Status></File00011><File00012><FileId>00012</FileId><FileName>gps.h</FileName><Status>1</Status></File00012><File00013><FileId>00013</FileId><FileName>GPS.c</FileName><Status>1</Status></File00013><File00014><FileId>00014</FileId><FileName>analog.h</FileName><Status>1</Status></File00014></Files><Workspace><File00000><Position>262 81 1402 765</Position><LineCol>89 12</LineCol><State>Maximized</State></File00000><File00001><Position>365 311 1335 745</Position><LineCol>445 0</LineCol></File00001><File00002><Position>203 101 1173 535</Position><LineCol>0 0</LineCol></File00002><File00003><Position>230 136 1200 570</Position><LineCol>144 0</LineCol></File00003><File00004><Position>257 171 1227 605</Position><LineCol>23 0</LineCol></File00004><File00005><Position>226 57 1366 741</Position><LineCol>60 0</LineCol></File00005><File00006><Position>208 45 1348 729</Position><LineCol>57 0</LineCol></File00006><File00007><Position>371 255 1341 689</Position><LineCol>18 0</LineCol></File00007><File00008><Position>202 41 1342 725</Position><LineCol>157 0</LineCol></File00008><File00009><Position>290 184 1260 618</Position><LineCol>18 0</LineCol></File00009><File00010><Position>344 220 1314 654</Position><LineCol>75 17</LineCol></File00010><File00011><Position>425 325 1395 759</Position><LineCol>9 0</LineCol></File00011><File00012><Position>263 115 1233 549</Position><LineCol>0 0</LineCol></File00012><File00013><Position>266 117 1236 551</Position><LineCol>0 0</LineCol></File00013><File00014><Position>293 152 1263 586</Position><LineCol>0 0</LineCol></File00014></Workspace><Events><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio>
<AVRStudio><MANAGEMENT><ProjectName>flight_ctrl</ProjectName><Created>28-Aug-2007 19:41:41</Created><LastEdit>13-Sep-2007 18:08:43</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><IOView><usergroups/></IOView><Files><File00000><FileId>00000</FileId><FileName>main.c</FileName><Status>1</Status></File00000><File00001><FileId>00001</FileId><FileName>fc.c</FileName><Status>1</Status></File00001><File00002><FileId>00002</FileId><FileName>fc.h</FileName><Status>1</Status></File00002><File00003><FileId>00003</FileId><FileName>timer0.c</FileName><Status>1</Status></File00003><File00004><FileId>00004</FileId><FileName>timer0.h</FileName><Status>1</Status></File00004><File00005><FileId>00005</FileId><FileName>uart.c</FileName><Status>1</Status></File00005><File00006><FileId>00006</FileId><FileName>C:\Mikrokopter\PitSchu\070812_v5.1b\GPS.c</FileName><Status>1</Status></File00006><File00007><FileId>00007</FileId><FileName>math.c</FileName><Status>1</Status></File00007><File00008><FileId>00008</FileId><FileName>analog.c</FileName><Status>1</Status></File00008><File00009><FileId>00009</FileId><FileName>menu.c</FileName><Status>1</Status></File00009><File00010><FileId>00010</FileId><FileName>main.h</FileName><Status>1</Status></File00010><File00011><FileId>00011</FileId><FileName>math.h</FileName><Status>1</Status></File00011><File00012><FileId>00012</FileId><FileName>gps.h</FileName><Status>1</Status></File00012><File00013><FileId>00013</FileId><FileName>GPS.c</FileName><Status>1</Status></File00013></Files><Workspace><File00000><Position>253 99 1039 783</Position><LineCol>62 0</LineCol></File00000><File00001><Position>259 79 1399 763</Position><LineCol>786 40</LineCol></File00001><File00002><Position>323 206 939 640</Position><LineCol>87 0</LineCol></File00002><File00003><Position>262 81 1402 765</Position><LineCol>83 2</LineCol><State>Maximized</State></File00003><File00004><Position>377 276 993 710</Position><LineCol>23 0</LineCol></File00004><File00005><Position>404 311 1020 745</Position><LineCol>62 0</LineCol></File00005><File00006><Position>253 75 1393 759</Position><LineCol>55 0</LineCol></File00006><File00007><Position>269 136 885 570</Position><LineCol>63 0</LineCol></File00007><File00008><Position>296 171 912 605</Position><LineCol>100 0</LineCol></File00008><File00009><Position>323 206 939 640</Position><LineCol>72 0</LineCol></File00009><File00010><Position>377 276 993 710</Position><LineCol>10 0</LineCol></File00010><File00011><Position>404 311 1020 745</Position><LineCol>10 0</LineCol></File00011><File00012><Position>238 65 1024 749</Position><LineCol>23 0</LineCol></File00012><File00013><Position>256 77 1396 761</Position><LineCol>15 15</LineCol></File00013></Workspace><Events><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio>
/branches/salvo_gps/makefile
45,8 → 45,8
 
##########################################################################################################
# List C source files here. (C dependencies are automatically generated.)
SRC = main.c uart.c printf_P.c timer0.c analog.c menu.c math.c
SRC += twimaster.c rc.c fc.c GPS.c
SRC = main.c uart.c printf_P.c timer0.c analog.c menu.c
SRC += twimaster.c rc.c fc.c GPS.c math.c
 
##########################################################################################################
 
/branches/salvo_gps/math.c
16,21 → 16,48
Stand 11.9.2007
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*/
#include "main.h"
 
 
// arctan Funktion: Eingabewert x,y Rueckgabe =arctan(x,y) in grad
signed int arctan_i(signed int x, signed int y)
int arctan_i(long signed int x, long signed int y)
{
short int sign = 0;
short int change_xy = 0;
signed int i;
long signed int wert;
int return_value;
 
if (y > x) // x,y Werte vertauschen
if ((abs(x)) > (abs(y))) // x,y Werte vertauschen damit arctan <45 grad bleibt
{
sign = 1;
i = x;
x = y;
y = i;
change_xy = 1;
i = x;
x = y;
y = i;
}
// Quadranten ermitteln
 
// Wert durch lineare Interpolation ermitteln
wert= abs((x*1000)/y);
 
if (wert <=268) //0...0.0,268 entsprechend 0..15 Grad
{
return_value = (int)((wert*100)/(268-0)*(15-0)/100) +0;
}
else if (wert <=578) //0,268...0.0,568 entsprechend 15..30 Grad
{
return_value = (int)((((wert-268)*100)/(578-268)*(30-15))/100) +15;
}
else //0,568...1 entsprechend 30..45 Grad
{
return_value = (int)((((wert-578)*50)/(1000-578)*(45-30))/50) +30;
}
 
if (change_xy > 0) return_value = 90-return_value; //Quadrant 45..90 Grad
if ((x > 0) && (y <0)) return_value = - return_value;
else if ((x < 0) && (y > 0)) return_value = - return_value;
 
return return_value;
}
 
 
/branches/salvo_gps/math.h
3,7 → 3,8
// Definitionen fuer Modul math
 
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#include "main.h"
 
extern signed int sin_i(signed int winkel);
extern signed int cos_i(signed int winkel);
extern signed int arctan_i(signed int x, signed int y);
extern signed int arctan_i(long signed int x, long signed int y);
/branches/salvo_gps/timer0.c
71,7 → 71,13
}
// if(cntKompass < 10) cntKompass = 10;
// KompassValue = (unsigned long)((unsigned long)(cntKompass-10)*720L + 1L) / 703L;
//Salvo 12.9.2007 Ersatzkompass als Basis nehmen, nicht den magnetkompass
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180;
// int i;
// i = GyroKomp_Int/GYROKOMP_INC_GRAD_DEFAULT;
// if (i < 180) KompassRichtung = ((540 + i - KompassStartwert) % 360) - 180;
// else KompassRichtung = ((540 + (i-360) - KompassStartwert) % 360) - 180;
// Salvo End
Kompass_Neuer_Wert = 1;
cntKompass = 0;
}