Subversion Repositories FlightCtrl

Rev

Rev 1377 | Rev 1403 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1377 Rev 1391
Line 91... Line 91...
91
int   GierGyroFehler = 0;
91
int   GierGyroFehler = 0;
92
char GyroFaktor,GyroFaktorGier;
92
char GyroFaktor,GyroFaktorGier;
93
char IntegralFaktor,IntegralFaktorGier;
93
char IntegralFaktor,IntegralFaktorGier;
94
int  DiffNick,DiffRoll;
94
int  DiffNick,DiffRoll;
95
//int  Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0, Poti5 = 0, Poti6 = 0, Poti7 = 0, Poti8 = 0;
95
//int  Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0, Poti5 = 0, Poti6 = 0, Poti7 = 0, Poti8 = 0;
96
unsigned char Poti[9] = {0,0,0,0,0,0,0,0};
96
unsigned char Poti[9] = {0,0,0,0,0,0,0,0};
97
volatile unsigned char SenderOkay = 0;
97
volatile unsigned char SenderOkay = 0;
98
volatile unsigned char SenderRSSI = 0;
98
volatile unsigned char SenderRSSI = 0;
99
int StickNick = 0,StickRoll = 0,StickGier = 0,StickGas = 0;
99
int StickNick = 0,StickRoll = 0,StickGier = 0,StickGas = 0;
100
char MotorenEin = 0;
100
char MotorenEin = 0;
101
long HoehenWert = 0;
101
long HoehenWert = 0;
Line 158... Line 158...
158
signed int KopplungsteilNickRoll,KopplungsteilRollNick;
158
signed int KopplungsteilNickRoll,KopplungsteilRollNick;
159
unsigned char RequiredMotors = 4;
159
unsigned char RequiredMotors = 4;
160
unsigned char Motor[MAX_MOTORS];
160
unsigned char Motor[MAX_MOTORS];
161
signed int tmp_motorwert[MAX_MOTORS];
161
signed int tmp_motorwert[MAX_MOTORS];
162
unsigned char LoadHandler = 0;
162
unsigned char LoadHandler = 0;
163
#define LIMIT_MIN(value, min) {if(value < min) value = min;}
163
#define LIMIT_MIN(value, min) {if(value <= min) value = min;}
164
#define LIMIT_MAX(value, max) {if(value > max) value = max;}
164
#define LIMIT_MAX(value, max) {if(value >= max) value = max;}
165
#define LIMIT_MIN_MAX(value, min, max) {if(value < min) value = min; else if(value > max) value = max;}
165
#define LIMIT_MIN_MAX(value, min, max) {if(value <= min) value = min; else if(value >= max) value = max;}
Line 166... Line 166...
166
 
166
 
167
int MotorSmoothing(int neu, int alt)
167
int MotorSmoothing(int neu, int alt)
168
{
168
{
169
 int motor;
169
 int motor;
Line 262... Line 262...
262
    LED_Init();
262
    LED_Init();
263
    MikroKopterFlags |= FLAG_CALIBRATE;
263
    MikroKopterFlags |= FLAG_CALIBRATE;
264
    FromNaviCtrl_Value.Kalman_K = -1;
264
    FromNaviCtrl_Value.Kalman_K = -1;
265
    FromNaviCtrl_Value.Kalman_MaxDrift = 0;
265
    FromNaviCtrl_Value.Kalman_MaxDrift = 0;
266
    FromNaviCtrl_Value.Kalman_MaxFusion = 32;
266
    FromNaviCtrl_Value.Kalman_MaxFusion = 32;
267
   
267
 
268
   for(i=0;i<8;i++)
268
   for(i=0;i<8;i++)
269
    {
269
    {
270
     Poti[i] =  PPM_in[EE_Parameter.Kanalbelegung[K_POTI1 + i]] + 110;
270
     Poti[i] =  PPM_in[EE_Parameter.Kanalbelegung[K_POTI1 + i]] + 110;
271
        }
271
        }
272
    SenderOkay = 100;
272
    SenderOkay = 100;
273
    if(ServoActive)
273
    if(ServoActive)
Line 429... Line 429...
429
  for(i=0;i<8;i++)
429
  for(i=0;i<8;i++)
430
    {
430
    {
431
     int tmp;
431
     int tmp;
432
         tmp = PPM_in[EE_Parameter.Kanalbelegung[K_POTI1 + i]] + 110;
432
         tmp = PPM_in[EE_Parameter.Kanalbelegung[K_POTI1 + i]] + 110;
433
         if(tmp > 255) tmp = 255; else if(tmp < 0) tmp = 0;
433
         if(tmp > 255) tmp = 255; else if(tmp < 0) tmp = 0;
434
     if(Poti[i] > tmp) Poti[i]--;  else  if(Poti[i] < tmp) Poti[i]++;
434
     if(Poti[i] > tmp) Poti[i]--;  else  if(Poti[i] < tmp) Poti[i]++;
435
        }
435
        }
436
}
436
}
Line 437... Line 437...
437
 
437
 
438
//############################################################################
438
//############################################################################
Line 454... Line 454...
454
    ANALOG_ON;
454
    ANALOG_ON;
455
   for(i=0;i<8;i++)
455
   for(i=0;i<8;i++)
456
    {
456
    {
457
     int tmp;
457
     int tmp;
458
         tmp = PPM_in[EE_Parameter.Kanalbelegung[K_POTI1 + i]] + 110;
458
         tmp = PPM_in[EE_Parameter.Kanalbelegung[K_POTI1 + i]] + 110;
459
         if(tmp > 255) tmp = 255; else if(tmp < 0) tmp = 0;
459
         LIMIT_MIN_MAX(tmp, 0, 255);
460
     if(Poti[i] > tmp) Poti[i]--;  else  if(Poti[i] < tmp) Poti[i]++;
460
     if(Poti[i] > tmp) Poti[i]--;  else  if(Poti[i] < tmp) Poti[i]++;
461
        }
461
        }
462
        Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L;
462
        Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L;
463
        Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L;
463
        Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L;
464
}
464
}
Line 497... Line 497...
497
//############################################################################
497
//############################################################################
498
// Trägt ggf. das Poti als Parameter ein
498
// Trägt ggf. das Poti als Parameter ein
499
void ParameterZuordnung(void)
499
void ParameterZuordnung(void)
500
//############################################################################
500
//############################################################################
501
{
501
{
502
// #define CHK_POTI(b,a) {if(a < 247) b = a; else switch(a) { case 248: b = Poti8; break; case 249: b = Poti7; break; case 250: b = Poti6; break; case 251: b = Poti5; break; case 252: b = Poti4; break; case 253: b = Poti3; break; case 254: b = Poti2; break; case 255: b = Poti1; break; };}
-
 
503
 #define CHK_POTI(b,a) {if(a < 247) b = a; else b = Poti[255 - a];}
502
 #define CHK_POTI(b,a) {if(a < 248) b = a; else b = Poti[255 - a];}
504
 #define CHK_POTI_MM(b,a,min,max) {CHK_POTI(b,a); if(b <= min) b = min; else if(b >= max) b = max;}
503
 #define CHK_POTI_MM(b,a,min,max) {CHK_POTI(b,a); LIMIT_MIN_MAX(b, min, max);}
505
// #define CHK_POTI(b,a,min,max) { if(a > 250) { if(a == 251) b = Poti1; else if(a == 252) b = Poti2; else if(a == 253) b = Poti3; else if(a == 254) b = Poti4;} else b = a; }
-
 
506
   
504
 
507
 CHK_POTI_MM(Parameter_Luftdruck_D,EE_Parameter.Luftdruck_D,0,100);
505
 CHK_POTI_MM(Parameter_Luftdruck_D,EE_Parameter.Luftdruck_D,0,100);
508
 CHK_POTI_MM(Parameter_Hoehe_P,EE_Parameter.Hoehe_P,0,100);
506
 CHK_POTI_MM(Parameter_Hoehe_P,EE_Parameter.Hoehe_P,0,100);
509
 CHK_POTI_MM(Parameter_Gyro_P,EE_Parameter.Gyro_P,10,255);
507
 CHK_POTI_MM(Parameter_Gyro_P,EE_Parameter.Gyro_P,10,255);
510
 CHK_POTI_MM(Parameter_J16Timing,EE_Parameter.J16Timing,1,255);
508
 CHK_POTI_MM(Parameter_J16Timing,EE_Parameter.J16Timing,1,255);
511
 CHK_POTI_MM(Parameter_J17Timing,EE_Parameter.J17Timing,1,255);
509
 CHK_POTI_MM(Parameter_J17Timing,EE_Parameter.J17Timing,1,255);
Line 537... Line 535...
537
 CHK_POTI(Parameter_DynamicStability,EE_Parameter.DynamicStability);
535
 CHK_POTI(Parameter_DynamicStability,EE_Parameter.DynamicStability);
538
 CHK_POTI(Parameter_ExternalControl,EE_Parameter.ExternalControl);
536
 CHK_POTI(Parameter_ExternalControl,EE_Parameter.ExternalControl);
539
 Ki = 10300 / (Parameter_I_Faktor + 1);
537
 Ki = 10300 / (Parameter_I_Faktor + 1);
540
 MAX_GAS = EE_Parameter.Gas_Max;
538
 MAX_GAS = EE_Parameter.Gas_Max;
541
 MIN_GAS = EE_Parameter.Gas_Min;
539
 MIN_GAS = EE_Parameter.Gas_Min;
542
J5Low;
-
 
543
sei();
-
 
544
}
540
}
Line 545... Line 541...
545
 
541
 
546
//############################################################################
542
//############################################################################
547
//
543
//