Size: a a a

2017 October 09

PK

Pavel Kosenkov in ELECTRONIX
источник

PK

Pavel Kosenkov in ELECTRONIX
Просто цитаты.
"стирайте данные и начните с собственного тела. это приказ."
"Вам нужно уничтожить все полученные от меня данные и явиться в местный военкомат для получения дальнейших инструкций."
источник

PK

Pavel Kosenkov in ELECTRONIX
это эпик
источник

С

Сергий in ELECTRONIX
@Leopoldius , видал, чо люди пишут? Подними себе настроение тож))
источник

С

Сергий in ELECTRONIX
Я просто угорел, сорян за бестактность)) Редкий кадр, из русских дендрариев))
источник

LZ

Leonid Zaliubovskii in ELECTRONIX
@IFR1T видел, видел. Уже орнул
источник

PK

P Kav in ELECTRONIX
Всех снова приветствую.

Продолжаю калибровать акселерометр по температуре. Сделал калибровку смещения нуля (Offset) и чувствительности (Gain), но сделал это на float и уперся в производительность (STM32F1@64MHz). Нужно как-то переделать расчеты на целые числа. Непонятно как сделать это для Gain. Алгоритм:

Есть 2 точки температуры.
Интерполировать/Экстраполировать Gain по двум точкам для текущей температуры.
Умножить значение, полученное от акселерометра на интерполированное значение.

float int_ext_float(float x1, float y1, float x2, float y2, float x)
{
   if(x1!=0 && y1!=0 && x2!=0 && y2!= 0)
   {
     return y2 - (x2-x) / ((x2 - x1) / (y2 - y1));
   } else {return 0;}
}
Вот эта функция интерполяции, целиком состоящая из float очень медленная. Но не ясно как её переделать на целые числа, чтобы избежать затыка с производительностью.
источник

PK

P Kav in ELECTRONIX
Точнее, не так. Как сделать корректировку Gain в целых числах. Например, при 1G акселерометр должен показывать 16384, а он показывает, к примеру, 17500. Значит, при 1G надо вычесть из показателей 1116, при 0,5G вычесть 558, и т.д.
источник
2017 October 10

GK

Grigorii Kuzmin in ELECTRONIX
Pavel Kosenkov
Просто цитаты.
"стирайте данные и начните с собственного тела. это приказ."
"Вам нужно уничтожить все полученные от меня данные и явиться в местный военкомат для получения дальнейших инструкций."
https://vk.com/q10.space группа этого типа
источник

PK

Pavel Kosenkov in ELECTRONIX
Да, уже пробежался и на планету заглянул, там ссылки вроде в теме были
источник

DS

Dolphin Soft in ELECTRONIX
P Kav
Всех снова приветствую.

Продолжаю калибровать акселерометр по температуре. Сделал калибровку смещения нуля (Offset) и чувствительности (Gain), но сделал это на float и уперся в производительность (STM32F1@64MHz). Нужно как-то переделать расчеты на целые числа. Непонятно как сделать это для Gain. Алгоритм:

Есть 2 точки температуры.
Интерполировать/Экстраполировать Gain по двум точкам для текущей температуры.
Умножить значение, полученное от акселерометра на интерполированное значение.

float int_ext_float(float x1, float y1, float x2, float y2, float x)
{
   if(x1!=0 && y1!=0 && x2!=0 && y2!= 0)
   {
     return y2 - (x2-x) / ((x2 - x1) / (y2 - y1));
   } else {return 0;}
}
Вот эта функция интерполяции, целиком состоящая из float очень медленная. Но не ясно как её переделать на целые числа, чтобы избежать затыка с производительностью.
Второе деление замени умножением, и убери скобки, будет проще
источник

DS

Dolphin Soft in ELECTRONIX
А еще условие неправильное, нужно не переменные сравнивать с нулем, а делители
источник

DS

Dolphin Soft in ELECTRONIX
типа при (x2==x1) || (y2==y1) - исключение
источник

PK

P Kav in ELECTRONIX
Dolphin Soft
типа при (x2==x1) || (y2==y1) - исключение
Так-то это защита от запуска без сохраненных калибровок. Но это же не влияет на производительность.

То есть посчитать Gain в целых числах нереально?
источник

DS

Dolphin Soft in ELECTRONIX
P Kav
Так-то это защита от запуска без сохраненных калибровок. Но это же не влияет на производительность.

То есть посчитать Gain в целых числах нереально?
1. Ты деление на ноль не учёл
2. Почему нереально, если ты заранее преобразуешь?
3. При замене 1го деления умножением, результат будет точнее
источник

DS

Dolphin Soft in ELECTRONIX
X/Y/Z = X*Z/Y
источник

PK

P Kav in ELECTRONIX
Не совсем понял формулу. Допустим, акселерометр показывает при 1G 17500 вместо 16384, разница 1116, А при 0,5G он будет показывать 8750 вместо 8192, разница уже 558, Как расчитывать эти 1116 и 558, и при остальных данных?..
источник

DS

Dolphin Soft in ELECTRONIX
посмотри на свою формулу, и сравни с моей
источник

DS

Dolphin Soft in ELECTRONIX
а потом пересчитай в моей
источник

DS

Dolphin Soft in ELECTRONIX
если погрешность сохраняется, апроксимируй
источник