/trunk/fc.c |
---|
339,7 → 339,7 |
if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255; |
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L; |
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagNick * 2500L; |
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L; |
} |
//############################################################################ |
787,7 → 787,7 |
if((MaxStickNick > 15) || (MaxStickRoll > 15) || (abs(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]) > 25)) |
{ |
LageKorrekturNick /= 2; |
LageKorrekturNick /= 2; |
LageKorrekturRoll /= 2; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
810,16 → 810,23 |
if(GierGyroFehler > ABGLEICH_ANZAHL/2) AdNeutralGier++; |
if(GierGyroFehler <-ABGLEICH_ANZAHL/2) AdNeutralGier--; |
DebugOut.Analog[22] = MittelIntegralRoll / 26; |
GierGyroFehler = 0; |
DebugOut.Analog[17] = IntegralAccNick / 26; |
/*DebugOut.Analog[17] = IntegralAccNick / 26; |
DebugOut.Analog[18] = IntegralAccRoll / 26; |
DebugOut.Analog[19] = IntegralFehlerNick;// / 26; |
DebugOut.Analog[20] = IntegralFehlerRoll;// / 26; |
DebugOut.Analog[21] = MittelIntegralNick / 26; |
DebugOut.Analog[22] = MittelIntegralRoll / 26; |
*/ |
//DebugOut.Analog[21] = MittelIntegralNick / 26; |
//MittelIntegralRoll = MittelIntegralRoll; |
//DebugOut.Analog[28] = ausgleichNick; |
/* |
DebugOut.Analog[29] = ausgleichRoll; |
DebugOut.Analog[30] = LageKorrekturRoll * 10; |
*/ |
#define FEHLER_LIMIT (ABGLEICH_ANZAHL * 4) |
#define FEHLER_LIMIT2 (ABGLEICH_ANZAHL * 16) |
891,9 → 898,10 |
if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp; |
if(IntegralFehlerRoll > FEHLER_LIMIT) AdNeutralRoll += cnt; |
if(IntegralFehlerRoll < -FEHLER_LIMIT) AdNeutralRoll -= cnt; |
DebugOut.Analog[27] = ausgleichRoll; |
/*DebugOut.Analog[27] = ausgleichRoll; |
DebugOut.Analog[23] = AdNeutralNick;//10*(AdNeutralNick - StartNeutralNick); |
DebugOut.Analog[24] = 10*(AdNeutralRoll - StartNeutralRoll); |
*/ |
} |
else |
{ |
992,6 → 1000,9 |
DebugOut.Analog[10] = SenderOkay; |
DebugOut.Analog[16] = Mittelwert_AccHoch; |
DebugOut.Analog[30] = GPS_Nick; |
DebugOut.Analog[31] = GPS_Roll; |
/* DebugOut.Analog[16] = motor_rx[0]; |
DebugOut.Analog[17] = motor_rx[1]; |
DebugOut.Analog[18] = motor_rx[2]; |
1028,10 → 1039,11 |
else MesswertRoll = IntegralRoll * IntegralFaktor + MesswertRoll * GyroFaktor; |
MesswertGier = MesswertGier * (2 * GyroFaktor) + Integral_Gier * IntegralFaktor / 2; |
/* |
DebugOut.Analog[25] = IntegralRoll * IntegralFaktor; |
DebugOut.Analog[31] = StickRoll;// / (26*IntegralFaktor); |
DebugOut.Analog[28] = MesswertRoll; |
*/ |
// Maximalwerte abfangen |
#define MAX_SENSOR 2048 |
if(MesswertNick > MAX_SENSOR) MesswertNick = MAX_SENSOR; |
/trunk/main.c |
---|
185,12 → 185,12 |
I2CTimeout = 5000; |
while (1) |
{ |
if(UpdateMotor) // ReglerIntervall |
if(UpdateMotor) // ReglerIntervall |
{ |
UpdateMotor=0; |
//PORTD |= 0x08; |
MotorRegler(); |
//PORTD &= ~0x08; |
SendMotorData(); |
ROT_OFF; |
237,7 → 237,7 |
} |
} |
SPI_StartTransmitPacket(SPI_CMD_VALUE);//# |
timer = SetDelay(50); |
timer = SetDelay(100); |
} |
//if(UpdateMotor) DebugOut.Analog[26]++; |
} |
/trunk/spi.c |
---|
14,6 → 14,8 |
unsigned char *SPI_TX_Buffer, *ToNaviCtrl_Chksum; |
unsigned char SPITransferCompleted, SPI_ChkSum; |
unsigned char SPI_RxDataValid; |
#ifdef USE_SPI_COMMUNICATION |
//------------------------------------------------------ |
30,8 → 32,8 |
//SPDR = 0x00; // dummy write |
ToNaviCtrl_Value.Sync1 = 0x81; |
ToNaviCtrl_Value.Sync2 = 0x55; |
ToNaviCtrl_Value.Sync1 = 0xAA; |
ToNaviCtrl_Value.Sync2 = 0x83; |
ToNaviCtrl_Value.Command = SPI_CMD_VALUE; |
ToNaviCtrl_Value.IntegralNick = 12345; |
39,7 → 41,8 |
ToNaviCtrl_Value.StickNick = 100; |
ToNaviCtrl_Value.StickRoll = 150;//(char) StickRoll; |
ToNaviCtrl_Value.StickGier = 200;//(char) StickGier; |
SPI_RxDataValid = 0; |
} |
//------------------------------------------------------ |
125,9 → 128,9 |
memcpy(ptr, (unsigned char *) SPI_Buffer, sizeof(SPI_Buffer)); |
DebugOut.Analog[20]++; |
SPI_RxDataValid = 1; |
} |
else DebugOut.Analog[21]++; |
else SPI_RxDataValid = 0; |
SPI_RXState = 0; |
} |
166,20 → 169,33 |
ToNaviCtrl_Value.StickRoll = 5;//(char) StickRoll; |
ToNaviCtrl_Value.StickGier = 6;//(char) StickGier; |
ToNaviCtrl_Value.GyroCompass = ErsatzKompass / GIER_GRAD_FAKTOR; |
ToNaviCtrl_Value.User1 = EE_Parameter.UserParam1; |
ToNaviCtrl_Value.User2 = EE_Parameter.UserParam2; |
ToNaviCtrl_Value.User3 = EE_Parameter.UserParam3; |
ToNaviCtrl_Value.User4 = EE_Parameter.UserParam4; |
ToNaviCtrl_Value.User5 = EE_Parameter.UserParam5; |
ToNaviCtrl_Value.User6 = EE_Parameter.UserParam6; |
ToNaviCtrl_Value.User7 = EE_Parameter.UserParam7; |
ToNaviCtrl_Value.User8 = EE_Parameter.UserParam8; |
ToNaviCtrl_Value.User1 = Parameter_UserParam1; |
ToNaviCtrl_Value.User2 = Parameter_UserParam2; |
ToNaviCtrl_Value.User3 = Parameter_UserParam3; |
ToNaviCtrl_Value.User4 = Parameter_UserParam4; |
ToNaviCtrl_Value.User5 = Parameter_UserParam5; |
ToNaviCtrl_Value.User6 = Parameter_UserParam6; |
ToNaviCtrl_Value.User7 = Parameter_UserParam7; |
ToNaviCtrl_Value.User8 = Parameter_UserParam8; |
sei(); |
DebugOut.Analog[30] = FromNaviCtrl_Value.GPS_Nick; |
DebugOut.Analog[31] = FromNaviCtrl_Value.GPS_Roll; |
KompassValue = FromNaviCtrl_Value.CompassValue; |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
if (SPI_RxDataValid) |
{ |
GPS_Nick = FromNaviCtrl_Value.GPS_Nick; |
GPS_Roll = FromNaviCtrl_Value.GPS_Roll; |
KompassValue = FromNaviCtrl_Value.CompassValue; |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
if (FromNaviCtrl_Value.BeepTime != 0) beeptime = FromNaviCtrl_Value.BeepTime; |
} |
else |
{ |
KompassValue = 0; |
KompassRichtung = 0; |
GPS_Nick = 0; |
GPS_Roll = 0; |
} |
} |
#endif |
/trunk/spi.h |
---|
89,7 → 89,8 |
signed int GPS_Height; |
signed int CompassValue; |
signed int Status; |
signed int d0; |
unsigned char BeepTime; |
unsigned char d0; |
signed int d1; |
signed int d2; |
unsigned char Chksum; |
/trunk/uart.c |
---|
54,21 → 54,21 |
"Motor_Links ", |
"Motor_Rechts ", //15 |
"Acc_Z ", |
"MittelAccNick ", |
"MittelAccRoll ", |
"IntegralErrNick ", |
"IntegralErrRoll ", //20 |
"MittelIntNick ", |
"MittelIntRoll ", |
"NeutralNick ", |
"RollOffset ", |
"IntRoll*Faktor ", //25 |
"Analog26 ", |
"DirektAusglRoll ", |
"MesswertRoll ", |
"AusgleichRoll ", |
"I-LageRoll ", //30 |
"StickRoll " |
" ", |
" ", |
" ", |
" ", //20 |
" ", |
" ", |
" ", |
" ", |
" ", //25 |
" ", |
" ", |
" ", |
" ", |
"GPS_Nick ", //30 |
"GPS_Roll " |
}; |