Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 2630 → Rev 2631

/trunk/eeprom.c
110,6 → 110,13
EE_Parameter.Kanalbelegung[K_POTI8] = 12;
}
 
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+ we have an update -> insert the default parameters here
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void InsertDefaultParameters(unsigned char old_version)
{
EE_Parameter.Revision = EEPARAM_REVISION;
}
 
/***************************************************/
/* Default Values for parameter set 1 */
116,6 → 123,7
/***************************************************/
void CommonDefaults(void)
{
unsigned char i;
EE_Parameter.Revision = EEPARAM_REVISION;
memset(EE_Parameter.Name,0,12); // delete name
// if(PlatinenVersion >= 20)
266,8 → 274,9
EE_Parameter.LandingPulse = 960 / 4;
EE_Parameter.SingleWpControlChannel = 0;
EE_Parameter.MenuKeyChannel = 0;
for(i=0; i < sizeof(EE_Parameter.reserved); i++) EE_Parameter.reserved[i] = 0;
}
 
/*
void ParamSet_DefaultSet1(void) // sport
{
392,7 → 401,7
// number [1..5]
uint8_t ParamSet_ReadFromEEProm(uint8_t setnumber)
{
uint8_t crc;
uint8_t crc, rev;
uint16_t eeaddr;
 
// range the setnumber
408,10 → 417,17
if(crc != eeprom_read_byte((uint8_t*)(eeaddr + PARAMSET_STRUCT_LEN - 1))) return 0;
 
// check revision
if(eeprom_read_byte((uint8_t*)(eeaddr)) != EEPARAM_REVISION) return 0;
 
rev = eeprom_read_byte((uint8_t*)(eeaddr));
if(rev != EEPARAM_REVISION)
{
if(rev < 108) return(0); // since 2.13 (02.2016), the eeprom parameters are backwards compatible
}
// read paramset from eeprom
eeprom_read_block((void *) &EE_Parameter, (void*)(EEPROM_ADR_PARAMSET + PARAMSET_STRUCT_LEN * (setnumber - 1)), PARAMSET_STRUCT_LEN);
if(EE_Parameter.Revision != EEPARAM_REVISION) // just in case we have a newer version now
{
InsertDefaultParameters(EE_Parameter.Revision);
}
LED_Init();
InitSerialPoti();
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__))
599,6 → 615,7
/***************************************************/
void ParamSet_Init(void)
{
unsigned char rev_old;
uint8_t channel_backup = 0, bad_params = 0, ee_default = 0,i;
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__))
if(PlatinenVersion != GetParamByte(PID_HARDWARE_VERSION))
612,9 → 629,22
while(1);
}
#endif
if((EEPARAM_REVISION) != GetParamByte(PID_EE_REVISION))
rev_old = GetParamByte(PID_EE_REVISION);
if((EEPARAM_REVISION) != rev_old)
{
ee_default = 1; // software update or forced by mktool
printf("\n\r-->Parameter changed (old:%d new:%d)", rev_old, EEPARAM_REVISION);
if((EEPARAM_REVISION < rev_old) && // we have a downgrade -> check if eeprom reset is nessecary
(GetParamByte(ee_default) != EE_BACKWARD_COMP))
{
printf(" backwards");
ee_default = 1;
}
if(rev_old < 108) ee_default = 1; // we added forward cpmatiblity since rev 108 (2.14 - feb. 2016)
if(!ee_default)
{
printf("--> but compatible");
SetParamByte(PID_EE_REVISION, EEPARAM_REVISION);
}
}
// 1st check for a valid channel backup in eeprom
i = EEProm_Checksum(EEPROM_ADR_CHANNELS, sizeof(EE_Parameter.Kanalbelegung));
669,7 → 699,11
MixerTable_Default(); // Quadro
MixerTable_WriteToEEProm();
}
if(ee_default) SetParamByte(PID_EE_REVISION, (EEPARAM_REVISION));
if(ee_default)
{
SetParamByte(PID_EE_REVISION, EEPARAM_REVISION);
SetParamByte(PID_EE_REVISION_BACK, EE_BACKWARD_COMP);
}
// determine motornumber
RequiredMotors = 0;
for(i = 0; i < MAX_MOTORS; i++)
/trunk/eeprom.h
4,8 → 4,9
#include <inttypes.h>
#include "twimaster.h"
 
#define EEPARAM_REVISION 107 // !!!Update NC also!!! is count up, if paramater stucture has changed (compatibility)
#define EEMIXER_REVISION 1 // is count up, if mixer stucture has changed (compatibility)
#define EEPARAM_REVISION 108 // !!!Update NC also!!! is count up, if paramater stucture has changed (compatibility)
#define EEMIXER_REVISION 1 // is count up, if mixer stucture has changed (compatibility)
#define EE_BACKWARD_COMP 1 // change if the eepropm parameters are not backwards compatible
 
#define EEPROM_ADR_PARAM_BEGIN 0
#define EE_DUMMY 0 // Byte
27,6 → 28,8
#define PID_GYRO_ROLL 20 // word
#define PID_GYRO_YAW 22 // word
 
#define PID_EE_REVISION_BACK 24 // Byte -> backward compatiblity: if firmware is downgraded form higher version
 
#define EEPROM_ADR_CHANNELS 80 // 80 - 93, 12 bytes + 1 byte crc
#define EEPROM_ADR_PARAMSET 100 // 100 - 770, 5 * 134 bytes (V1.06)
#define EEPROM_ADR_MIXERTABLE 1000 // 1000 - 1078, 78 bytes
265,6 → 268,7
unsigned char MenuKeyChannel;
unsigned char CamCtrlModeChannel;
unsigned char CamCtrlZoomChannel;
unsigned char reserved[32]; // for later use
//------------------------------------------------
unsigned char BitConfig; // (war Loop-Cfg) Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt
unsigned char ServoCompInvert; // // 0x01 = Nick, 0x02 = Roll, 0x04 = relative moving // WICHTIG!!! am Ende lassen
272,7 → 276,7
unsigned char GlobalConfig3; // bitcodiert
char Name[12];
unsigned char crc; // must be the last byte!
} paramset_t;
} paramset_t; // since 2.14 -> size is always 179 Bytes
// -> if changed: update NC-Data structure also <-
 
#define PARAMSET_STRUCT_LEN sizeof(paramset_t)
/trunk/libfc1284.a
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/libfc644.a
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/main.c
475,7 → 475,7
timerPolling = SetDelay(250);
 
Debug(ANSI_CLEAR "FC-Start!\n\rFlugzeit: %d min", FlugMinutenGesamt); // Note: this won't waste flash memory, if #DEBUG is not active
//printf("\n\rEE_Parameter size:%i\n\r", PARAMSET_STRUCT_LEN);
if(PARAMSET_STRUCT_LEN != 179) while(1) printf("\n\rEE_Parameter size:%i", PARAMSET_STRUCT_LEN);
 
DebugOut.Status[0] = 0x01 | 0x02;
JetiBeep = 0;
/trunk/makefile
6,10 → 6,10
#-------------------------------------------------------------------
VERSION_MAJOR = 2
VERSION_MINOR = 13
VERSION_PATCH = 6
VERSION_PATCH = 7
VERSION_SERIAL_MAJOR = 11 # Serial Protocol to KopterTool -> do not change!
VERSION_SERIAL_MINOR = 0 # Serial Protocol
NC_SPI_COMPATIBLE = 80 # Navi-Kompatibilität
NC_SPI_COMPATIBLE = 81 # Navi-Kompatibilität
LIB_FC_COMPATIBLE = 8 # Library
#-------------------------------------------------------------------
# ATMEGA644: 63487 is maximum
/trunk/spi.h
111,7 → 111,7
{
unsigned char Sync1,Sync2;
unsigned char WhoAmI;
unsigned char Data[240];
unsigned char Data[200];
unsigned char Chksum;
};
extern struct str_HugeBlockToNavi HugeBlockToNavi;
119,7 → 119,7
struct str_HugeBlockFromNavi
{
unsigned char WhoAmI;
unsigned char Data[240];
unsigned char Data[200];
unsigned char Chksum;
};
extern struct str_HugeBlockFromNavi HugeBlockFromNavi;
/trunk/uart.c
64,8 → 64,8
#define BL_CTRL_ADDRESS 5
 
#define ABO_TIMEOUT 4000 // disable abo after 4 seconds
#define MAX_SENDE_BUFF 220
#define MAX_EMPFANGS_BUFF 220
#define MAX_SENDE_BUFF 250 // 180 setting need 246 bytes
#define MAX_EMPFANGS_BUFF 250
 
#define BLPARAM_REVISION 1
#define MASK_SET_PWM_SCALING 0x01
374,7 → 374,7
}
pRxData = (unsigned char*)&RxdBuffer[3]; // decodierte Daten beginnen beim 4. Byte
RxDataLen = ptrOut - 3; // wie viele Bytes wurden dekodiert?
 
//if(DebugOut.Analog[] < AnzahlEmpfangsBytes) DebugOut.Analog[] = AnzahlEmpfangsBytes;
}
 
// --------------------------------------------------------------------------
/trunk/version.txt
840,8 → 840,12
2.13g (18.01.2016)
- SPEAK_RECEIVER_VOLTAGE implemented (FC3.0)
 
2.13h (01.02.2016)
- since 2.13h (02.2016), the eeprom parameters are backwards compatible
- uart buffer increased to 250 bytes to hold the new eeporm parameter structure
- Simulation: correct behaviour of Servo-Failsafe-Positions
 
toDo:
- CalAthmospheare nachführen