|
@@ -125,13 +125,13 @@ bool HAL_adc_finished(void) {
|
125
|
125
|
|
126
|
126
|
// possible config options if something similar is extended to more platforms.
|
127
|
127
|
#define ADC_USE_MEDIAN_FILTER // Filter out erroneous readings
|
128
|
|
-#define ADC_MEDIAN_FILTER_SIZE (23) // Higher values increase step delay (phase shift),
|
|
128
|
+#define ADC_MEDIAN_FILTER_SIZE 23 // Higher values increase step delay (phase shift),
|
129
|
129
|
// (ADC_MEDIAN_FILTER_SIZE + 1) / 2 sample step delay (12 samples @ 500Hz: 24ms phase shift)
|
130
|
130
|
// Memory usage per ADC channel (bytes): (6 * ADC_MEDIAN_FILTER_SIZE) + 16
|
131
|
131
|
// 8 * ((6 * 23) + 16 ) = 1232 Bytes for 8 channels
|
132
|
132
|
|
133
|
133
|
#define ADC_USE_LOWPASS_FILTER // Filter out high frequency noise
|
134
|
|
-#define ADC_LOWPASS_K_VALUE (6) // Higher values increase rise time
|
|
134
|
+#define ADC_LOWPASS_K_VALUE 6 // Higher values increase rise time
|
135
|
135
|
// Rise time sample delays for 100% signal convergence on full range step
|
136
|
136
|
// (1 : 13, 2 : 32, 3 : 67, 4 : 139, 5 : 281, 6 : 565, 7 : 1135, 8 : 2273)
|
137
|
137
|
// K = 6, 565 samples, 500Hz sample rate, 1.13s convergence on full range step
|
|
@@ -162,7 +162,7 @@ struct MedianFilter {
|
162
|
162
|
datum = STOPPER + 1; // No stoppers allowed.
|
163
|
163
|
}
|
164
|
164
|
|
165
|
|
- if ( (++datpoint - buffer) >= ADC_MEDIAN_FILTER_SIZE) {
|
|
165
|
+ if ( (++datpoint - buffer) >= (ADC_MEDIAN_FILTER_SIZE)) {
|
166
|
166
|
datpoint = buffer; // Increment and wrap data in pointer.
|
167
|
167
|
}
|
168
|
168
|
|
|
@@ -224,9 +224,9 @@ struct MedianFilter {
|
224
|
224
|
|
225
|
225
|
struct LowpassFilter {
|
226
|
226
|
uint32_t data_delay = 0;
|
227
|
|
- uint16_t update(uint16_t value) {
|
228
|
|
- data_delay = data_delay - (data_delay >> ADC_LOWPASS_K_VALUE) + value;
|
229
|
|
- return (uint16_t)(data_delay >> ADC_LOWPASS_K_VALUE);
|
|
227
|
+ uint16_t update(const uint16_t value) {
|
|
228
|
+ data_delay -= (data_delay >> (ADC_LOWPASS_K_VALUE)) - value;
|
|
229
|
+ return (uint16_t)(data_delay >> (ADC_LOWPASS_K_VALUE));
|
230
|
230
|
}
|
231
|
231
|
};
|
232
|
232
|
|