Size: a a a

2020 April 27

DA

Dmitry Aloyan in Embedded Group
Сиие Сууие
без понятия, но у вас и в формуле оно есть же, вон те 1024
Не совсем Вас понял. Вы про посчитать "дельту" (эт я для себя так назвал)
Или про посчитать значение для проверки формулы?
источник

СС

Сиие Сууие in Embedded Group
Dmitry Aloyan
Не совсем Вас понял. Вы про посчитать "дельту" (эт я для себя так назвал)
Или про посчитать значение для проверки формулы?
я про то что кроме дельты у вас в формуле есть ещё число
источник

DA

Dmitry Aloyan in Embedded Group
Сиие Сууие
я про то что кроме дельты у вас в формуле есть ещё число
Да. К нему я уже добавил 0, 1024.0, что бы сделать дробь.
источник

СС

Сиие Сууие in Embedded Group
я не силён в оптимизациях компилятора, но истории про то как программа начинает жужать в 2 раза быстрее, после того как все константы перемножены на калькуляторе ходят повсюду, да и у самого такое было
источник

СС

Сиие Сууие in Embedded Group
Dmitry Aloyan
#define R1 470000 // resistance of R1 (470K)
#define R2 22000 // resistance of R2 (22K)
#define R_DELTA R2/(R1+R2)
float val = (adcVal / 1024) / R_DELTA;

Используется внутреннее опорное на 1В
#define R_DELTA R2/(R1+R2) * 1024.0
float val = adcVal / R_DELTA;
источник

СС

Сиие Сууие in Embedded Group
я про это говорил(это в том случае если дефайны пересчитываются перед компиляцией
источник

DA

Dmitry Aloyan in Embedded Group
Сиие Сууие
я не силён в оптимизациях компилятора, но истории про то как программа начинает жужать в 2 раза быстрее, после того как все константы перемножены на калькуляторе ходят повсюду, да и у самого такое было
Спасибо большое!
источник

DA

Dmitry Aloyan in Embedded Group
По всей видимости, пересчитываются компилятором. Но это число теперь типа duble и опять не влазит в память 🙂 Наверное я могу его привести во флоат, может поместится
источник

T

Thorn in Embedded Group
Сиие Сууие
#define R_DELTA R2/(R1+R2) * 1024.0
float val = adcVal / R_DELTA;
ну в скобки заверните-то, а то что после подстановки получится?
источник

СС

Сиие Сууие in Embedded Group
Dmitry Aloyan
Как конвертнуть 2 uint8_t в int16?
uint16_t a = (8<<hByte) | lByte - постоянно возвращает только lByte
а тут, если байты у вас в правильном порядке стоят и выровнены - просто приводите масив к нужному типу (вы ж один чёрт в масив кладёте) и берите значение
источник

СС

Сиие Сууие in Embedded Group
Dmitry Aloyan
По всей видимости, пересчитываются компилятором. Но это число теперь типа duble и опять не влазит в память 🙂 Наверное я могу его привести во флоат, может поместится
а у вас в системе флоат меньше дабла?
источник

СС

Сиие Сууие in Embedded Group
Thorn
ну в скобки заверните-то, а то что после подстановки получится?
я образно написал что имел в виду
источник

DA

Dmitry Aloyan in Embedded Group
Сиие Сууие
а тут, если байты у вас в правильном порядке стоят и выровнены - просто приводите масив к нужному типу (вы ж один чёрт в масив кладёте) и берите значение
Не. Я тут по сути 2 байта читаю в переменные. МОжно и в массив конечно. Это типа
uint16_t a = (uint16_t)[0x02,0x01] ?
источник

СС

Сиие Сууие in Embedded Group
Dmitry Aloyan
Не. Я тут по сути 2 байта читаю в переменные. МОжно и в массив конечно. Это типа
uint16_t a = (uint16_t)[0x02,0x01] ?
если так то наверное проще сделать как писали выше. Я просто на днях подобное делал, только там посылки побольше были и ендиан система совпала и просто интерпретировал массив как 16 разрядное
источник

DA

Dmitry Aloyan in Embedded Group
Сиие Сууие
а у вас в системе флоат меньше дабла?
Вообще, должны быть оба по 4 байта. Но в некоторых случаях он может быть 8 байт. Вот судя по тому, что оно теперь не влазит, это таки 8 байт. Но я сейчас попробую привести во флоят и убедиться
источник

СС

Сиие Сууие in Embedded Group
Dmitry Aloyan
Вообще, должны быть оба по 4 байта. Но в некоторых случаях он может быть 8 байт. Вот судя по тому, что оно теперь не влазит, это таки 8 байт. Но я сейчас попробую привести во флоят и убедиться
int a= sizeof(float)
источник

DA

Dmitry Aloyan in Embedded Group
Сиие Сууие
int a= sizeof(float)
Да это зашивать надо 🙂 Даже если они равны, прошивка не влазит. Значит нужно что-то менять
источник

DA

Dmitry Aloyan in Embedded Group
Как вот эта строка может добавлять 300 байт к флешу??
vin.n = adcVal / 45.788617886178862;

делаю для теста
vin.n = adcVal / 1;

и прошивка начинает весить на больше чем 300байт меньше
источник

DB

Dima B in Embedded Group
деление с плавающей точкой - это непросто
источник

DB

Dima B in Embedded Group
особенно если аппаратной поддержки нет :)
источник