Subversion Repositories FlightCtrl

Rev

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

Rev 1219 Rev 1232
Line 52... Line 52...
52
#include "main.h"
52
#include "main.h"
Line 53... Line 53...
53
 
53
 
54
unsigned char EEPromArray[E2END+1] EEMEM;
54
unsigned char EEPromArray[E2END+1] EEMEM;
55
unsigned char PlatinenVersion = 10;
55
unsigned char PlatinenVersion = 10;
-
 
56
unsigned char SendVersionToNavi = 1;
56
unsigned char SendVersionToNavi = 1;
57
unsigned char BattLowVoltageWarning = 94;
57
// -- Parametersatz aus EEPROM lesen ---
58
// -- Parametersatz aus EEPROM lesen ---
58
// number [1..5]
59
// number [1..5]
59
void ReadParameterSet(unsigned char number, unsigned char *buffer, unsigned char length)
60
void ReadParameterSet(unsigned char number, unsigned char *buffer, unsigned char length)
60
{
61
{
Line 109... Line 110...
109
   if(WinkelOut.CalcState > 4)
110
   if(WinkelOut.CalcState > 4)
110
    {
111
    {
111
//     WinkelOut.CalcState = 0; // in Uart.c
112
//     WinkelOut.CalcState = 0; // in Uart.c
112
     beeptime = 1000;
113
     beeptime = 1000;
113
    }
114
    }
114
   else Piep(WinkelOut.CalcState);
115
   else Piep(WinkelOut.CalcState,150);
115
  }
116
  }
116
  DebugOut.Analog[19] = WinkelOut.CalcState;
117
  DebugOut.Analog[19] = WinkelOut.CalcState;
117
}
118
}
Line 118... Line 119...
118
 
119
 
Line 140... Line 141...
140
    DDRC  |=0x40; // HEF4017 Reset
141
    DDRC  |=0x40; // HEF4017 Reset
141
    PORTC = 0xff; // Pullup SDA
142
    PORTC = 0xff; // Pullup SDA
142
    DDRB  = 0x1B; // LEDs und Druckoffset
143
    DDRB  = 0x1B; // LEDs und Druckoffset
143
    PORTB = 0x01; // LED_Rot
144
    PORTB = 0x01; // LED_Rot
144
    DDRD  = 0x3E; // Speaker & TXD & J3 J4 J5
145
    DDRD  = 0x3E; // Speaker & TXD & J3 J4 J5
145
    DDRD  |=0x80; // J7 -> Servo signal
-
 
146
        PORTD = 0x47; // LED
146
        PORTD = 0x47; // LED
147
    HEF4017R_ON;
147
    HEF4017R_ON;
148
    MCUSR &=~(1<<WDRF);
148
    MCUSR &=~(1<<WDRF);
149
    WDTCSR |= (1<<WDCE)|(1<<WDE);
149
    WDTCSR |= (1<<WDCE)|(1<<WDE);
150
    WDTCSR = 0;
150
    WDTCSR = 0;
Line 151... Line 151...
151
 
151
 
152
    beeptime = 2000;
-
 
153
 
152
    beeptime = 2000;
154
        StickGier = 0; PPM_in[K_GAS] = 0;StickRoll = 0; StickNick = 0;
153
        StickGier = 0; PPM_in[K_GAS] = 0;StickRoll = 0; StickNick = 0;
155
    if(PlatinenVersion >= 20)  GIER_GRAD_FAKTOR = 1160; else GIER_GRAD_FAKTOR = 1291; // unterschiedlich für ME und ENC
154
    if(PlatinenVersion >= 20)  GIER_GRAD_FAKTOR = 1160; else GIER_GRAD_FAKTOR = 1291; // unterschiedlich für ME und ENC
Line 156... Line 155...
156
    ROT_OFF;
155
    ROT_OFF;
Line 200... Line 199...
200
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
199
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
201
// + Check connected BL-Ctrls
200
// + Check connected BL-Ctrls
202
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
201
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
203
        printf("\n\rFound BL-Ctrl: ");
202
        printf("\n\rFound BL-Ctrl: ");
204
    motorread = 0;   UpdateMotor = 0;   SendMotorData(); while(!UpdateMotor); motorread = 0;  // read the first I2C-Data
203
    motorread = 0;   UpdateMotor = 0;   SendMotorData(); while(!UpdateMotor); motorread = 0;  // read the first I2C-Data
-
 
204
    timer = SetDelay(2000);
205
        for(i=0; i < MAX_MOTORS; i++)
205
        for(i=0; i < MAX_MOTORS; i++)
206
         {
206
         {
207
          UpdateMotor = 0;
207
          UpdateMotor = 0;
208
      SendMotorData();
208
      SendMotorData();
209
          while(!UpdateMotor);
209
          while(!UpdateMotor);
-
 
210
      if(Mixer.Motor[i][0] > 0) // wait max 2 sec for the BL-Ctrls to wake up
-
 
211
        {
-
 
212
             while(!CheckDelay(timer) && !MotorPresent[i]) {UpdateMotor = 0; SendMotorData(); while(!UpdateMotor);};
-
 
213
                }
210
          if(MotorPresent[i]) printf("%d ",i+1);
214
          if(MotorPresent[i]) printf("%d ",i+1);
211
     }
215
     }
212
        for(i=0; i < MAX_MOTORS; i++)
216
        for(i=0; i < MAX_MOTORS; i++)
213
         {
217
         {
214
          if(!MotorPresent[i] && Mixer.Motor[i][0] > 0) printf("\n\r\n\r!! MISSING BL-CTRL: %d !!",i+1);
218
          if(!MotorPresent[i] && Mixer.Motor[i][0] > 0) printf("\n\r\n\r!! MISSING BL-CTRL: %d !!",i+1);
Line 282... Line 286...
282
 
286
 
283
        printf("\n\rControl: ");
287
        printf("\n\rControl: ");
284
        if (EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) printf("HeadingHold");
288
        if (EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) printf("HeadingHold");
Line 285... Line -...
285
        else printf("Normal (ACC-Mode)");
-
 
286
 
-
 
287
        printf("\n\r===================================\n\r");
289
        else printf("Normal (ACC-Mode)");
288
 
290
 
289
    LcdClear();
291
    LcdClear();
-
 
292
    I2CTimeout = 5000;
-
 
293
    WinkelOut.Orientation = 1;
-
 
294
 
-
 
295
   printf("\n\rBatt:");
-
 
296
   if(EE_Parameter.UnterspannungsWarnung < 50) // automatische Zellenerkennung
-
 
297
    {
-
 
298
         timer = SetDelay(500);
-
 
299
         while (!CheckDelay(timer));
-
 
300
         if(UBat < 130)
-
 
301
          {
-
 
302
           BattLowVoltageWarning = 3 * EE_Parameter.UnterspannungsWarnung;
-
 
303
           Piep(3,200);
-
 
304
           printf(" 3 Cells  ");
-
 
305
          }
-
 
306
         else          
-
 
307
          {
-
 
308
           BattLowVoltageWarning = 4 * EE_Parameter.UnterspannungsWarnung;
-
 
309
           Piep(4,200);
-
 
310
           printf(" 4 Cells  ");
-
 
311
          }
-
 
312
    }
-
 
313
    else BattLowVoltageWarning = EE_Parameter.UnterspannungsWarnung;
290
    I2CTimeout = 5000;
314
    printf(" Low warning level: %d.%d",BattLowVoltageWarning/10,BattLowVoltageWarning%10);
291
    WinkelOut.Orientation = 1;
315
        printf("\n\r===================================\n\r");
292
        while (1)
316
        while (1)
293
        {
317
        {
294
            if(UpdateMotor && AdReady)      // ReglerIntervall
318
            if(UpdateMotor && AdReady)      // ReglerIntervall
Line 305... Line 329...
305
               ExternStickNick = 0;
329
               ExternStickNick = 0;
306
               ExternStickRoll = 0;
330
               ExternStickRoll = 0;
307
               ExternStickGier = 0;
331
               ExternStickGier = 0;
308
              }
332
              }
309
            if(SenderOkay)  SenderOkay--;
333
            if(SenderOkay)  SenderOkay--;
-
 
334
                        else
-
 
335
                         {
-
 
336
                          TIMSK1 |= _BV(ICIE1); // enable PPM-Input
-
 
337
                         }
-
 
338
//if(HoehenReglerAktiv && NaviDataOkay && SenderOkay < 160 && SenderOkay > 10 && FromNaviCtrl_Value.SerialDataOkay > 220) SenderOkay = 160;
-
 
339
//if(HoehenReglerAktiv && NaviDataOkay && SenderOkay < 101 && SenderOkay > 10 && FromNaviCtrl_Value.SerialDataOkay > 1) SenderOkay = 101;
310
            if(NaviDataOkay)
340
            if(NaviDataOkay)
311
                         {
341
                         {
312
                          if(--NaviDataOkay == 0)
342
                          if(--NaviDataOkay == 0)
313
                           {
343
                           {
314
                    GPS_Nick = 0;
344
                    GPS_Nick = 0;
Line 338... Line 368...
338
               BearbeiteRxDaten();
368
               BearbeiteRxDaten();
339
              }
369
              }
340
              else BearbeiteRxDaten();
370
              else BearbeiteRxDaten();
341
         if(CheckDelay(timer))
371
         if(CheckDelay(timer))
342
            {
372
            {
343
            if(UBat < EE_Parameter.UnterspannungsWarnung)
373
            if(UBat < BattLowVoltageWarning)
344
                {
374
                {
345
                  if(BeepMuster == 0xffff)
375
                  if(BeepMuster == 0xffff)
346
                   {
376
                   {
347
                    beeptime = 6000;
377
                    beeptime = 6000;
348
                    BeepMuster = 0x0300;
378
                    BeepMuster = 0x0300;
Line 359... Line 389...
359
    }
389
    }
360
 return (1);
390
 return (1);
361
}
391
}
Line 362... Line -...
362
 
-
 
363
 
-