Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 2072 → Rev 2073

/branches/dongfang_FC_rewrite/analog.c
123,15 → 123,15
// Value of AIRPRESSURE_OVERSAMPLING samples, with range, filtered.
int32_t filteredAirPressure;
 
#define MAX_D_AIRPRESSURE_WINDOW_LENGTH 5
#define MAX_D_AIRPRESSURE_WINDOW_LENGTH 32
//int32_t lastFilteredAirPressure;
int16_t dAirPressureWindow[MAX_D_AIRPRESSURE_WINDOW_LENGTH];
uint8_t dWindowPtr;
uint8_t dWindowPtr = 0;
 
#define MAX_AIRPRESSURE_WINDOW_LENGTH 32
int16_t airPressureWindow[MAX_AIRPRESSURE_WINDOW_LENGTH];
int32_t windowedAirPressure;
uint8_t windowPtr;
uint8_t windowPtr = 0;
 
// Partial sum of AIRPRESSURE_SUMMATION_FACTOR samples.
int32_t airPressureSum;
488,12 → 488,12
windowedAirPressure += simpleAirPressure;
windowedAirPressure -= airPressureWindow[windowPtr];
airPressureWindow[windowPtr++] = simpleAirPressure;
if (windowPtr == staticParams.airpressureWindowLength) windowPtr = 0;
if (windowPtr >= staticParams.airpressureWindowLength) windowPtr = 0;
filteredAirPressure = windowedAirPressure / staticParams.airpressureWindowLength;
}
 
dAirPressureWindow[dWindowPtr++] = (int16_t)(filteredAirPressure - lastFilteredAirPressure);
if (dWindowPtr == staticParams.dAirpressureWindowLength) dWindowPtr = 0;
if (dWindowPtr >= staticParams.airpressureDWindowLength) dWindowPtr = 0;
 
pressureMeasurementCount = airPressureSum = 0;
}
624,10 → 624,11
 
int16_t analog_getDHeight(void) {
int16_t result = 0;
for (int i=0; i<staticParams.dAirpressureWindowLength; i++) {
result += dAirPressureWindow[i];
for (int i=0; i<staticParams.airpressureDWindowLength; i++) {
result -= dAirPressureWindow[i]; // minus pressure is plus height.
}
 
debugOut.analog[30] = result;
// dHeight = -dPressure, so here it is the old pressure minus the current, not opposite.
return result;
}