/branches/MergedVersionsByOsiair/alpha/v060SalvoKompassNick666MM3Gyro/compass.c |
---|
14,6 → 14,7 |
*/ |
#include "main.h" |
#include "math.h" |
MM3_struct MM3; |
63,8 → 64,8 |
return; // Jetzt gehts weiter in SIGNAL (SIG_SPI) |
case MM3_TILT: // Zeitnahe Speicherung der aktuellen Neigung in ° |
MM3.NickGrad = asin_i((float)Aktuell_ax/220*200); |
MM3.RollGrad = asin_i((float)Aktuell_ay/220*200); |
MM3.NickGrad = IntegralNick/(120*8); |
MM3.RollGrad = IntegralRoll/(120*8); |
MM3.AXIS = MM3_X; |
MM3.STATE = MM3_RESET; |
134,10 → 135,10 |
signed int heading; |
// Berechung von sinus und cosinus |
sin_nick = sin_i(MM3.NickGrad); |
cos_nick = cos_i(MM3.NickGrad); |
sin_roll = sin_i(MM3.RollGrad); |
cos_roll = cos_i(MM3.RollGrad); |
sin_nick = sin_f(MM3.NickGrad); |
cos_nick = cos_f(MM3.NickGrad); |
sin_roll = sin_f(MM3.RollGrad); |
cos_roll = cos_f(MM3.RollGrad); |
// Neigungskompensation |
x_corr = (cos_nick * MM3.x_axis) + (((sin_roll * MM3.y_axis) - (cos_roll * MM3.z_axis)) * sin_nick); |
/branches/MergedVersionsByOsiair/alpha/v060SalvoKompassNick666MM3Gyro/fc.c |
---|
284,9 → 284,9 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
void DefaultKonstanten1(void) |
{ |
EE_Parameter.Kanalbelegung[K_NICK] = 1; |
EE_Parameter.Kanalbelegung[K_NICK] = 3; |
EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
EE_Parameter.Kanalbelegung[K_GAS] = 3; |
EE_Parameter.Kanalbelegung[K_GAS] = 1; |
EE_Parameter.Kanalbelegung[K_GIER] = 4; |
EE_Parameter.Kanalbelegung[K_POTI1] = 5; |
EE_Parameter.Kanalbelegung[K_POTI2] = 6; |
328,9 → 328,9 |
void DefaultKonstanten2(void) |
{ |
EE_Parameter.Kanalbelegung[K_NICK] = 1; |
EE_Parameter.Kanalbelegung[K_NICK] = 3; |
EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
EE_Parameter.Kanalbelegung[K_GAS] = 3; |
EE_Parameter.Kanalbelegung[K_GAS] = 1; |
EE_Parameter.Kanalbelegung[K_GIER] = 4; |
EE_Parameter.Kanalbelegung[K_POTI1] = 5; |
EE_Parameter.Kanalbelegung[K_POTI2] = 6; |
702,12 → 702,17 |
DebugOut.Analog[6] = (Mess_Integral_Hoch / 512); |
DebugOut.Analog[7] = GasMischanteil; |
DebugOut.Analog[8] = KompassValue; |
DebugOut.Analog[12] = MM3_heading(); |
DebugOut.Analog[9] = MM3.x_axis; |
DebugOut.Analog[10] = MM3.y_axis; |
DebugOut.Analog[11] = MM3.z_axis; |
DebugOut.Analog[9] = KompassRichtung; |
DebugOut.Analog[10] = MM3_heading(); |
//DebugOut.Analog[9] = MM3.x_axis; |
//DebugOut.Analog[10] = MM3.y_axis; |
//DebugOut.Analog[11] = MM3.z_axis; |
//DebugOut.Analog[13] = KompassRichtung; |
} |
/branches/MergedVersionsByOsiair/alpha/v060SalvoKompassNick666MM3Gyro/flight-ctrl_mega644_v0_60.aws |
---|
1,0 → 0,0 |
<AVRWorkspace><IOSettings><CurrentRegisters/></IOSettings><part name="ATMEGA644"/><Files><File00000 Name="E:\hubi\ufo\mickrokopter\a Versions\version system\flightcontrol\branches\MergedVersionsByOsiair\alpha\v60SalvoKompassGyro\main.c" Position="322 71 1034 624" LineCol="17 0" State="Maximized"/><File00001 Name="E:\hubi\ufo\mickrokopter\a Versions\version system\flightcontrol\branches\MergedVersionsByOsiair\alpha\v60SalvoKompassGyro\compass.c" Position="333 69 1045 622" LineCol="51 0" State="Maximized"/><File00002 Name="E:\hubi\ufo\mickrokopter\a Versions\version system\flightcontrol\branches\MergedVersionsByOsiair\alpha\v60SalvoKompassGyro\math.c" Position="381 136 931 508" LineCol="229 0" State="Maximized"/><File00003 Name="E:\hubi\ufo\mickrokopter\a Versions\version system\flightcontrol\branches\MergedVersionsByOsiair\alpha\v60SalvoKompassGyro\analog.c" Position="336 71 1182 830" LineCol="0 0" State="Maximized"/></Files></AVRWorkspace> |
<AVRWorkspace><IOSettings><CurrentRegisters/></IOSettings><part name="ATMEGA644"/><Files><File00000 Name="E:\hubi\ufo\mickrokopter\a Versions\eigene versionen\Kompass + GPS\v60SalvoKompassGyro\main.c" Position="320 71 1032 624" LineCol="116 0" State="Maximized"/><File00001 Name="E:\hubi\ufo\mickrokopter\a Versions\eigene versionen\Kompass + GPS\v60SalvoKompassGyro\compass.c" Position="330 67 1396 826" LineCol="128 0" State="Maximized"/><File00002 Name="E:\hubi\ufo\mickrokopter\a Versions\eigene versionen\Kompass + GPS\v60SalvoKompassGyro\math.c" Position="375 132 925 504" LineCol="161 0" State="Maximized"/><File00003 Name="E:\hubi\ufo\mickrokopter\a Versions\eigene versionen\Kompass + GPS\v60SalvoKompassGyro\analog.c" Position="336 71 1182 830" LineCol="106 0" State="Maximized"/></Files></AVRWorkspace> |
/branches/MergedVersionsByOsiair/alpha/v060SalvoKompassNick666MM3Gyro/math.c |
---|
182,8 → 182,12 |
return u.f; |
} |
// Kosinusfunktion im Gradmaß |
float cos_f(signed int winkel) |
{ |
return (sin_f(90-winkel)); |
} |
// Sinusfunktion im Gradmaß |
float sin_f(signed int winkel) |
{ |
210,13 → 214,7 |
return (sinus*m*n); |
} |
// Kosinusfunktion im Gradmaß |
float cos_f(signed int winkel) |
{ |
return (sin_f(90-winkel)); |
} |
const uint8_t pgm_asin[201] PROGMEM = {0,0,1,1,1,1,2,2,2,3,3,3,3,4,4,4,5,5,5,5,6,6,6,7,7,7,7,8,8,8,9,9,9,9,10,10,10,11,11,11,12,12,12,12,13,13,13,14,14,14,14,15,15,15,16,16,16,17,17,17,17,18,18,18,19,19,19,20,20,20,20,21,21,21,22,22,22,23,23,23,24,24,24,25,25,25,25,26,26,26,27,27,27,28,28,28,29,29,29,30,30,30,31,31,31,32,32,32,33,33,33,34,34,34,35,35,35,36,36,37,37,37,38,38,38,39,39,39,40,40,41,41,41,42,42,42,43,43,44,44,44,45,45,46,46,46,47,47,48,48,49,49,49,50,50,51,51,52,52,53,53,54,54,55,55,56,56,57,57,58,58,59,59,60,60,61,62,62,63,64,64,65,66,66,67,68,68,69,70,71,72,73,74,75,76,77,79,80,82,84,90}; |
// Akurssinusfunktion im Gradmaß |
229,4 → 227,3 |
return (pgm_read_byte(&pgm_asin[i]) * m); |
} |
/branches/MergedVersionsByOsiair/alpha/v060SalvoKompassNick666MM3Gyro/timer0.c |
---|
60,8 → 60,15 |
if (!cntKompass--) // Aufruf mit 25 Hz |
{ |
KompassValue = MM3_heading(); |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
KompassValue = (MM3_heading()); |
if (KompassValue < 0 ) { KompassValue = 380+MM3_heading();} |
if (KompassValue > 359) { KompassValue = 359;} |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360); |
cntKompass = 320; |
} |
} |
/branches/MergedVersionsByOsiair/alpha/v060SalvoKompassNick666MM3Gyro/timer0.h |
---|
16,3 → 16,4 |
extern volatile unsigned int beeptime; |
extern volatile unsigned int cntKompass; |
extern int ServoValue; |