Anton
я не мерял. но вполне можно было бы тогда сделать какойнить iprintf чтобы только с интежерами
Yuriy
Yuriy
при этом печатать он будет просто не R - а меньшее подмножество, вот экономия вполне существенная
Anton
ладно, фиг с ним, с принтфом, но вот своя реализация квадратного корня...
Yuriy
atof - тоже самое
Yuriy
char strbuf[24];
strlcpy(strbuf, str, sizeof(strbuf));
char *pt = strbuf;
while ((*pt != '\0') && isblank(*pt)) {
pt++;
} // Trim leading spaces
signed char sign = 1;
if (*pt == '-') {
sign = -1;
}
if (*pt == '-' || *pt == '+') {
pt++;
} // Skip any sign
float left = 0;
if (*pt != '.') {
left = atoi(pt); // Get left part
while (isdigit(*pt)) {
pt++;
} // Skip number
}
float right = 0;
if (*pt == '.') {
pt++;
uint32_t max_decimals = 0;
while ((max_decimals < 8) && isdigit(pt[max_decimals])) {
max_decimals++;
}
pt[max_decimals] = '\0'; // Limit decimals to float max of 8
right = atoi(pt); // Decimal part
while (isdigit(*pt)) {
pt++;
right /= 10.0f;
}
}
float result = left + right;
if (sign < 0) {
return -result; // Add negative sign
}
return result;
сравни с оригинальным - он полностью покрывает, а этот нет - но не нужны более 8 знаков допустим , можно сэкономить еще
Anton
while (isdigit(*pt)) {
pt++;
right /= 10.0f;
}
Anton
я не уверен прямо сказать в этом коде...
Anton
pt[max_decimals] = '\0'; — модифицируем оригинал?
Anton
а, сорри, статический буф
Anton
как он шарится между ядрами?
Anton
я понимаю, что "будем считать, что два ядра одновременно в этот код не попадут", и они, как правило, и не будут попадать...
Anton
лет этак 17 назад я был больно такими проблемами укушен. всё, что могло вылезти от конкуренции — всё вылезло. даже то, что я думал невозможно.
Anton
в те времена в с++ строки были с рефкаунтом и даже простая операция взятия символа могла приводить к де-шарингу, что в мультитредовой среде было жестью, хотя сами данные не менялись и были константными
Yuriy
есть с данными проблема - с кодом "попасть одновременно" нет
Anton
ладно. я тут просто мимо проходил
Yuriy
ладно. я тут просто мимо проходил
ну 17 лет точно даром не проходят,, просто "проблема" с доступом и шарой данных между потоками , а не кода - он разный может быть :) ядра могут разный код - то есть не связано с "одна точка входа" или нет у них была и они выполняют "один код" - не важно
MrSyabro
https://telegra.ph/Smart-datchik-dvizheniya-02-14
Anton
такой вопрос. SPI через DMA или без — как лучше?
Yuriy
Anton
оно "разгружает проц", но я не знаю насколько оно быстрее
Anton
и быстрее ли
Yuriy
https://jeelabs.org/article/1713c/
Yuriy
от частоты зависит надо оно или нет - если она сотни герц то и ладно , а если нет , но и да
Anton
ну, скажем, частота SPI 10MHz
Yuriy
ну, скажем, частота SPI 10MHz
размер какой у полезной нагрузки? у DMA больше времени на транзакцию (ее старт) 2мк :) зато проц далее свободен если она большая 64+ далее пройдет без него , а если там 8 байт - то хз - что перевесит надо считать
Anton
да хтобы его знал, это ж что рисоваться будет
Anton
если линия, то там на каждую точку 6 транзакций, из них три команды и три данных. две команды адреса и одна данных
Yuriy
условные величины - порядки такие типа
Anton
это по килобайту
Anton
мне интреснее по маленьким порциям
Anton
я вообще не хочу фреймбуффер пока что делать
Anton
это не связано с фреймбуффером
Anton
ппл, какой максимальный размер очереди для SPI?
Yuriy
Anton
в стандартном примере стоит = 7, но нигде не нахожу ограничения на него
Anton
Transaction queue size. This sets how many transactions can be 'in the air' (queued using spi_device_queue_trans but not yet finished using spi_device_get_trans_result) at the same time
Andy
Anton
ok
SetPf
https://github.com/espressif/esp-idf/blob/v4.0.2/examples/peripherals/uart/uart_events/main/uart_events_example_main.c
SetPf
Поясните по примеру.
Суть
- есть буффер сайз, (константа)
- создается уарт с буфферами (константа*2)
- в обработке ивентов используется промежуточный буффер = (константа)
Почему и нафига буффера 2х? Просто китайцу захотелось?
Владимир
Добрый день. Подскажите, есть вот такой модуль
Владимир
Владимир
Ткните пальцем на статью или так подскажите, для коректной работы какие пины куда нужно подключить?
Владимир
я имею ввиду подтяжки и тд
Владимир
про GPIO0 для прошивки я знаю
Владимир
просто про ESP8266 я в курсе какие куда, а тут видимо по другому чуток, заранее бобльшое спасибо
Andy
Andy
Владимир
вот тут виже только подключение EN и резистор на GPIO0, видимо к +3,3 подтянут
Andy
Владимир
Еще чтонибуть нужно?
Владимир
:))) Значит все правильно понял. Больше никакие пины не нужно никуда подтягивать?
Владимир
Владимир
4 мегабайта вроде как
Владимир
UART не нужен тк будет заливаться прошивка ESPHome, а далее все монипуляции с прошивкой по воздуху
Andy
Владимир
Значит все гуд. Задача проста, модуль на коленках прошиваеться через UART , а потом впаиваеться в плату
Владимир
вот и вся схема :)))
Юрий
Я бы все равно на плате пятаки предусмотрел🤔
Viter
А что в esp32 с таймерами, как с ними работать?
Viter
А я сам уже кроме библиотеки Ticker нечего не нашел
Slava
Viter
Та цикл надо и прерывание и разовые
Viter
Че то Хронос не нахожу ничего конкретного по этой библиотеке
Slava
Slava
Viter
Та описания по ней не нахожу