Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 1171 → Rev 1172

/trunk/Spectrum.c
46,7 → 46,7
UCSR1C |= (1 << UCSZ11);
UCSR1C |= (1 << UCSZ10);
// flush receive buffer explicit
while ( UCSR1A & (1<<RXC1) ) UDR1;
while(UCSR1A & (1<<RXC1)) UDR1;
// enable RX-interrupts at the end
UCSR1B |= (1 << RXCIE1);
// -- End of USART1 initialisation
151,7 → 151,7
bCheckDelay = CheckDelay(FrameTimer);
if ( Sync == 0 )
{
if ( bCheckDelay )
if(bCheckDelay)
{
// nach einer Pause von mind. 7ms erstes Sync-Character gefunden
// Zeichen ignorieren, da Bedeutung unbekannt
164,13 → 164,13
// warten auf erstes Sync-Zeichen
}
}
else if ( (Sync == 1) && !bCheckDelay )
else if((Sync == 1) && !bCheckDelay)
{
// zweites Sync-Character ignorieren, Bedeutung unbekannt
Sync = 2;
FrameCnt ++;
}
else if ( (Sync == 2) && !bCheckDelay )
else if((Sync == 2) && !bCheckDelay)
{
// Datenbyte high
ByteHigh = c;
178,10 → 178,9
if (FrameCnt == 2)
{
// is 1st Byte of Channel-data
// Frame 1 with Channel 1-7 comming next
Frame2 = 0;
if ( ByteHigh & 0x80 )
if(ByteHigh & 0x80)
{
// DS9: Frame 2 with Channel 8-9 comming next
Frame2 = 1;
190,7 → 189,7
Sync = 3;
FrameCnt ++;
}
else if ( (Sync == 3) && !bCheckDelay )
else if((Sync == 3) && !bCheckDelay)
{
// Datenbyte low
205,38 → 204,16
signal -= 0x200; // Offset, range 0x000..0x3ff?
signal = signal/3; // scaling to fit PPM resolution
if (index >= 0 && index <= 10)
if(index >= 0 && index <= 10)
{
if(abs(signal - PPM_in[index]) < 6)
{
if(SenderOkay < 200)
{
SenderOkay += 10;
}
}
tmp = (3 * (PPM_in[index]) + signal) / 4;
if(tmp > signal+1)
{
tmp--;
}
else
{
if(tmp < signal-1)
{
tmp++;
}
}
if(SenderOkay >= 195)
{
PPM_diff[index] = ((tmp - PPM_in[index]) / 3) * 3;
}
else
{
PPM_diff[index] = 0;
}
PPM_in[index] = tmp;
// Stabiles Signal
if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10; else SenderOkay = 200;}
tmp = (3 * (PPM_in[index]) + signal) / 4;
if(tmp > signal+1) tmp--; else
if(tmp < signal-1) tmp++;
if(SenderOkay >= 180) PPM_diff[index] = ((tmp - PPM_in[index]) / 3) * 3;
else PPM_diff[index] = 0;
PPM_in[index] = tmp;
}
}
else
248,10 → 225,10
}
// 16 Bytes per frame
if (FrameCnt >= 16)
if(FrameCnt >= 16)
{
// Frame complete
if ( Frame2 == 0 )
if(Frame2 == 0)
{
// Null bedeutet: Neue Daten
// nur beim ersten Frame (CH 0-7) setzen
263,9 → 240,8
Frame2 = 0;
Sync = 0;
}
 
// Zeit bis zum nächsten Zeichen messen
FrameTimer = SetDelay (7);
FrameTimer = SetDelay(7);
}
}
 
/trunk/fc.c
204,9 → 204,9
nick_neutral += AdWertNick;
roll_neutral += AdWertRoll;
}
AdNeutralNick= nick_neutral / NEUTRAL_FILTER;
AdNeutralRoll= roll_neutral / NEUTRAL_FILTER;
AdNeutralGier= gier_neutral / NEUTRAL_FILTER;
AdNeutralNick= (nick_neutral+NEUTRAL_FILTER/2) / NEUTRAL_FILTER;
AdNeutralRoll= (roll_neutral+NEUTRAL_FILTER/2) / NEUTRAL_FILTER;
AdNeutralGier= (gier_neutral+NEUTRAL_FILTER/2) / NEUTRAL_FILTER;
AdNeutralGierBias = AdNeutralGier;
StartNeutralRoll = AdNeutralRoll;
StartNeutralNick = AdNeutralNick;
249,10 → 249,10
FromNaviCtrl_Value.Kalman_K = -1;
FromNaviCtrl_Value.Kalman_MaxDrift = EE_Parameter.Driftkomp * 16;
FromNaviCtrl_Value.Kalman_MaxFusion = 32;
if(Poti1 = PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110);
if(Poti2 = PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110);
if(Poti3 = PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110);
if(Poti4 = PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110);
Poti1 = PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110;
Poti2 = PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110;
Poti3 = PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110;
Poti4 = PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110;
ServoActive = 1;
SenderOkay = 100;
}
876,7 → 876,7
}
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(!Looping_Nick && !Looping_Roll && Aktuell_az > 600)
if(!Looping_Nick && !Looping_Roll && Aktuell_az > 512)
{
long tmp_long, tmp_long2;
if(FromNaviCtrl_Value.Kalman_K != -1 /*&& !TrichterFlug*/)
1202,8 → 1202,9
DebugOut.Analog[20] = ServoValue;
// DebugOut.Analog[24] = MesswertNick/2;
// DebugOut.Analog[25] = MesswertRoll/2;
DebugOut.Analog[27] = (int)FromNaviCtrl_Value.Kalman_MaxDrift;
DebugOut.Analog[29] = (int)FromNaviCtrl_Value.Kalman_K;
// DebugOut.Analog[27] = (int)FromNaviCtrl_Value.Kalman_MaxDrift;
// DebugOut.Analog[28] = (int)FromNaviCtrl_Value.Kalman_MaxFusion;
// DebugOut.Analog[29] = (int)FromNaviCtrl_Value.Kalman_K;
DebugOut.Analog[30] = GPS_Nick;
DebugOut.Analog[31] = GPS_Roll;
 
/trunk/main.c
158,7 → 158,6
Timer_Init();
TIMER2_Init();
UART_Init();
Uart1Init();
rc_sum_init();
ADC_Init();
i2c_init();
167,8 → 166,11
sei();
 
printf("\n\rFlightControl\n\rHardware:%d.%d\n\rSoftware:V%d.%d%c ",PlatinenVersion/10,PlatinenVersion%10, VERSION_MAJOR, VERSION_MINOR,VERSION_PATCH + 'a');
if(UCSR1A == 0x20 && UCSR1C == 0x06) // initial Values for 644P
{
Uart1Init();
}
printf("\n\r==============================");
 
GRN_ON;
ReadParameterSet(3, (unsigned char *) &EE_Parameter.Kanalbelegung[0], 9); // read only the first bytes
 
/trunk/rc.c
56,7 → 56,7
{
signal -= 466;
// Stabiles Signal
if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10;}
if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10; else SenderOkay = 200;}
tmp = (3 * (PPM_in[index]) + signal) / 4;
if(tmp > signal+1) tmp--; else
if(tmp < signal-1) tmp++;