/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++; |