Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 2263 → Rev 2264

/test_branches/FC2_2/analog.c
328,7 → 328,6
case 17:
HoehenDiff = HoehenWert - HoeheAlt;
// vvSum = vvSum - vv + ((Aktuell_az - NeutralAccZ) - AccShorter)*7 + HoehenDiff*500; // Fusion vert. velocity
J17_ON; //Qopter: testweise zur Rechenzeitmessung
if(Parameter_UserParam1 > 50)
{
AccVertical = (long)(AdWertAccHoch + 172)*CosAttitude/8192 - 172;
338,7 → 337,6
{
vvSum = vvSum - vv + AdWertAccHoch*13 + HoehenDiff*500; // Fusion vert. velocity, T=2s
}
J17_OFF;
// AltLoss = HoehenWertF - HoehenWert;
// if((AltLoss > 50) && (Parameter_UserParam1 > 50)) vvSum -= AltLoss*2; // avoids height loss
vv = (vvSum + 512)/1024; // cm/s
/test_branches/FC2_2/eeprom.c
139,7 → 139,7
EE_Parameter.BitConfig = 0; // Looping usw.
EE_Parameter.GlobalConfig = CFG_ACHSENKOPPLUNG_AKTIV | CFG_KOMPASS_AKTIV | CFG_GPS_AKTIV | CFG_HOEHEN_SCHALTER;
EE_Parameter.ExtraConfig = CFG_GPS_AID | CFG2_VARIO_BEEP;
EE_Parameter.GlobalConfig3 = 0;//CFG3_VARIO_FAILSAFE;
EE_Parameter.GlobalConfig3 = CFG3_SPEAK_ALL;//CFG3_VARIO_FAILSAFE;
EE_Parameter.Receiver = RECEIVER_HOTT;
EE_Parameter.MotorSafetySwitch = 0;
EE_Parameter.ExternalControl = 0;
/test_branches/FC2_2/eeprom.h
49,6 → 49,7
#define CFG3_MOTOR_SWITCH_MODE 0x08
#define CFG3_NO_GPSFIX_NO_START 0x10
#define CFG3_USE_NC_FOR_OUT1 0x20
#define CFG3_SPEAK_ALL 0x40
 
//GlobalConfig
#define CFG_HOEHENREGELUNG 0x01
/test_branches/FC2_2/fc.c
224,13 → 224,22
 
void Piep(unsigned char Anzahl, unsigned int dauer)
{
unsigned int wait = 0;
if(MotorenEin) return; //auf keinen Fall im Flug!
GRN_OFF;
while(Anzahl--)
{
beeptime = dauer;
while(beeptime);
Delay_ms(dauer * 2);
wait = dauer;
while(beeptime || wait)
{
if(UpdateMotor)
{
UpdateMotor = 0;
if(!beeptime) wait--;
LIBFC_Polling();
};
}
}
GRN_ON;
}
376,8 → 385,9
}
else
{
if(EE_Parameter.ServoCompInvert & SERVO_NICK_INV) NickServoValue = ((128 + 60) * 4 * 16); // neutral position = upper 1/4
else NickServoValue = ((128 - 60) * 4 * 16); // neutral position = lower 1/4
// if(EE_Parameter.ServoCompInvert & SERVO_NICK_INV) NickServoValue = ((128 + 60) * 4 * 16); // neutral position = upper 1/4
// else
NickServoValue = ((128 - 60) * 4 * 16); // neutral position = lower 1/4
}
if((AdNeutralNick < 150 * 16) || (AdNeutralNick > 850 * 16)) { VersionInfo.HardwareError[0] |= FC_ERROR0_GYRO_NICK; };
781,9 → 791,6
{
if(++delay_neutral > 200) // nicht sofort
{
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__))
SpeakHoTT = SPEAK_CALIBRATE;
#endif
delay_neutral = 0;
modell_fliegt = 0;
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70 || abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) > 70)
816,6 → 823,9
CalibrationDone = 1;
ServoActive = 1;
DDRD |=0x80; // enable J7 -> Servo signal
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__))
SpeakHoTT = SPEAK_CALIBRATE;
#endif
Piep(GetActiveParamSet(),120);
}
}
830,6 → 840,9
modell_fliegt = 0;
SetNeutral(1);
CalibrationDone = 1;
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__))
SpeakHoTT = SPEAK_CALIBRATE;
#endif
Piep(GetActiveParamSet(),120);
}
}
/test_branches/FC2_2/hottmenu.c
203,22 → 203,22
static char old_status = 0;
static int repeat;
//if(Parameter_UserParam1) return(Parameter_UserParam1);
//DebugOut.Analog[16] = 0;
ToNC_SpeakHoTT = SpeakHoTT;
if(FC_StatusFlags & FC_STATUS_LOWBAT) status = VOICE_MINIMALE_EINGANSSPANNUNG;
else
if(NC_ErrorCode)
if(NC_ErrorCode) // Fehlercodes
{
if(MotorenEin || !pgm_read_byte(&HOTT_ERROR[NC_ErrorCode][1])) status = pgm_read_byte(&HOTT_ERROR[NC_ErrorCode][0]);
}
if(!status)
if(!status) // Sprachansagen
{
if(!(GetParamByte(PID_SPEAK_HOTT_CFG) & 0x01)) SpeakHoTT = 0; // is the voice wanted?
// if(!(GetParamByte(PID_SPEAK_HOTT_CFG) & 0x01)) SpeakHoTT = 0; // is the voice wanted?
if(!(EE_Parameter.GlobalConfig3 & CFG3_SPEAK_ALL)) SpeakHoTT = 0; // is the voice wanted?
else status = SpeakHoTT;
}
else ToNC_SpeakHoTT = status;
 
if(old_status == status)
if(old_status == status) // Gleichen Fehler nur alle 5 sek bringen
{
if(!CheckDelay(repeat)) return(0);
repeat = SetDelay(5000);
765,9 → 765,9
case 15:
case 16:
if(HottKeyboard == HOTT_KEY_SET) { if(show_poti) show_poti = 0; else show_poti = 1; Hott_ClearLine(6); Hott_ClearLine(7);}
// else
// if(HottKeyboard == HOTT_KEY_LEFT) { LIBFC_HoTT_Clear(); page = 3; line = 0;}
else
if(HottKeyboard == HOTT_KEY_LEFT) { LIBFC_HoTT_Clear(); page = 3; line = 0;}
else
if(HottKeyboard == HOTT_KEY_RIGHT) { LIBFC_HoTT_Clear(); page = 1; line = 0;};
HottKeyboard = 0;
break;
774,7 → 774,7
default: line = 0;
break;
}
else
/* else
if(page == 3)
switch(line++)
{
782,7 → 782,8
HoTT_printfxy(0,2,"Speak:");
break;
case 1:
if(GetParamByte(PID_SPEAK_HOTT_CFG) & 0x01) HoTT_printfxy_INV(7,2,"All Messages ")
// if(GetParamByte(PID_SPEAK_HOTT_CFG) & 0x01)
if(!(GlobalConfig3 & CFG3_SPEAK_ALL) & 0x01)) HoTT_printfxy_INV(7,2,"All Messages ")
else HoTT_printfxy_INV(7,2,"Warnings only");
break;
case 2:
799,6 → 800,7
line = 0;
break;
}
*/
else page = 0;
}
 
/test_branches/FC2_2/jeti_ex.c
1,4 → 1,4
#include "libfc.h"
#include "libfc.h"
#include "printf_P.h"
#include "main.h"
#include "spi.h"
8,13 → 8,68
 
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__))
 
const char PROGMEM JETI_CODE[53] =
{
0, // 0
'O', // SPEAK_ERR_CALIBARTION 1
'P', // SPEAK_ERR_RECEICER 2
'Q', // SPEAK_ERR_DATABUS 3
'R', // SPEAK_ERR_NAVI 4
'S', // SPEAK_ERROR 5
'T', // SPEAK_ERR_COMPASS 6
'S', // SPEAK_ERR_SENSOR 7
'V', // SPEAK_ERR_GPS 8
'W', // SPEAK_ERR_MOTOR 9
'H', // SPEAK_MAX_TEMPERAT 10
0, // SPEAK_ALTI_REACHED 11
'X', // SPEAK_WP_REACHED 12
'Y', // SPEAK_NEXT_WP 13
0, // SPEAK_LANDING 14
'Z', // SPEAK_GPS_FIX 15
'U', // SPEAK_UNDERVOLTAGE 16
'E', // SPEAK_GPS_HOLD 17
'F', // SPEAK_GPS_HOME 18
'G', // SPEAK_GPS_OFF 19
'H', // SPEAK_BEEP 20
'A', // SPEAK_MIKROKOPTER 21
0, // SPEAK_CAPACITY 22
'I', // SPEAK_CF_OFF 23
'B', // SPEAK_CALIBRATE 24
'J', // SPEAK_MAX_RANGE 25
'J', // SPEAK_MAX_ALTITUD 26
0, // 27
0, // 28
0, // 29
0, // 30
0, // 31
0, // 32
0, // 33
0, // 34
0, // 35
0, // 36
0, // 37
'D', // SPEAK_MK_OFF 38
'L', // SPEAK_ALTITUDE_ON 39
'M', // SPEAK_ALTITUDE_OFF 40
0, // 41
0, // 42
0, // 43
0, // 44
0, // 45
'N', // SPEAK_CF_ON 46
0, // SPEAK_SINKING 47
0, // SPEAK_RISING 48
0, // SPEAK_HOLDING 49
'K', // SPEAK_GPS_ON 50
0, // SPEAK_FOLLWING 51
'C' // SPEAK_STARTING 52
};
 
 
JetiExPacket_t JetiExData[JETI_EX_PARAMETER_COUNT + 1] = // Parameter count + DeviceName (ID0)
{
// Label[10] unit[3], data type, Data , position of decimal point
// "1234567890", "123",
{ "-= M K =- " , " ", 1, 0 , 0 }, // first one is device name // datatype 1 = -8192...8192
{ "-=.M_K.=-" , " ", 1, 0 , 0 }, // first one is device name // datatype 1 = -8192...8192
{ "Voltage " , "V ", 1, 0 , 1 }, // ID 1
{ "Current " , "A ", 1, 0 , 1 }, // ID 2
{ "Capacity " , "Ah ", 1, 0 , 2 }, // ID 3
33,9 → 88,39
};
 
 
void BuildJeti_Vario(void)
{
signed int tmp = 0;
static signed int JetiVarioMeter = 0;
JetiVarioMeter = (JetiVarioMeter * 3 + VarioMeter) / 4;
 
if(VarioCharacter == '+')
{
tmp = (AltitudeSetpointTrimming * EE_Parameter.Hoehe_Verstaerkung) / 32 + 5;
}
else
if(VarioCharacter == '-')
{
tmp = (AltitudeSetpointTrimming * EE_Parameter.Hoehe_Verstaerkung) / 32 - 5;
}
else
if((VarioCharacter == ' ') && (FC_StatusFlags & FC_STATUS_FLY))
{
tmp = (JetiVarioMeter/32);
}
else
if(VarioCharacter == '^') tmp = FromNC_AltitudeSpeed;
else
if(VarioCharacter == 'v') tmp = tmp - FromNC_AltitudeSpeed;
 
JetiExData[12].Value = tmp;
}
 
 
// --------------------------------------------------------------------------------------------------
void JetiEX_Update(void)
{
 
GetHottestBl();
JetiExData[1].Value = UBat;
49,8 → 134,7
JetiExData[9].Value = GPSInfo.HomeBearing;
JetiExData[10].Value = MaxBlTempertaure;
JetiExData[11].Value = EarthMagneticField;
JetiExData[12].Value = 0;
JetiExData[13].Value = NC_ErrorCode;
// JetiExData[12].Value = Vario;
JetiExData[13].Value = NC_ErrorCode;
}
#endif
/test_branches/FC2_2/jeti_ex.h
3,8 → 3,8
 
 
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__))
extern void BuildJeti_Vario(void);
 
 
// define here how many Jeti EX parameters should be transmitted (max. = 15)
//
#define JETI_EX_PARAMETER_COUNT 15
11,9 → 11,7
//
// -------------------------------------------------------------------------
 
 
 
 
extern const char PROGMEM JETI_CODE[53];
typedef struct
{
/test_branches/FC2_2/main.c
323,6 → 323,8
CalcNickServoValue();
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__))
if(EE_Parameter.Receiver == RECEIVER_HOTT) HoTT_Menu();
else
if(EE_Parameter.Receiver == RECEIVER_JETI) BuildJeti_Vario();
#endif
if(MissingMotor)
{
/test_branches/FC2_2/main.h
71,6 → 71,7
#include "hottmenu.h"
#include "debug.h"
#include "sbus.h"
#include "jeti_ex.h"
 
#endif //_MAIN_H
 
/test_branches/FC2_2/spi.c
226,7 → 226,12
case SPI_FCCMD_PARAMETER2:
ToNaviCtrl.Param.Byte[0] = EE_Parameter.NaviOut1Parameter; // Distance between Photo releases
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__))
if(EE_Parameter.Receiver != RECEIVER_HOTT) HoTT_Waring(); // create the ToNC_SpeakHoTT
// create the ToNC_SpeakHoTT
if(EE_Parameter.Receiver != RECEIVER_HOTT)
{
if(JetiBeep != 'B') JetiBeep = pgm_read_byte(&JETI_CODE[HoTT_Waring()]);
else HoTT_Waring();
}
ToNaviCtrl.Param.Byte[1] = ToNC_SpeakHoTT;
#else
ToNaviCtrl.Param.Byte[1] = 0;
364,7 → 369,7
GPSInfo.Speed = FromNaviCtrl.Param.Byte[3];
GPSInfo.HomeDistance = FromNaviCtrl.Param.Int[2];
GPSInfo.HomeBearing = FromNaviCtrl.Param.sInt[3];
PPM_in[25] = (signed char) FromNaviCtrl.Param.Byte[8]; // WP_EVENT-Channel-Value
PPM_in[25] = (signed char) FromNaviCtrl.Param.Byte[8]; // WP_EVENT-Channel-Value (FromNC_WP_EventChannel)
FromNC_AltitudeSpeed = FromNaviCtrl.Param.Byte[9];
FromNC_AltitudeSetpoint = (long) FromNaviCtrl.Param.sInt[5] * 10; // in cm
break;