Создание собственной системы стабилизации
Такое бывает именно у тех, у кого “собралось” случайно в соответствие с теорией. В общем направление есть.
Пощупал новый кортекс, шустрая штука)))
double a, b, c;
for(int i = 0; i < 1000000; i++)
{
c = a * b;
}
выполняется за 60 мс.
Теперь можно все в даблах считать ))))
Пощупал новый кортекс
Что за новый кортекс?
выполняется за 60 мс
Оптимизация при сборке была включена или выключена?
Теперь можно все в даблах считать
Это хорошо конечно, но мне например, пока не понятно где востребована такая повышенная точность, уж больно источники “сырых” данных неточные чтоб их в даблах обсчитывать… (приведите пример)
Что за новый кортекс?
M7 по всей видимости…
Это хорошо конечно, но мне например, пока не понятно где востребована такая повышенная точность, уж больно источники “сырых” данных неточные чтоб их в даблах обсчитывать… (приведите пример)
например барометр ms5611
например барометр ms5611
Сергей, а по моему без всяких даблов, он обсчитывается с физически предельной для него точностью, не? , а повышать разрядность шумов не вижу смысла…
Что за новый кортекс?
Оптимизация при сборке была включена или выключена?
кортекс-М7
Оптимизация включена, без оптимизации что-то лишнее добавляется, а так с = а * b выполняется за 6 тактов, дальше зависит от скорости флеша, шин и всяких кэшей
Это хорошо конечно, но мне например, пока не понятно где востребована такая повышенная точность, уж больно источники “сырых” данных неточные чтоб их в даблах обсчитывать… (приведите пример)
если есть аппаратная поддержка двойной точности то почему бы ее не использовать, задачу всегда можно найти))).
повышать разрядность шумов не вижу смысла…
ну как бы так:
const double T1 = 15.0 + 273.15; /* temperature at base height in Kelvin */
const double a = -6.5 / 1000; /* temperature gradient in degrees per metre */
const double g = 9.80665; /* gravity constant in m/s/s */
const double R = 287.05; /* ideal gas constant in J/kg/K */
Оптимизация включена, без оптимизации что-то лишнее добавляется, а так с = а * b выполняется за 6 тактов
a,b внутри цикла не меняются, с - нигде не используется. Оптимизатор это вообще из цикла выкинуть может. Не очевидный какой-то тест.
a,b внутри цикла не меняются, с - нигде не используется. Оптимизатор это вообще из цикла выкинуть может. Не очевидный какой-то тест.
ну это я как пример привел, конечно я смотрел чтобы компилятор не выкинул код. Я смотрю асемблерный код в отладчике как выполняется. Если тест не очевидный то какой очевидный?
без оптимизации будет 90мс, компилятор какието лишние инструкции добавляет.
без оптимизации будет 90мс, компилятор какието лишние инструкции добавляет.
Снег дело говорит:
a,b внутри цикла не меняются, с - нигде не используется.
при компиляции вся операция выкинется, так как результат её дальше не используется, нада так:
for(int i=0;…){ c += a* (double)i; }
printf(“%f”,(float)c) ;
никуда компилятор ничего не выкидывает, можно же объявить так
volatile double a;
volatile double b;
volatile double c;
вот асемблер какой получается
c = a * b;
LDR.N R0, [PC, #0x20]
VLDR D0,[R0, #0]
VLDR D1,[R0, #+8]
VMUL.F64 D0,D0,D1
VSTR D0,[R0, #+16]
Это при максимальной оптимизации. Оптимизация убирает лишнии копирования из памяти в регистры процессора и обратно. Фишка в том что VMUL.F64 D0,D0,D1 выполняется за один такт.
так выглядет без оптимизации:
LDR.N R0,[PC, #0x2С]
VLDR D0,[R0, #0]
LDR.N R0,[PC, #0x2С]
VLDR D1,[R0, #0]
VMUL.F64 D0,D0,D1
LDR.N R0,[PC, #0x24]
VSTR D0,[R0, #0]
даже если посчитать такты нужные для выполнения инструкций то примерно похоже на правду.
ну как бы так:
Забавно… Типа - температурная поправка воздух/высота требует большего числа знаков… Не уверен что сенсор измеряет реальную температуру воздуха … Надо проверять.
Если кому интересно, сегодня возникла надобность раздербанить назу)))) Походу закис шлейф и выдавало по одной из осей ошибку, но я раздербанил все и посмотрел как там все устроено.
Фото увы не делал да и не на что там особо смотреть.
Собственно как устроена виброразвязка: От металического кубика с датчиком идет шлейфик и соответственно все это держется на оч мягкой пенорезине, вот только есть один нюанс (как в анекдоте) кубик этот полый и датчик залит внутри при помощи эпоксидки (увидеть это не сняв кубик невозможно). Так что по сути кубик это монолит в центре которого датчик.
И кстати что заметил не знаю баг это или фича, но кубик был теплый (перед этим включал назу мин на 5-10) так что возможно он еще и изнутри подогревается, но насчет этого я не уверен.
Да наза починилась)))) так что дербанил не зря)))
подогревается модулем Пельтье - это мы уже выяснили давно, да и что за датчики тоже (теоретически и по рассказам таймкопа) скажу так на датчиках которые мы используем - это не надо, ну разве что в 40 градусный мороз…
я тут для gps фильтрик посчитал маленький на 5 листов А4 теперь репу чешу как его в мегакод превратить )))))
репу чешу как его в мегакод превратить
Чё,помочь ?
скажу так на датчиках которые мы используем - это не надо, ну разве что в 40 градусный мороз
в 35 градусный точно не надо, проверено )
Чё,помочь ?
не, в проц упёрся ))) на каждой интерации извращение одно делать надо так что проц только с fpu…
в 35 градусный точно не надо, проверено
А мне кажется что этот подогрев не спроста… Встроенная в сенсоры температурная компенсация всегда у меня вызывала много вопросов, а тут ребята похоже сделали “по взрослому” как в настоящих ЛА, наверно этот подогрев контролируется программно, отсюда и выдающиеся характеристики по стабильности получили 😃.
а тут ребята похоже сделали “по взрослому” как в настоящих ЛА, наверно этот подогрев контролируется программно, отсюда и выдающиеся характеристики по стабильности получили
аналоговые датчики без компенсации и дабы не плодить танцы с холодильником как в AutoQad - подогрели )))
А мне кажется что этот подогрев не спроста…
При более-менее постоянной низкой температуре проблем не замечал, а вот если из теплой машины вытащить на мороз и сразу лететь, то немного сносит поначалу, но не сильно критично.