Привет!
Nec> коль, мы измеряем давление десятки раз в секунду, зачем нам каждый раз измерять температуру? Так ли это необходимо? Или достаточно один раз в секунду-две измерить температуру для поправки коэффициентов и далее измерять только давление?
В самом даташите написали что можно мерить температуру и на более длительных промежутках, если требуется быстрое измерение давления.
Nec> Сразу оговорюсь, цель не каждые 5мс получать данные давления, а оставить максимум непрерывного времени на другие задачи.
А здесь многое можно сделать если хотите потратить некоторое время на математику и программирование.
В моем БРЭО есть возможность раскрытия основного или второго парашюта на заданной высоте. Но это не значит, что мне нужно все время знать реальную высоту. Перед стартом все желаемые высоты - то есть давления, рассчитываются в BREO на основе стартового давления и температуры до целочисленных значений АЦП.
Тогда вам не придется выполнять сложные вычисления с плавающей запятой в этих 8-битных процессорах на каждой итерации и вы сравниваете только целые числа. Конечно точность может быть как то меньше, но от старта (включение борткомпьютера) до раскрытия парашюта ракеты ни температура, ни базовое давление не меняются настолько существенно, чтобы привести к значительным неточностям.
Кроме того, работать с буферами и усреднением намного проще, если вы имеете дело с целочисленными значениями. Например, я вижу что вы усредняете три значения. Но если вы усредняете 2^n значений, тогда математика выполняется намного быстрее, потому что вам больше не нужно деление - к любому целому числу сдвиг вправо с n-битами равен делению на 2^n и вот все гораздо быстрее - но ето только для числа без знаком.
Конечно, вы должны быть осторожны со всеми этими формулами и с изменением направления давления. Некоторые датчики дают положительные числа из АЦП, некоторые отрицательные - BMP280, если я правильно помню был 16b числом со знаком. Итак, полет вверх - давление вниз - АЦП вниз - абсолютное значение вверх и у вас есть буфер, какое среднее значение должно быть меньше, чтобы определить инверсию параболы.
Конечно, можно переключиться на 32-битные ARM-контроллеры, которые кстати стоят примерно столько же и забыть обо всех этих "проблемы", но тогда где удовольствие учиться и открывать для себя.