mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-03-15 07:29:15 +01:00
More speed improvement to the AHRS_ADC_downsample_data() function. Removed a bypassable multiple inside the inner loop.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@2430 ebee16cc-31ac-478f-84a7-5cbb03baadba
This commit is contained in:
parent
403c9ea2da
commit
3d8edce5ee
@ -254,14 +254,15 @@ void AHRS_ADC_SetFIRCoefficients(float * new_filter)
|
||||
*/
|
||||
void AHRS_ADC_downsample_data()
|
||||
{
|
||||
uint16_t chan;
|
||||
uint16_t sample;
|
||||
|
||||
for (chan = 0; chan < PIOS_ADC_NUM_CHANNELS; chan++)
|
||||
for (int chan = 0; chan < PIOS_ADC_NUM_CHANNELS; chan++)
|
||||
{
|
||||
register int32_t sum = 0;
|
||||
for (sample = 0; sample < adc_config.adc_oversample; sample++)
|
||||
sum += (int32_t)adc_config.valid_data_buffer[chan + sample * PIOS_ADC_NUM_CHANNELS] * adc_config.fir_coeffs[sample];
|
||||
for (int sample = 0, k = chan; sample < adc_config.adc_oversample; sample++)
|
||||
{
|
||||
// sum += (int32_t)adc_config.valid_data_buffer[chan + sample * PIOS_ADC_NUM_CHANNELS] * adc_config.fir_coeffs[sample];
|
||||
sum += (int32_t)adc_config.valid_data_buffer[k] * adc_config.fir_coeffs[sample];
|
||||
k += PIOS_ADC_NUM_CHANNELS;
|
||||
}
|
||||
downsampled_buffer[chan] = (float)sum / adc_config.fir_coeffs[adc_config.adc_oversample];
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user