Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 242 → Rev 243

/branches/GPS_BETA_chris2798_hallo2/main.c
52,6 → 52,7
#include "main.h"
 
unsigned char EEPromArray[E2END+1] EEMEM;
unsigned char PlatinenVersion = 10;
 
// -- Parametersatz aus EEPROM lesen ---
// number [0..5]
67,7 → 68,7
// number [0..5]
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length)
{
if (number > 5) number = 5;
if(number > 5) number = 5;
eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length);
 
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], number); // diesen Parametersatz als aktuell merken
75,7 → 76,14
 
unsigned char GetActiveParamSetNumber(void)
{
return(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET]));
unsigned char set;
set = eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET]);
if(set > 5)
{
set = 2;
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], set); // diesen Parametersatz als aktuell merken
}
return(set);
}
 
//############################################################################
85,8 → 93,11
{
unsigned int timer;
unsigned int timer2 = 0;
 
DDRC = 0x01; // SCL
DDRB = 0x00;
PORTB = 0x00;
for(timer = 0; timer < 1000; timer++); // verzögern
if(PINB & 0x01) PlatinenVersion = 11; else PlatinenVersion = 10;
DDRC = 0x81; // SCL
PORTC = 0xff; // Pullup SDA
DDRB = 0x1B; // LEDs und Druckoffset
PORTB = 0x01; // LED_Rot
94,7 → 105,7
DDRD |=0x80; // J7
PORTD = 0xF7; // LED
 
MCUSR &=~(1<<WDRF);
WDTCSR |= (1<<WDCE)|(1<<WDE);
118,11 → 129,12
VersionInfo.Nebenversion = VERSION_NEBENVERSION;
VersionInfo.PCKompatibel = VERSION_KOMPATIBEL;
printf("\n\rFlightControl V%d.%d ", VERSION_HAUPTVERSION, VERSION_NEBENVERSION);
printf("\n\rFlightControl\n\rHardware:%d.%d\n\rSoftware:V%d.%d ",PlatinenVersion/10,PlatinenVersion%10, VERSION_HAUPTVERSION, VERSION_NEBENVERSION);
printf("\n\r==============================");
GRN_ON;
 
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != 59) // seit V 0.60
#define EE_DATENREVISION 62 // wird angepasst, wenn sich die EEPROM-Daten geändert haben
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != EE_DATENREVISION)
{
printf("\n\rInit. EEPROM: Generiere Default-Parameter...");
DefaultKonstanten1();
131,8 → 143,8
if(i==2) DefaultKonstanten2();
WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE);
}
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], 1);
eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], 59);
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], 2);
eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], EE_DATENREVISION);
}
ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE);
142,7 → 154,7
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)
{
printf("\n\rAbgleich Luftdrucksensor..");
timer = SetDelay(2500);
timer = SetDelay(1000);
SucheLuftruckOffset();
while (!CheckDelay(timer));
printf("OK\n\r");
164,9 → 176,9
printf("\n\n\r");
LcdClear();
I2CTimeout = 5000;
while (1)
{
if (UpdateMotor) // ReglerIntervall
{
UpdateMotor=0;
174,25 → 186,23
SendMotorData();
ROT_OFF;
if(PcZugriff) PcZugriff--;
if(SenderOkay) SenderOkay--;
if (UBat < EE_Parameter.UnterspannungsWarnung)
{
beeptime = 2000;
if(!I2CTimeout)
{
I2CTimeout = 5;
i2c_reset();
if((BeepMuster == 0xffff) && MotorenEin)
{
beeptime = 10000;
BeepMuster = 0x0080;
}
}
if(!Timeout)
{
i2c_init();
}
else
{
ROT_OFF;
I2CTimeout--;
ROT_OFF;
}
}
 
if(SIO_DEBUG)
{
DatenUebertragung();
199,10 → 209,17
BearbeiteRxDaten();
}
else BearbeiteRxDaten();
if(CheckDelay(timer2))
if(CheckDelay(timer))
{
if(MotorenEin) PORTC ^= 0x10; else PORTC &= ~0x10;
timer = SetDelay(500);
if(UBat < EE_Parameter.UnterspannungsWarnung)
{
if(BeepMuster == 0xffff)
{
beeptime = 6000;
BeepMuster = 0x0300;
}
}
timer = SetDelay(100);
}
}
return (1);