68,6 → 68,8 |
volatile unsigned int ZaehlMessungen = 0; |
unsigned char AnalogOffsetNick = 115,AnalogOffsetRoll = 115,AnalogOffsetGier = 115; |
volatile unsigned char AdReady = 1; |
volatile long HoehenWertF = 0, HoehenDiff, HoeheAlt; |
volatile long vv, vvSum; |
|
//####################################################################################### |
void ADC_Init(void) |
189,10 → 191,10 |
static signed int gier1, roll1, nick1, nick_filter, roll_filter; |
static signed int accy, accx; |
static long tmpLuftdruck = 0; |
static char messanzahl_Druck = 0; |
// static char messanzahl_Druck = 0; |
#define ANZ_RING 32 |
static long VarioRing[ANZ_RING]; |
static unsigned char RingPtr = 0; |
//static long VarioRing[ANZ_RING]; |
//static unsigned char RingPtr = 0; |
|
switch(state++) |
{ |
241,8 → 243,8 |
//if(PlatinenVersion < 22) |
//else Aktuell_az = 1024 - ADC; |
tmp = (signed int) Aktuell_az - NeutralAccZ; |
AdWertAccHoch -= AdWertAccHoch/ACC_Z_FILTER; |
AdWertAccHoch += tmp; |
AdWertAccHoch -= AdWertAccHoch/32; |
AdWertAccHoch += tmp; |
// AdWertAccHoch = (7 * AdWertAccHoch + tmp) / 8; |
} |
if(PlatinenVersion < 22) |
320,6 → 322,14 |
break; |
// - neu ------------------------------------------------- |
case 17: |
HoehenDiff = HoehenWert - HoeheAlt; |
vvSum = vvSum - vv + (Aktuell_az - NeutralAccZ)*6 + HoehenDiff*500; // Fusion vert. velocity |
vv = vvSum/501; |
HoeheAlt = HoehenWert; |
DebugOut.Analog[17] = vv; |
SummenHoehe = SummenHoehe - HoehenWertF + vv + HoehenWert; |
HoehenWertF = SummenHoehe/501; //Fusion Hoehe |
DebugOut.Analog[18] = HoehenWertF; |
state = 0; |
AdReady = 1; |
ZaehlMessungen++; |
326,6 → 336,12 |
// "break" fehlt hier absichtlich |
case 9: |
MessLuftdruck = ADC; |
tmpLuftdruck = MessLuftdruck - 507 * (long)ExpandBaro; // -507 counts per offset step |
Luftdruck -= Luftdruck/16; |
Luftdruck += tmpLuftdruck; |
HoehenWert = (StartLuftdruck - Luftdruck)/1; |
if(PlatinenVersion > 21) HoehenWert = HoehenWert/3 + AdWertAccHoch/200; //+ compensates disturbance due to acceleration |
/* // Qopter: deaktivieren Anfang |
if(PlatinenVersion > 21 && NeutralAccZ) MessLuftdruck -= (Aktuell_az - NeutralAccZ)/12; |
tmpLuftdruck += MessLuftdruck; |
if(++messanzahl_Druck >= 16) // war bis 0.86 "18" |
334,7 → 350,7 |
long tmp_long; |
Luftdruck = (7 * Luftdruck + tmpLuftdruck - (16 * 523) * (long)ExpandBaro + 4) / 8; // -523.19 counts per 10 counts offset step |
HoehenWert = StartLuftdruck - Luftdruck; |
if(PlatinenVersion > 21) HoehenWert /= 3; |
if(PlatinenVersion > 21) HoehenWert = HoehenWert/3 + AdWertAccHoch/200; |
|
VarioRing[RingPtr++] = HoehenWert; |
RingPtr %= ANZ_RING; |
359,6 → 375,7 |
tmpLuftdruck /= 2; |
messanzahl_Druck = 16/2; |
} |
*/ // Qopter: deaktivieren Ende |
kanal = AD_NICK; |
DebugOut.Analog[16] = VarioMeter * 8; |
break; |