Subversion Repositories FlightCtrl

Rev

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

Rev 1167 Rev 1171
Line 68... Line 68...
68
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length)
68
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length)
69
{
69
{
70
   if(number > 5) number = 5;
70
   if(number > 5) number = 5;
71
   if(number < 1) return;
71
   if(number < 1) return;
72
   eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * (number - 1)], length);
72
   eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * (number - 1)], length);
-
 
73
   eeprom_write_byte(&EEPromArray[EEPROM_ADR_PARAM_LENGTH], length); // Länge der Datensätze merken
-
 
74
   eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_CHANNELS], 8); // 8 Kanäle merken
73
   SetActiveParamSetNumber(number);
75
   SetActiveParamSetNumber(number);
74
   LED_Init();
76
   LED_Init();
75
}
77
}
Line 76... Line 78...
76
 
78
 
Line 140... Line 142...
140
    DDRB  = 0x1B; // LEDs und Druckoffset
142
    DDRB  = 0x1B; // LEDs und Druckoffset
141
    PORTB = 0x01; // LED_Rot
143
    PORTB = 0x01; // LED_Rot
142
    DDRD  = 0x3E; // Speaker & TXD & J3 J4 J5
144
    DDRD  = 0x3E; // Speaker & TXD & J3 J4 J5
143
    DDRD  |=0x80; // J7 -> Servo signal
145
    DDRD  |=0x80; // J7 -> Servo signal
144
        PORTD = 0x47; // LED
146
        PORTD = 0x47; // LED
145
 
-
 
-
 
147
    HEF4017R_ON;
146
    MCUSR &=~(1<<WDRF);
148
    MCUSR &=~(1<<WDRF);
147
    WDTCSR |= (1<<WDCE)|(1<<WDE);
149
    WDTCSR |= (1<<WDCE)|(1<<WDE);
148
    WDTCSR = 0;
150
    WDTCSR = 0;
Line 149... Line 151...
149
 
151
 
Line 154... Line 156...
154
    ROT_OFF;
156
    ROT_OFF;
Line 155... Line 157...
155
 
157
 
156
    Timer_Init();
158
    Timer_Init();
157
        TIMER2_Init();
159
        TIMER2_Init();
-
 
160
        UART_Init();
158
        UART_Init();
161
        Uart1Init();
159
    rc_sum_init();
162
    rc_sum_init();
160
        ADC_Init();
163
        ADC_Init();
161
        i2c_init();
164
        i2c_init();
Line 165... Line 168...
165
 
168
 
166
        printf("\n\rFlightControl\n\rHardware:%d.%d\n\rSoftware:V%d.%d%c ",PlatinenVersion/10,PlatinenVersion%10, VERSION_MAJOR, VERSION_MINOR,VERSION_PATCH + 'a');
169
        printf("\n\rFlightControl\n\rHardware:%d.%d\n\rSoftware:V%d.%d%c ",PlatinenVersion/10,PlatinenVersion%10, VERSION_MAJOR, VERSION_MINOR,VERSION_PATCH + 'a');
Line 167... Line 170...
167
        printf("\n\r==============================");
170
        printf("\n\r==============================");
168
 
-
 
169
        GRN_ON;
171
 
170
 
-
 
171
        ReadParameterSet(3, (unsigned char *) &EE_Parameter.Kanalbelegung[0], 9); // read only the first bytes
-
 
172
    // valid Stick-Settings?
-
 
173
    if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) == 255 || eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) < EE_DATENREVISION ||
-
 
174
        EE_Parameter.Kanalbelegung[0] > 9 || EE_Parameter.Kanalbelegung[1] > 9 || EE_Parameter.Kanalbelegung[2] > 9 || EE_Parameter.Kanalbelegung[3] > 9)
-
 
175
           {
-
 
176
            printf("\n\rInit. EEPROM");
-
 
177
        DefaultStickMapping();
-
 
Line 178... Line 172...
178
       }
172
        GRN_ON;
179
    else if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != EE_DATENREVISION) printf("\n\rInit. EEPROM: Generating Default-Parameter using old Stick Settings");
173
        ReadParameterSet(3, (unsigned char *) &EE_Parameter.Kanalbelegung[0], 9); // read only the first bytes
180
 
174
 
-
 
175
    if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != EE_DATENREVISION)
181
    if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != EE_DATENREVISION)
176
        {
182
        {
177
          DefaultKonstanten1();
183
          DefaultKonstanten1();
178
          printf("\n\rInit. EEPROM");
184
          for (unsigned char i=1;i<6;i++)
179
          for (unsigned char i=1;i<6;i++)
185
      {
180
      {
Line 191... Line 186...
191
                 EE_Parameter.Gyro_D = 5;
186
                 EE_Parameter.Gyro_D = 5;
192
                 EE_Parameter.Driftkomp = 0;
187
                 EE_Parameter.Driftkomp = 0;
193
                 EE_Parameter.GyroAccFaktor = 27;
188
                 EE_Parameter.GyroAccFaktor = 27;
194
         EE_Parameter.WinkelUmschlagNick = 78;
189
         EE_Parameter.WinkelUmschlagNick = 78;
195
         EE_Parameter.WinkelUmschlagRoll = 78;
190
         EE_Parameter.WinkelUmschlagRoll = 78;
196
                 
-
 
197
                }
191
                }
-
 
192
    // valid Stick-Settings?
-
 
193
           if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS]) < 12 && eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+1]) < 12 && eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+2]) < 12 && eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+3]) < 12)
-
 
194
            {
-
 
195
         EE_Parameter.Kanalbelegung[0] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+0]);
-
 
196
         EE_Parameter.Kanalbelegung[1] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+1]);
-
 
197
         EE_Parameter.Kanalbelegung[2] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+2]);
-
 
198
         EE_Parameter.Kanalbelegung[3] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+3]);
-
 
199
         EE_Parameter.Kanalbelegung[4] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+4]);
-
 
200
         EE_Parameter.Kanalbelegung[5] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+5]);
-
 
201
         EE_Parameter.Kanalbelegung[6] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+6]);
-
 
202
         EE_Parameter.Kanalbelegung[7] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+7]);
-
 
203
         if(i==1) printf(": Generating Default-Parameter using old Stick Settings");
-
 
204
                } else DefaultStickMapping();
198
       WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE);
205
       WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE);
199
      }
206
      }
200
          SetActiveParamSetNumber(3); // default-Setting
207
          SetActiveParamSetNumber(3); // default-Setting
201
          eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], EE_DATENREVISION);
208
          eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], EE_DATENREVISION);
202
        }
209
        }
Line 238... Line 245...
238
    WinkelOut.Orientation = 1;
245
    WinkelOut.Orientation = 1;
239
        while (1)
246
        while (1)
240
        {
247
        {
241
            if(UpdateMotor && AdReady)      // ReglerIntervall
248
            if(UpdateMotor && AdReady)      // ReglerIntervall
242
            {
249
            {
243
J3High;
-
 
244
                    UpdateMotor=0;
250
                    UpdateMotor=0;
-
 
251
J3High;
245
            if(WinkelOut.CalcState) CalMk3Mag();
252
            if(WinkelOut.CalcState) CalMk3Mag();
246
            else MotorRegler();
253
            else MotorRegler();
-
 
254
J3Low;
247
            SendMotorData();
255
            SendMotorData();
248
            ROT_OFF;
256
            ROT_OFF;
249
J3Low;
-
 
250
            if(PcZugriff) PcZugriff--;
257
            if(PcZugriff) PcZugriff--;
251
             else
258
             else
252
              {
259
              {
253
                           ExternControl.Config = 0;
260
                           ExternControl.Config = 0;
254
               ExternStickNick = 0;
261
               ExternStickNick = 0;