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 | // |