Mercurial > public > ostc4
diff Small_CPU/Src/pressure.c @ 688:8c92f7743e14 Betatest
Added sanity check for temperature and pressure values:
It happens from time to time at the debug hardware (electronic without housing) that pressure or temperature are in an invalid range . To avoid side effects a sanity check has been added.
author | Ideenmodellierer |
---|---|
date | Fri, 05 Aug 2022 15:13:29 +0200 |
parents | 4644891d2f51 |
children | 2ace67231c49 |
line wrap: on
line diff
--- a/Small_CPU/Src/pressure.c Fri Aug 05 15:10:10 2022 +0200 +++ b/Small_CPU/Src/pressure.c Fri Aug 05 15:13:29 2022 +0200 @@ -49,8 +49,12 @@ /* remove comment to use a predefined profile for pressure changes instead of real world data */ /* #define SIMULATE_PRESSURE */ + #define PRESSURE_SURFACE_MAX_MBAR (1060.0f) /* It is unlikely that pressure at surface is greater than this value => clip to it */ +#define PRESSURE_MINIMUM (0.0f) +#define TEMPERATURE_MINIMUM (-100.0f) + #define PRESSURE_SURFACE_QUE (30u) /* history buffer [minutes] for past pressure measurements */ #define PRESSURE_SURFACE_EVA_WINDOW (15u) /* Number of entries evaluated during instability test. Used to avoid detection while dive enters water */ #define PRESSURE_SURFACE_STABLE_LIMIT (10u) /* Define pressure as stable if delta (mBar) is below this value */ @@ -664,6 +668,11 @@ ambient_temperature = ((float)local_Tx100) / 100; ambient_temperature += temperature_offset; + if(ambient_temperature < TEMPERATURE_MINIMUM) + { + ambient_temperature = 20.0; + } + calc_pressure = ((float)local_Px10) / 10; calc_pressure += pressure_offset; @@ -673,6 +682,11 @@ avgCnt++; /* by the measurement range of the sensor which is focused on under water pressure measurement */ } ambient_pressure_mbar = runningAvg; + + if(ambient_pressure_mbar < PRESSURE_MINIMUM) + { + ambient_pressure_mbar = 1000.0; + } }