X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fao_sample.c;h=b2b8e9f63ff662385054b6a904797f38e6c77ce9;hb=fa6df3fa21e8f09e70371e6c6cc7827a533b4fe6;hp=ef403393cb6c276fbd81c38c46cbe4f559d3dd1a;hpb=c754759a2d503633d527da4ebb20eb859cd506fd;p=fw%2Faltos diff --git a/src/ao_sample.c b/src/ao_sample.c index ef403393..b2b8e9f6 100644 --- a/src/ao_sample.c +++ b/src/ao_sample.c @@ -37,21 +37,21 @@ __data uint8_t ao_sample_adc; * Sensor calibration values */ -__xdata int16_t ao_ground_pres; /* startup pressure */ -__xdata int16_t ao_ground_height; /* MSL of ao_ground_pres */ +__pdata int16_t ao_ground_pres; /* startup pressure */ +__pdata int16_t ao_ground_height; /* MSL of ao_ground_pres */ #if HAS_ACCEL -__xdata int16_t ao_ground_accel; /* startup acceleration */ -__xdata int16_t ao_accel_2g; /* factory accel calibration */ -__xdata int32_t ao_accel_scale; /* sensor to m/s² conversion */ +__pdata int16_t ao_ground_accel; /* startup acceleration */ +__pdata int16_t ao_accel_2g; /* factory accel calibration */ +__pdata int32_t ao_accel_scale; /* sensor to m/s² conversion */ #endif -static __xdata uint8_t ao_preflight; /* in preflight mode */ +static __pdata uint8_t ao_preflight; /* in preflight mode */ -static __xdata uint16_t nsamples; -__xdata int32_t ao_sample_pres_sum; +static __pdata uint16_t nsamples; +__pdata int32_t ao_sample_pres_sum; #if HAS_ACCEL -__xdata int32_t ao_sample_accel_sum; +__pdata int32_t ao_sample_accel_sum; #endif static void @@ -68,16 +68,17 @@ ao_sample_preflight(void) #endif ao_sample_pres_sum += ao_sample_pres; ++nsamples; - ao_preflight = FALSE; - } - ao_config_get(); + } else { + ao_config_get(); #if HAS_ACCEL - ao_ground_accel = ao_sample_accel_sum >> 9; - ao_accel_2g = ao_config.accel_minus_g - ao_config.accel_plus_g; - ao_accel_scale = to_fix32(GRAVITY * 2 * 16) / ao_accel_2g; + ao_ground_accel = ao_sample_accel_sum >> 9; + ao_accel_2g = ao_config.accel_minus_g - ao_config.accel_plus_g; + ao_accel_scale = to_fix32(GRAVITY * 2 * 16) / ao_accel_2g; #endif - ao_ground_pres = ao_sample_pres_sum >> 9; - ao_ground_height = ao_pres_to_altitude(ao_ground_pres); + ao_ground_pres = ao_sample_pres_sum >> 9; + ao_ground_height = ao_pres_to_altitude(ao_ground_pres); + ao_preflight = FALSE; + } } uint8_t @@ -138,7 +139,7 @@ ao_sample(void) * * ao_sample_accel 32767 * = ------------ * ------------ - * 32737 ao_accel_ref + * 32767 ao_accel_ref * * Multiply through by 32767: * @@ -178,6 +179,8 @@ ao_sample(void) * just dropped a bit of noise off the low end. */ ao_sample_accel = (uint16_t) ((((uint32_t) ao_sample_accel << 16) / (ao_accel_ref[ao_sample_adc] << 1))) >> 1; + if (ao_config.pad_orientation != AO_PAD_ORIENTATION_ANTENNA_UP) + ao_sample_accel = 0x7fff - ao_sample_accel; ao_adc->accel = ao_sample_accel; #endif #endif