diff --git a/TeensyDSP/Sensors.h b/TeensyDSP/Sensors.h index 387d0b8..9ee8c14 100644 --- a/TeensyDSP/Sensors.h +++ b/TeensyDSP/Sensors.h @@ -172,11 +172,15 @@ class TrailingAverage { * The new element/value to incorporate into the average. */ inline void add(T val) { - int last = (current - 1) % N; - average -= data[last]; - current = (current + 1) % N; - data[current] = val; - average += data[current] / divisor; + //int last = (current - 1) % N; + //average -= data[last]; + //current = (current + 1) % N; + //data[current] = val / divisor; + //average += data[current]; + average -= data[current]; + data[current] = val / divisor; + average += data[current]; + current = (current + 1) % N; } /*! @@ -237,7 +241,11 @@ class UBitxSensors { * measurements by reading the associated ADC pin. */ void updatePower() { - ADC::Sync_result value = adc.analogSyncRead(fwdPwrPin, revPwrPin); + static elapsedMillis sincelast = 0; + ADC::Sync_result value = adc.analogSyncRead(revPwrPin, fwdPwrPin); + + //value.result_adc0 = adc.analogRead(fwdPwrPin); + //value.result_adc1 = adc.analogRead(revPwrPin); float fwdV = HF::adcIn(value.result_adc0); float revV = HF::adcIn(value.result_adc1); @@ -248,6 +256,15 @@ class UBitxSensors { revV = HF::divIn(revV, uBitxSensorsRevPwrR1, uBitxSensorsRevPwrR2); revV = HF::bridgeFwd(revV); + if (sincelast > 1000) { + sincelast = 0; + Serial.print("POWER: "); + Serial.print(value.result_adc0); Serial.print(" / "); + Serial.print(value.result_adc1); Serial.print(" / "); + Serial.print(fwdV, 2); Serial.print(" / "); + Serial.println(revV, 2); + } + fwdPwr.add(HF::P(fwdV)); revPwr.add(HF::P(revV)); vswr.add(HF::VSWR(fwdV, revV)); @@ -278,7 +295,7 @@ class UBitxSensors { * @return Scaled S-Meter reading. */ int sMeterScaled() { - float sig = sMeter.read(); + int sig = sMeter.read() >> 2; // small number of elements; just doing a linear search for (int i = uBitxSensorsSMeterLevels; i > 0; i--) { if (sig > uBitxSensorsSMeterValues[i - 1]) {