Subversion Repositories FlightCtrl

Rev

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

Rev 1646 Rev 1775
Line 93... Line 93...
93
  }
93
  }
94
  /*
94
  /*
95
   * While we are still using userparams for flight parameters, do set
95
   * While we are still using userparams for flight parameters, do set
96
   * some safe & meaningful default values.
96
   * some safe & meaningful default values.
97
   */
97
   */
98
  staticParams.UserParams1[3] = 10;                     // Throttle stick D=10
98
  staticParams.UserParams1[3] = 8;                      // Throttle stick D=8
99
  staticParams.UserParams2[0] = 0b11010101; // All gyro filter constants 2; acc. 4
99
  staticParams.UserParams2[0] = 0b11010101; // All gyro filter constants 2; acc. 4
100
  staticParams.UserParams2[1] = 2;                      // H&I motor smoothing.
100
  staticParams.UserParams2[1] = 2;                      // H&I motor smoothing.
101
  staticParams.UserParams2[2] = 120;            // Yaw I factor
101
  staticParams.UserParams2[2] = 120;            // Yaw I factor
102
  staticParams.UserParams2[3] = 100;            // Max Z acceleration for acc. correction of angles.                    
102
  staticParams.UserParams2[3] = 10;             // Max Z acceleration for acc. correction of angles.                    
103
}
103
}
Line 104... Line 104...
104
 
104
 
105
void setOtherDefaults(void) {
105
void setOtherDefaults(void) {
106
/* Channel assignments were changed to the normal:
106
/* Channel assignments were changed to the normal:
Line 112... Line 112...
112
  staticParams.ChannelAssignment[CH_YAW]      = 4;
112
  staticParams.ChannelAssignment[CH_YAW]      = 4;
113
  staticParams.ChannelAssignment[CH_POTS+0]   = 5;
113
  staticParams.ChannelAssignment[CH_POTS+0]   = 5;
114
  staticParams.ChannelAssignment[CH_POTS+1]   = 6;
114
  staticParams.ChannelAssignment[CH_POTS+1]   = 6;
115
  staticParams.ChannelAssignment[CH_POTS+2]   = 7;
115
  staticParams.ChannelAssignment[CH_POTS+2]   = 7;
116
  staticParams.ChannelAssignment[CH_POTS+3]   = 8;
116
  staticParams.ChannelAssignment[CH_POTS+3]   = 8;
117
  staticParams.GlobalConfig = CFG_AXIS_COUPLING_ACTIVE | CFG_COMPASS_ACTIVE | CFG_GPS_ACTIVE;//CFG_HEIGHT_CONTROL | CFG_HEIGHT_SWITCH | CFG_COMPASS_FIX;
117
  staticParams.GlobalConfig = CFG_AXIS_COUPLING_ACTIVE | CFG_HEADING_HOLD; // CFG_COMPASS_ACTIVE | CFG_GPS_ACTIVE;//CFG_HEIGHT_CONTROL | CFG_HEIGHT_SWITCH | CFG_COMPASS_FIX;
118
  staticParams.HeightMinGas = 30;
118
  staticParams.HeightMinGas = 30;
119
  staticParams.MaxHeight     = 251;
119
  staticParams.MaxHeight     = 251;
120
  staticParams.HeightP      = 10;
120
  staticParams.HeightP      = 10;
121
  staticParams.HeightD  = 30;
121
  staticParams.HeightD  = 30;
122
  staticParams.Height_ACC_Effect = 30;
122
  staticParams.Height_ACC_Effect = 30;
123
  staticParams.Height_Gain = 4;
123
  staticParams.Height_Gain = 4;
124
  staticParams.StickP = 12;
124
  staticParams.StickP = 8;
125
  staticParams.StickD = 16;
125
  staticParams.StickD = 12;
126
  staticParams.StickYawP = 12;
126
  staticParams.StickYawP = 12;
127
  staticParams.MinThrottle = 8;
127
  staticParams.MinThrottle = 8;
128
  staticParams.MaxThrottle = 230;
128
  staticParams.MaxThrottle = 230;
129
  staticParams.CompassYawEffect = 128;
129
  staticParams.CompassYawEffect = 128;
130
  staticParams.GyroP = 80;
130
  staticParams.GyroP = 80;
131
  staticParams.GyroI = 100;
131
  staticParams.GyroI = 100;
132
  staticParams.LowVoltageWarning = 94;
132
  staticParams.LowVoltageWarning = 95;
133
  staticParams.EmergencyGas = 35;
133
  staticParams.EmergencyGas = 35;
134
  staticParams.EmergencyGasDuration = 30;
134
  staticParams.EmergencyGasDuration = 30;
135
  staticParams.Unused0 = 0;
135
  staticParams.Unused0 = 0;
136
  staticParams.IFactor = 32;
136
  staticParams.IFactor = 32;
137
  staticParams.ServoPitchControl = 100;
137
  staticParams.ServoPitchControl = 100;
Line 175... Line 175...
175
/***************************************************/
175
/***************************************************/
176
void ParamSet_DefaultSet1(void) { // sport
176
void ParamSet_DefaultSet1(void) { // sport
177
  setOtherDefaults();
177
  setOtherDefaults();
178
  gyro_setDefaults();
178
  gyro_setDefaults();
179
  setDefaultUserParams();
179
  setDefaultUserParams();
-
 
180
  staticParams.GlobalConfig = CFG_ROTARY_RATE_LIMITER | CFG_AXIS_COUPLING_ACTIVE;
180
  memcpy(staticParams.Name, "Sport\0",6);
181
  memcpy(staticParams.Name, "Sport\0",6);
181
}
182
}
Line 182... Line 183...
182
 
183
 
183
/***************************************************/
184
/***************************************************/
184
/*    Default Values for parameter set 2           */
185
/*    Default Values for parameter set 2           */
185
/***************************************************/
186
/***************************************************/
186
void ParamSet_DefaultSet2(void) { // normal
187
void ParamSet_DefaultSet2(void) { // normal
187
  setOtherDefaults();
188
  setOtherDefaults();
188
  gyro_setDefaults();
189
  gyro_setDefaults();
-
 
190
  setDefaultUserParams();
189
  setDefaultUserParams();
191
  staticParams.GlobalConfig = CFG_ROTARY_RATE_LIMITER | CFG_AXIS_COUPLING_ACTIVE;
190
  staticParams.Height_Gain = 3;
192
  staticParams.Height_Gain = 3;
191
  staticParams.J16Timing = 20;
193
  staticParams.J16Timing = 20;
192
  staticParams.J17Timing = 20;
194
  staticParams.J17Timing = 20;
193
  memcpy(staticParams.Name, "Normal\0", 7);
195
  memcpy(staticParams.Name, "Normal\0", 7);
Line 198... Line 200...
198
/***************************************************/
200
/***************************************************/
199
void ParamSet_DefaultSet3(void) { // beginner
201
void ParamSet_DefaultSet3(void) { // beginner
200
  setOtherDefaults();
202
  setOtherDefaults();
201
  gyro_setDefaults();
203
  gyro_setDefaults();
202
  setDefaultUserParams();
204
  setDefaultUserParams();
203
  staticParams.GlobalConfig = CFG_ROTARY_RATE_LIMITER | CFG_AXIS_COUPLING_ACTIVE | CFG_COMPASS_ACTIVE | CFG_GPS_ACTIVE;//CFG_HEIGHT_CONTROL | CFG_HEIGHT_SWITCH | CFG_COMPASS_FIX;
205
  staticParams.GlobalConfig = CFG_ROTARY_RATE_LIMITER | CFG_AXIS_COUPLING_ACTIVE;
204
  staticParams.Height_Gain = 3;
206
  staticParams.Height_Gain = 3;
205
  staticParams.EmergencyGasDuration = 20;
207
  staticParams.EmergencyGasDuration = 20;
206
  staticParams.AxisCouplingYawCorrection = 70;
208
  staticParams.AxisCouplingYawCorrection = 70;
207
  staticParams.J16Timing = 30;
209
  staticParams.J16Timing = 30;
208
  staticParams.J17Timing = 30;
210
  staticParams.J17Timing = 30;
Line 260... Line 262...
260
  // set this parameter set to active set
262
  // set this parameter set to active set
261
  setActiveParamSet(setnumber);
263
  setActiveParamSet(setnumber);
262
  output_init();
264
  output_init();
263
}
265
}
Line 264... Line -...
264
 
-
 
265
 
266
 
266
/***************************************************/
267
/***************************************************/
267
/*       Get active parameter set                  */
268
/*       Get active parameter set                  */
268
/***************************************************/
269
/***************************************************/
269
uint8_t getActiveParamSet(void) {
270
uint8_t getActiveParamSet(void) {
Line 330... Line 331...
330
 
331
 
331
/***************************************************/
332
/***************************************************/
332
/*       Initialize EEPROM Parameter Sets          */
333
/*       Initialize EEPROM Parameter Sets          */
333
/***************************************************/
334
/***************************************************/
334
void ParamSet_Init(void) {
335
void ParamSet_Init(void) {
335
  uint8_t Channel_Backup  = 0, i;
336
  uint8_t Channel_Backup=1, i, j;
336
  // parameter version  check
337
  // parameter version  check
337
  if(eeprom_read_byte(&EEPromArray[PID_PARAM_REVISION]) != EEPARAM_REVISION) {
338
  if(eeprom_read_byte(&EEPromArray[PID_PARAM_REVISION]) != EEPARAM_REVISION) {
338
    // if version check faild
339
    // if version check faild
339
    printf("\n\rInit Parameter in EEPROM");
340
    printf("\n\rInit Parameter in EEPROM");
340
    eeprom_write_byte(&EEPromArray[EEPROM_ADR_MIXER_TABLE], 0xFF); // reset also mixer table
341
    eeprom_write_byte(&EEPromArray[EEPROM_ADR_MIXER_TABLE], 0xFF); // reset also mixer table
341
    // check if channel mapping backup is valid
342
    // check if channel mapping backup is valid
342
    if(         (eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+0]) < 12)
-
 
343
                &&  (eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+1]) < 12)
343
    for (j=0; j<4 && Channel_Backup; j++) {
344
                &&  (eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+2]) < 12)
-
 
345
                &&  (eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+3]) < 12)
-
 
346
                )
-
 
347
      {
344
      if (eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+0]) >= 12)
348
        Channel_Backup = 1;
345
        Channel_Backup = 0;
349
      }
346
    }
350
    // fill all 5 parameter settings
347
    // fill all 5 parameter settings
351
    for (i=1; i<6; i++) {
348
    for (i=1; i<6; i++) {
352
      switch(i) {
349
      switch(i) {
353
      case 1:
350
      case 1:
Line 363... Line 360...
363
        ParamSet_DefaultSet2(); // Kamera
360
        ParamSet_DefaultSet2(); // Kamera
364
        break;
361
        break;
365
      }
362
      }
366
      if(Channel_Backup) { // if we have a rc channel mapping backup in eeprom
363
      if(Channel_Backup) { // if we have a rc channel mapping backup in eeprom
367
        // restore it
364
        // restore it
368
        staticParams.ChannelAssignment[0] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+0]);
-
 
369
        staticParams.ChannelAssignment[1] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+1]);
-
 
370
        staticParams.ChannelAssignment[2] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+2]);
-
 
371
        staticParams.ChannelAssignment[3] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+3]);
365
        for (j=0; j<8; j++) {
372
        staticParams.ChannelAssignment[4] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+4]);
366
          staticParams.ChannelAssignment[j] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+j]);
373
        staticParams.ChannelAssignment[5] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+5]);
-
 
374
        staticParams.ChannelAssignment[6] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+6]);
-
 
375
        staticParams.ChannelAssignment[7] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+7]);
-
 
-
 
367
        }
376
      }
368
      }
377
      ParamSet_WriteToEEProm(i);
369
      ParamSet_WriteToEEProm(i);
378
    }
370
    }
379
    // default-Setting is parameter set 3
371
    // default-Setting is parameter set 3
380
    setActiveParamSet(1);
372
    setActiveParamSet(1);