From: Keith Packard Date: Sat, 22 Jul 2023 06:19:06 +0000 (-0700) Subject: altos: Compute igniter good/bad thresholds using 3.5V value X-Git-Tag: 1.9.17~1^2~8 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=70481772386d556b8a7981da38a03f5c9b181a7c altos: Compute igniter good/bad thresholds using 3.5V value Instead of requiring each product to set the ADC values for good/bad igniters, compute them based upon a 3.5V value using the ADC characteristics already present in ao_pins.h. This changes the threshold used on LPC parts from 400 (0.189V) to 7388. Signed-off-by: Keith Packard --- diff --git a/src/kernel/ao.h b/src/kernel/ao.h index b3f780f5..edfbbb87 100644 --- a/src/kernel/ao.h +++ b/src/kernel/ao.h @@ -982,4 +982,26 @@ void ao_ms5607_init(void); #include +/* + * dv = (sensor * (p+m) * ref_dv)/ (max * m) + * value * (max * m) = (sensor * (p+m) * ref) + * value * (max * m) / ((p+m) * ref) = sensor + */ + +#define AO_DV_MUL(p,m) ((int32_t) AO_ADC_MAX * (m)) +#define AO_DV_DIV(p,m) ((int32_t) AO_ADC_REFERENCE_DV * ((p) + (m))) +#define AO_DV_ADD(p,m) (AO_DV_DIV(p,m) / 2) + +#define ao_decivolt_to_adc(dv, p, m) \ + ((int16_t) (((int32_t) (dv) * AO_DV_MUL(p,m) + AO_DV_ADD(p,m)) / AO_DV_DIV(p,m))) + +#define AO_IGNITER_CLOSED_DV 35 +#define AO_IGNITER_OPEN_DV 10 + +#undef AO_IGNITER_OPEN +#undef AO_IGNITER_CLOSED + +#define AO_IGNITER_OPEN ao_decivolt_to_adc(AO_IGNITER_OPEN_DV, AO_IGNITE_DIV_PLUS, AO_IGNITE_DIV_MINUS) +#define AO_IGNITER_CLOSED ao_decivolt_to_adc(AO_IGNITER_CLOSED_DV, AO_IGNITE_DIV_PLUS, AO_IGNITE_DIV_MINUS) + #endif /* _AO_H_ */ diff --git a/src/kernel/ao_convert_volt.c b/src/kernel/ao_convert_volt.c index c5dfd22d..1f04df64 100644 --- a/src/kernel/ao_convert_volt.c +++ b/src/kernel/ao_convert_volt.c @@ -19,8 +19,8 @@ #include "ao.h" #define MUL(p,m) ((int32_t) AO_ADC_REFERENCE_DV * ((p) + (m))) -#define ADD(p,m) (MUL(p,m)/2) #define DIV(p,m) ((int32_t) AO_ADC_MAX * (m)) +#define ADD(p,m) (DIV(p,m) / 2) #define scale(v,p,m) (((int32_t) (v) * MUL(p,m) + ADD(p,m)) / DIV(p,m)) #if HAS_APRS || HAS_BATTERY_REPORT