Subversion Repositories FlightCtrl

Rev

Rev 793 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 793 Rev 800
Line 385... Line 385...
385
/************************************************************************/
385
/************************************************************************/
386
/*  Maps the parameter to poti values                                   */
386
/*  Maps the parameter to poti values                                   */
387
/************************************************************************/
387
/************************************************************************/
388
void ParameterMapping(void)
388
void ParameterMapping(void)
389
{
389
{
390
        if(SenderOkay > 140) // do the mapping of RC-Potis only if the rc-signal is ok
390
        if(RC_Quality > 160) // do the mapping of RC-Potis only if the rc-signal is ok
391
        // else the last updated values are used
391
        // else the last updated values are used
392
        {
392
        {
393
                 //update poti values by rc-signals
393
                 //update poti values by rc-signals
394
                #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; if(b <= min) b = min; else if(b >= max) b = max;}
394
                #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; if(b <= min) b = min; else if(b >= max) b = max;}
395
                CHK_POTI(FCParam.MaxHeight,ParamSet.MaxHeight,0,255);
395
                CHK_POTI(FCParam.MaxHeight,ParamSet.MaxHeight,0,255);
Line 447... Line 447...
447
        ThrustMixFraction = StickThrust;
447
        ThrustMixFraction = StickThrust;
448
    if(ThrustMixFraction < 0) ThrustMixFraction = 0;
448
    if(ThrustMixFraction < 0) ThrustMixFraction = 0;
449
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
449
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
450
// RC-signal is bad
450
// RC-signal is bad
451
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
451
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
452
// SenderOkay is incremented at good rc-level, i.e. if the ppm-signal deviation
-
 
453
// of a channel to previous frame is less than 1% the SenderOkay is incremented by 10.
-
 
454
// Typicaly within a frame of 8 channels (22.5ms) the SenderOkay is incremented by 8 * 10 = 80
-
 
455
// The decremtation of 1 in the mainloop is done every 2 ms, i.e. within a time of one rc frame
-
 
456
// the main loop is running 11 times that decrements the SenderOkay by 11.
-
 
457
        if(SenderOkay < 100)  // the rc-frame signal is not reveived or noisy
452
        if(RC_Quality < 120)  // the rc-frame signal is not reveived or noisy
458
        {
453
        {
459
                if(!PcAccess) // if also no PC-Access via UART
454
                if(!PcAccess) // if also no PC-Access via UART
460
                {
455
                {
461
                        if(BeepModulation == 0xFFFF)
456
                        if(BeepModulation == 0xFFFF)
462
                        {
457
                        {
Line 482... Line 477...
482
                        PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] = 0;
477
                        PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] = 0;
483
                        PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] = 0;
478
                        PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] = 0;
484
                        PPM_in[ParamSet.ChannelAssignment[CH_YAW]] = 0;
479
                        PPM_in[ParamSet.ChannelAssignment[CH_YAW]] = 0;
485
                }
480
                }
486
                else MotorsOn = 0; // switch of all motors
481
                else MotorsOn = 0; // switch of all motors
487
        } // eof SenderOkay < 100
482
        } // eof RC_Quality < 120
488
        else
483
        else
489
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
484
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
490
// RC-signal is good
485
// RC-signal is good
491
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
486
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
492
        if(SenderOkay > 140)
487
        if(RC_Quality > 150)
493
        {
488
        {
494
                EmergencyLanding = 0; // switch off emergency landing if RC-signal is okay
489
                EmergencyLanding = 0; // switch off emergency landing if RC-signal is okay
495
                // reset emergency timer
490
                // reset emergency timer
496
                RcLostTimer = ParamSet.EmergencyThrustDuration * 50;
491
                RcLostTimer = ParamSet.EmergencyThrustDuration * 50;
497
                if(ThrustMixFraction > 40)
492
                if(ThrustMixFraction > 40)
Line 637... Line 632...
637
                                }
632
                                }
638
                        }
633
                        }
639
                        else delay_stopmotors = 0; // reset delay timer if sticks are not in this position
634
                        else delay_stopmotors = 0; // reset delay timer if sticks are not in this position
640
                }
635
                }
641
                        // remapping of paameters only if the signal rc-sigbnal conditions are good
636
                        // remapping of paameters only if the signal rc-sigbnal conditions are good
642
        } // eof SenderOkay > 140
637
        } // eof RC_Quality > 150
643
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
638
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
644
// new values from RC
639
// new values from RC
645
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
640
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
646
        if(!NewPpmData-- || EmergencyLanding) // NewData = 0 means new data from RC
641
        if(!NewPpmData-- || EmergencyLanding) // NewData = 0 means new data from RC
647
        {
642
        {
Line 1081... Line 1076...
1081
                DebugOut.Analog[4]  = Reading_GyroYaw;
1076
                DebugOut.Analog[4]  = Reading_GyroYaw;
1082
                DebugOut.Analog[5]  = ReadingHeight;
1077
                DebugOut.Analog[5]  = ReadingHeight;
1083
                DebugOut.Analog[6]  = (Reading_Integral_Top / 512);
1078
                DebugOut.Analog[6]  = (Reading_Integral_Top / 512);
1084
                DebugOut.Analog[8]  = CompassHeading;
1079
                DebugOut.Analog[8]  = CompassHeading;
1085
                DebugOut.Analog[9]  = UBat;
1080
                DebugOut.Analog[9]  = UBat;
1086
                DebugOut.Analog[10] = SenderOkay;
1081
                DebugOut.Analog[10] = RC_Quality;
-
 
1082
                //DebugOut.Analog[11] = RC_Quality;
1087
                DebugOut.Analog[16] = Mean_AccTop;
1083
                DebugOut.Analog[16] = Mean_AccTop;
Line 1088... Line 1084...
1088
 
1084
 
1089
                /*    DebugOut.Analog[16] = motor_rx[0];
1085
                /*    DebugOut.Analog[16] = motor_rx[0];
1090
                DebugOut.Analog[17] = motor_rx[1];
1086
                DebugOut.Analog[17] = motor_rx[1];
Line 1099... Line 1095...
1099
                DebugOut.Analog[25] = motor_rx[4] + motor_rx[5] + motor_rx[6] + motor_rx[7];
1095
                DebugOut.Analog[25] = motor_rx[4] + motor_rx[5] + motor_rx[6] + motor_rx[7];
Line 1100... Line 1096...
1100
 
1096
 
1101
                DebugOut.Analog[9]  = Reading_GyroPitch;
1097
                DebugOut.Analog[9]  = Reading_GyroPitch;
1102
                DebugOut.Analog[9]  = SetPointHeight;
1098
                DebugOut.Analog[9]  = SetPointHeight;
1103
                DebugOut.Analog[10] = Reading_IntegralGyroYaw / 128;
-
 
-
 
1099
                DebugOut.Analog[10] = Reading_IntegralGyroYaw / 128;
1104
                DebugOut.Analog[11] = CompassCourse;
1100
 
1105
                DebugOut.Analog[10] = FCParam.Gyro_I;
1101
                DebugOut.Analog[10] = FCParam.Gyro_I;
1106
                DebugOut.Analog[10] = ParamSet.Gyro_I;
1102
                DebugOut.Analog[10] = ParamSet.Gyro_I;
1107
                DebugOut.Analog[9]  = CompassOffCourse;
1103
                DebugOut.Analog[9]  = CompassOffCourse;
1108
                DebugOut.Analog[10] = ThrustMixFraction;
1104
                DebugOut.Analog[10] = ThrustMixFraction;