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