/trunk/analog.c |
---|
263,10 → 263,10 |
case 9: |
MessLuftdruck = ADC; |
tmpLuftdruck += MessLuftdruck; |
if(++messanzahl_Druck >= 18) |
if(++messanzahl_Druck >= 16) // war bis 0.86 "18" |
{ |
signed int tmp; |
Luftdruck = (7 * Luftdruck + tmpLuftdruck - (18 * 523) * (long)ExpandBaro + 4) / 8; // -523.19 counts per 10 counts offset step |
Luftdruck = (7 * Luftdruck + tmpLuftdruck - (16 * 523) * (long)ExpandBaro + 4) / 8; // -523.19 counts per 10 counts offset step |
HoehenWert = StartLuftdruck - Luftdruck; |
SummenHoehe -= SummenHoehe/SM_FILTER; |
SummenHoehe += HoehenWert; |
275,7 → 275,7 |
if(abs(VarioMeter) > 700) VarioMeter = (15 * VarioMeter + 8 * tmp)/16; |
else VarioMeter = (31 * VarioMeter + 8 * tmp)/32; |
tmpLuftdruck /= 2; |
messanzahl_Druck = 18/2; |
messanzahl_Druck = 16/2; |
} |
kanal = AD_NICK; |
break; |
/trunk/fc.c |
---|
107,6 → 107,7 |
unsigned char carefree_old = 50; // to make the Beep when switching |
signed char WaypointTrimming = 0; |
int CompassGierSetpoint = 0; |
unsigned char CalibrationDone = 0; |
int LageKorrekturRoll = 0,LageKorrekturNick = 0, HoverGas = 0; |
//float Ki = FAKTOR_I; |
int Ki = 10300 / 33; |
347,7 → 348,6 |
ExternHoehenValue = 0; |
ErsatzKompass = KompassValue * GIER_GRAD_FAKTOR; |
GierGyroFehler = 0; |
SendVersionToNavi = 1; |
LED_Init(); |
FC_StatusFlags |= FC_STATUS_CALIBRATE; |
FromNaviCtrl_Value.Kalman_K = -1; |
668,18 → 668,18 |
static unsigned int RcLostTimer; |
static unsigned char delay_neutral = 0; |
static unsigned char delay_einschalten = 0,delay_ausschalten = 0; |
static unsigned char calibration_done = 0; |
static char NeueKompassRichtungMerken = 0; |
static long ausgleichNick, ausgleichRoll; |
int IntegralNickMalFaktor,IntegralRollMalFaktor; |
unsigned char i; |
unsigned int HooverGas80Percent; |
Mittelwert(); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gaswert ermitteln |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
HooverGas80Percent = HoverGas/(STICK_GAIN + STICK_GAIN/4); // 80% of Hovergas |
GasMischanteil = StickGas; |
if(GasMischanteil < MIN_GAS + 10) GasMischanteil = MIN_GAS + 10; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Empfang schlecht |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
698,7 → 698,7 |
GasMischanteil = EE_Parameter.NotGas; |
if(EE_Parameter.GlobalConfig3 & CFG3_VARIO_FAILSAFE) |
{ |
if(HoverGas && HoverGas < 150 * STICK_GAIN) GasMischanteil = HoverGas/(STICK_GAIN + STICK_GAIN/4); // 80% of Hovergas |
if(HoverGas && HoverGas < 150 * STICK_GAIN) GasMischanteil = HooverGas80Percent; // 80% of Hovergas |
} |
FC_StatusFlags |= FC_STATUS_EMERGENCY_LANDING; |
PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] = 0; |
757,6 → 757,7 |
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) < 30 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -70) |
{ |
WinkelOut.CalcState = 1; |
CalibrationDone = 0; |
beeptime = 1000; |
} |
else |
770,7 → 771,7 |
} |
ServoActive = 0; |
SetNeutral(0); |
calibration_done = 1; |
CalibrationDone = 1; |
ServoActive = 1; |
DDRD |=0x80; // enable J7 -> Servo signal |
Piep(GetActiveParamSet(),120); |
786,7 → 787,7 |
delay_neutral = 0; |
modell_fliegt = 0; |
SetNeutral(1); |
calibration_done = 1; |
CalibrationDone = 1; |
Piep(GetActiveParamSet(),120); |
} |
} |
809,7 → 810,7 |
if(++delay_einschalten > 200) |
{ |
delay_einschalten = 0; |
if(!VersionInfo.HardwareError[0] && calibration_done && !NC_ErrorCode) |
if(!VersionInfo.HardwareError[0] && CalibrationDone && !NC_ErrorCode) |
{ |
modell_fliegt = 1; |
MotorenEin = 1; |
1728,7 → 1729,13 |
FC_StatusFlags |= (FC_STATUS_VARIO_TRIM_UP|FC_STATUS_VARIO_TRIM_DOWN); |
} // EOF no height control |
// limit gas to parameter setting |
// limit gas to parameter setting |
if(NC_To_FC_Flags & NC_TO_FC_EMERGENCY_LANDING) |
{ |
if(GasMischanteil/STICK_GAIN > HooverGas80Percent && HoverGas) GasMischanteil = HooverGas80Percent * STICK_GAIN; |
beeptime = 15000; |
BeepMuster = 0x0E00; |
} |
LIMIT_MIN(GasMischanteil, (MIN_GAS + 10) * STICK_GAIN); |
if(GasMischanteil > (MAX_GAS - 20) * STICK_GAIN) GasMischanteil = (MAX_GAS - 20) * STICK_GAIN; |
/trunk/fc.h |
---|
25,6 → 25,10 |
#define FC_STATUS2_ALTITUDE_CONTROL 0x02 |
#define FC_STATUS2_RC_FAILSAVE_ACTIVE 0x04 |
//NC_To_FC_Flags |
#define NC_TO_FC_FLYING_RANGE 0x01 |
#define NC_TO_FC_EMERGENCY_LANDING 0x02 |
extern volatile unsigned char FC_StatusFlags, FC_StatusFlags2; |
extern void ParameterZuordnung(void); |
98,6 → 102,7 |
extern volatile unsigned char SenderOkay; |
extern int StickNick,StickRoll,StickGier; |
extern char MotorenEin; |
extern unsigned char CalibrationDone; |
extern unsigned char Parameter_Servo3,Parameter_Servo4,Parameter_Servo5; |
extern char VarioCharacter; |
extern signed int AltitudeSetpointTrimming; |
/trunk/hottmenu.c |
---|
63,7 → 63,9 |
"Motor restart \0", // 23 |
"BL Limitation \0", // 24 |
"GPS Range \0", // 25 |
"No SD-Card \0" // 26 |
"No SD-Card \0", // 26 |
"SD-Logging error\0", // 27 |
"Flying range! \0" // 28 |
}; |
unsigned char MaxBlTempertaure = 0; |
/trunk/hottmenu.h |
---|
3,7 → 3,7 |
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)) |
#define MAX_ERR_NUMBER (26+1) |
#define MAX_ERR_NUMBER (28+1) |
extern const char PROGMEM NC_ERROR_TEXT[MAX_ERR_NUMBER][17]; |
extern unsigned char HottKeyboard,HoTT_RequestedSensor; |
/trunk/libfc1284.a |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/main.c |
---|
52,7 → 52,6 |
#include "main.h" |
unsigned char DisableRcOffBeeping = 0; |
unsigned char PlatinenVersion = 10; |
unsigned char SendVersionToNavi = 1; |
unsigned char BattLowVoltageWarning = 94; |
unsigned int FlugMinuten = 0,FlugMinutenGesamt = 0; |
unsigned int FlugSekunden = 0; |
379,13 → 378,21 |
SPI_StartTransmitPacket(); |
SendSPI = 4; |
if(!(FC_StatusFlags & FC_STATUS_FLY)) timer2 = 1450; // 0,5 Minuten aufrunden |
else |
// +++++++++++++++++++++++++++++++++ |
// Sekundentakt |
if(++second == 49) |
{ |
second = 0; |
FlugSekunden++; |
if(FC_StatusFlags & FC_STATUS_FLY) FlugSekunden++; |
else |
{ |
timer2 = 1450; // 0,5 Minuten aufrunden |
if(StartLuftdruck < Luftdruck) StartLuftdruck++; |
else |
if(StartLuftdruck > Luftdruck) StartLuftdruck--; |
} |
} |
// +++++++++++++++++++++++++++++++++ |
if(++timer2 == 2930) // eine Minute |
{ |
timer2 = 0; |
/trunk/main.h |
---|
30,7 → 30,6 |
extern unsigned char BattLowVoltageWarning; |
extern unsigned char CosinusNickWinkel, CosinusRollWinkel; |
extern unsigned char PlatinenVersion; |
extern unsigned char SendVersionToNavi; |
extern unsigned char FoundMotors; |
extern unsigned char JetiBeep; |
void LipoDetection(unsigned char print); |
/trunk/spi.c |
---|
26,6 → 26,7 |
unsigned char NC_GPS_ModeCharacter = ' '; |
unsigned char EarthMagneticField = 0; |
unsigned char EarthMagneticInclination = 0, EarthMagneticInclinationTheoretic = 0; |
unsigned char NC_To_FC_Flags = 0; |
signed int POI_KameraNick = 0; // in 0,1° |
vector16_t MagVec = {0,0,0}; |
340,7 → 341,7 |
NC_ErrorCode = FromNaviCtrl.Param.Byte[7]; |
NC_GPS_ModeCharacter = FromNaviCtrl.Param.Byte[8]; |
FromNaviCtrl_Value.SerialDataOkay = FromNaviCtrl.Param.Byte[9]; |
// = FromNaviCtrl.Param.Byte[10]; |
NC_To_FC_Flags = FromNaviCtrl.Param.Byte[10]; |
// = FromNaviCtrl.Param.Byte[11]; |
break; |
case SPI_NCCMD_GPSINFO: |
/trunk/spi.h |
---|
180,7 → 180,7 |
extern void UpdateSPI_Buffer(void); |
extern void SPI_TransmitByte(void); |
extern signed int POI_KameraNick; |
extern unsigned char NC_GPS_ModeCharacter; |
extern unsigned char NC_GPS_ModeCharacter, NC_To_FC_Flags; |
extern vector16_t MagVec; |
extern unsigned char EarthMagneticField; |
extern unsigned char EarthMagneticInclination,EarthMagneticInclinationTheoretic; |
/trunk/version.txt |
---|
526,9 → 526,11 |
0.87a |
- Failsafe-Kanal |
- Failsafe: x Sekunden warten & y Sekunden nur Höhe ändern |
- Failsafe: 5 Sekunden warten & Höhe ändern (macht die NC) |
- Option: Failsafe-Sinkflug 80% Schwebegas |
- Stopp der Motoren wenn bei Failsafe ein Motor blockiert |
- 60 Sekunden Failsafe-Zeit |
- Höhenwert auf cm kalibriert (zeigte ca. 10% zu viel an) |
- Neue Error-Codes: "No SD-Card", "Flying range!" und "Error SD-Logging" |
- Wenn die Motoren aus sind, den Luftduckwert langsam nachführen |