SetPf
ПС если вы не умеете пока в таски на одном ядре - не лезьте во второе ядро, в межядерном взаимодействии гораздо больше гемороя, чем в одноядерной многопоточке
K.
Если нужны очень хорошие тайминги - можно взять прерывания по таймеру
Пытался делать через прерывания, считывание с датчика вообще не происходит.
Evgeniy
По умолчанию оба же ядра работают и таски переключаются между ними
SetPf
По умолчанию оба же ядра работают и таски переключаются между ними
вроде с определенной версии IDF там фиксировано все дефолтное кидает на 0, а пользовательское на 1 (но это не точно)
SetPf
(я руками статик таски всегда вешаю ток на 1е)
alexcher
вроде с определенной версии IDF там фиксировано все дефолтное кидает на 0, а пользовательское на 1 (но это не точно)
Не, по умолчанию реально ставится tsk no affinity, можно посмотреть на код xTaskCreate, но в то же время есть xTaskCreatePinnedToCore, и там можно указывать ручками ядра
Evgeniy
Пытался делать через прерывания, считывание с датчика вообще не происходит.
покажите текущий код, тут подскажут, один таск на опрос датчика, далее кидаем в очередь показания, в другом таске считываем очередь, делаем FFT и обновляем экран
K.
ПС если вы не умеете пока в таски на одном ядре - не лезьте во второе ядро, в межядерном взаимодействии гораздо больше гемороя, чем в одноядерной многопоточке
Идея была такая: один таск на нулевом ядре опрашивает датчик и формирует циклический буфер, а второй таск на первом ядре из этого буфера берёт данные, обрабатывает FFT и выводит на экран.
SetPf
Идея была такая: один таск на нулевом ядре опрашивает датчик и формирует циклический буфер, а второй таск на первом ядре из этого буфера берёт данные, обрабатывает FFT и выводит на экран.
Гуй лучше делать событийным и отдельным. (Хотя бы для того, что бы у вас бизнес логика была отдельна от отображения) Вот как раз читать и обрабатывать можно в одном, а гуй просто оповещать, когда новые значения появились.
K.
покажите текущий код, тут подскажут, один таск на опрос датчика, далее кидаем в очередь показания, в другом таске считываем очередь, делаем FFT и обновляем экран
Да, так и задумывалось всё. Более того, с использованием MPU6050 всё отлично работает, а BMP280 на нулевом ядре выдаёт (редко) "левые" значения.
Evgeniy
Да, так и задумывалось всё. Более того, с использованием MPU6050 всё отлично работает, а BMP280 на нулевом ядре выдаёт (редко) "левые" значения.
Ошибки в драйвере надо искать тогда или например, на одном интерфейсе оба устройства висят и конфликтуют там
K.
Тогда как аппаратно может быть связан датчик и экран?
Так они и не связаны. Экран на SPI висит, а датчики по I2C работают.
Evgeniy
значит баги в драйвере...
Evgeniy
и нулевое ядро не понятно зачем использовать, там вся сетевая движуха
Evgeniy
конечно или вообще no affinity
Evgeniy
банально драйвер глючит, вот его нужно пристально ковырять, обвешать выводом логов во всех возможных местах
Evgeniy
по умолчанию - таск может на любом ядре выполняться, стандартные настройки
alexcher
Что такое affinity?
Маска, показывающая, на каких ядрах таске можно исполняться
Evgeniy
вообщем ковырять драйвер надо, потом всё остальное
K.
Ещё вопрос: xTaskCreatePinnedToCore( Task1code, // Функция задачи "Task1", // Название задачи 10000, // Размер стека задачи NULL, // Параметр задачи 1, // Приоритет задачи &Task1, // Идентификатор задачи, // чтобы ее можно было отслеживать 1); // Ядро для выполнения задачи (1) На что влияет значение Приоритета задачи и каково его максимальное/минимальное значение?
Evgeniy
если задача с более высоким приоритетом не была приостановлена, то на следующем тике планировщика будет выбрана эта задача, как более приоритетная
Evgeniy
для задачки опроса датчика можно смело увеличивать приоритет, там же спячка раз в 10 мс
Evgeniy
куда так много стека не понятно,
K.
куда так много стека не понятно,
Брал из примера без понимания размеров значения.
Evgeniy
в примерах от Espressif не более 4096 байт
alexcher
в примерах от Espressif не более 4096 байт
Кстати, интересный факт: у меня генерация rsa ключа через mbedtls требовала около 64кб стека
Evgeniy
вот оно жрет)
K.
в примерах от Espressif не более 4096 байт
У меня в том таске крутится массив на 2048 значений типа float. Или стек от этого не зависит?
alexcher
Кстати, интересный факт: у меня генерация rsa ключа через mbedtls требовала около 64кб стека
На 48кб, по крайней мере, оно падало с непонятными ошибками (так как есп-идф на стандартном уровне обнаружения битой памяти не обнаруживает переполнение стека сразу, или не плюет такой ошибкой)
Evgeniy
Можно и за пределами таска держать, статически
K.
Он в куче?
Не совсем понял вопрос.
alexcher
Не совсем понял вопрос.
Этот массив выделяется на стеке (внутри функции таски float arr[2048] или alloca(2048 * 4)), или просто берется откуда-то внешний указатель, и функция колдует над ним?
K.
Этот массив выделяется на стеке (внутри функции таски float arr[2048] или alloca(2048 * 4)), или просто берется откуда-то внешний указатель, и функция колдует над ним?
Массив выделяется в самом начале программы, а в таске идёт увеличение индекса и присваивание значения элементу массива.
K.
15 минут назад перевёл таск с нулевого ядра на первое и артефакты пропали. 15 минут данные идут идеально, ни одного всплеска. Значит где-то конфликт библиотеки для BMP280 с нулевым ядром. Библиотека от Adafruit.
K.
Всем огромное СПАСИБО!!!
Evgeniy
вот так и я на ночь оставил устройство на esp32 на тест, а глюк всплыл утром через 9 часов
K.
вот так и я на ночь оставил устройство на esp32 на тест, а глюк всплыл утром через 9 часов
Да, много времени на отлавливание глюков уходит. Я так поставил цветной дисплей на базе ST7789, а потом понадобилось добавить монохромный на ST7565. А у цветного дисплея линия CS не выведена. Пришлось вешать один дисплей на один SPI, а другой на второй SPI. Благо, что у ESP их в достатке.
K.
Кто-нибудь выяснял, какой приоритет у loop ? Чтоб в таске выставить больший приоритет.
Evgeniy
Кто-нибудь выяснял, какой приоритет у loop ? Чтоб в таске выставить больший приоритет.
можно вызвать внутри loop uxTaskPriorityGet(NULL); и узнать приоритет
K.
можно вызвать внутри loop uxTaskPriorityGet(NULL); и узнать приоритет
🤝спасибо. Сделаю - отпишусь о результате.
K.
У loop приоритет 1.
K.
?
<!DOCTYPE html> <svg xmlns="http://www.w3.org/2000/svg" style="display: none"> <symbol id="key" viewBox="0 0 200 200"> <circle class="fil0" cx="100" cy="100" r="90"/> <rect class="fil1" width="200" height="200"/> <path class="fil2" d="M142 47c4,3 8,7 11,11l-42 42 42 42c-3,4 -7,8 -11,11l-42 -42 -42 42c-4,-3 -8,-7 -11,-11l42 -42 -42 -42c3,-4 7,-8 11,-11l42 42 42 -42z"/> </symbol> <symbol id="wifi" viewBox="0 0 200 200"> <path class="fil0" d="M27 153c-14,-19 -20,-44 -16,-67 4,-24 17,-45 36,-59 19,-14 44,-20 67,-16 24,4 45,17 59,36 14,19 20,44 16,67 -4,24 -17,45 -36,59 -19,14 -44,20 -67,16 -24,-4 -45,-17 -59,-36z"/> <line class="fil1" x1="151" y1="151" x2="151" y2= "151" /> <polyline class="fil1" points="151,49 151,49 151,49 151,49 "/> <path class="fil2" d="M65 135l0 -70 0 0 70 0 0 0 0 70 0 0 -70 0zm-16 16l102 0 0 -102 -102 0 0 102z"/> </symbol> <symbol id="start" viewBox="0 0 200 200"> <path class="fil0" d="M43 170c19,15 43,22 66,20 24,-3 46,-15 61,-33l0 0c15,-19 22,-43 20,-66 -3,-24 -15,-46 -33,-61l0 0c-19,-15 -43,-22 -66,-20 -24,3 -46,15 -61,33l0 0c-15,19 -22,43 -20,66 3,24 15,46 33,61l0 0zm20 -25c-12,-9 -20,-23 -21,-39 -2,-15 3,-31 13,-43l0 0c9,-12 23,-20 39,-21 15,-2 31,3 43,13l0 0c12,9 20,23 21,39 2,15 -3,31 -13,43l0 0c-9,12 -23,20 -39,21 -15,2 -31,-3 -43,-13z"/> <path id="1" class="fil1 str0" d="M43 170c19,15 43,22 66,20 24,-3 46,-15 61,-33l0 0c15,-19 22,-43 20,-66 -3,-24 -15,-46 -33,-61l0 0c-19,-15 -43,-22 -66,-20 -24,3 -46,15 -61,33l0 0c-15,19 -22,43 -20,66 3,24 15,46 33,61m20 -25c-12,-9 -20,-23 -21,-39 -2,-15 3,-31 13,-43l0 0c9,-12 23,-20 39,-21 15,-2 31,3 43,13l0 0c12,9 20,23 21,39 2,15 -3,31 -13,43l0 0c-9,12 -23,20 -39,21 -15,2 -31,-3 -43,-13z"/> <path class="fil0 str0" d="M73 133c9,7 20,11 31,10 12,-2 22,-7 29,-16l0 0c7,-9 11,-20 10,-31 -2,-12 -7,-22 -16,-29l0 0c-9,-7 -20,-11 -31,-10 -12,2 -22,7 -29,16l0 0c-7,9 -11,20 -10,31 2,12 7,22 16,29z"/> </symbol> <symbol id="break" viewBox="0 0 200 200"> <rect class="fil1" width="200" height="200"/> <circle class="fil0" cx="100" cy="100" r="90"/> <polygon class="fil2" points="38,139 100,31 100,31 162,139 162,139 "/> <polygon class="fil0" points="65,123 135,123 135,123 100,62 100,62 "/> </symbol> <symbol id="krug" viewBox="0 0 200 200"> <path class="fil0" d="M43 170c19 15 43 22 66 20 24-3 46-15 61-33 15-19 22-43 20-66-3-24-15-46-33-61-19-15-43-22-66-20-24 3-46 15-61 33-15 19-22 43-20 66 3 24 15 46 33 61zm20-25c-12-9-20-23-21-39-2-15 3-31 13-43 9-12 23-20 39-21 15-2 31 3 43 13 12 9 20 23 21 39 2 15-3 31-13 43-9 12-23 20-39 21-15 2-31-3-43-13z"/><path class="fil1 str0" d="M43 170c19 15 43 22 66 20 24-3 46-15 61-33 15-19 22-43 20-66-3-24-15-46-33-61-19-15-43-22-66-20-24 3-46 15-61 33-15 19-22 43-20 66 3 24 15 46 33 61m20-25c-12-9-20-23-21-39-2-15 3-31 13-43 9-12 23-20 39-21 15-2 31 3 43 13 12 9 20 23 21 39 2 15-3 31-13 43-9 12-23 20-39 21-15 2-31-3-43-13z"/><path class="fil0 str0" d="M73 133c9 7 20 11 31 10 12-2 22-7 29-16s11-20 10-31c-2-12-7-22-16-29s-20-11-31-10c-12 2-22 7-29 16s-11 20-10 31c2 12 7 22 16 29z"/> </symbol> </svg> <html lang="ru"> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <meta name="viewport" content="width=device-width, user-scalable=no"> <link href="style.css" rel="stylesheet"> <title>Controll Panel</title> </head> <body> <div class="main"> <div class="container"> <p>Панель управления</p> <object type="image/svg+xml" data="sprites.svg#wifi" width="200" height="200"></object> </div> <div class="container"> <span id="mc_data">... ...</span> </div> <div class="container"> <ul class="CPanel"> <li class= "CItem"> <div value="Switch Relay (On/Off)" id="relay_button" class= "button_div"> <svg class="svg"> <use xlink:href="#wifi" /> </svg> </div> </li>
Кодировка файла utf-8? <meta charset="UTF-8"> Если в шиндовой кодировке, то соотвественно другой параметр. Не забываем, что мета должна стоять внутри <head> где то тут </head>
?
Это типа иза того что я навалил сверху svg иконки и снизу еще скрипты накидал?🤔
Срипты срипты.... Я свг дописывал у себя в дне страницы, ибо это свистоперделки, а надо сначала функционал описать.
?
Два дня над этим голову ломал
Перешел на линуху, везде юзаю utf-8 . Столько виндового говна само собой улетучилось. Код стало дегко писать)).
?
Люди, а все уже давно наверное перешли на ардуино иде 2.0
Я динозавр. На каждом компе разные. Начиная с 1,5 ибо после обновления некоторые проекты крашатся, и меня это не устраивает, некогда переписывать. Текущая 1,8,10 которую юзаю))
?
Хрень какая то😐
Листай к первой ошибке.
?
Кококо. Если с мобилы сфоткал, значит есть причины. Если считаешь это неуважением, игнорь. Я фото с телефона делаю к примеру по тому, что информационная безопасность. Есть устройства дырявые, а есть те на которые не надо важные штуки ставить.
?
Все там видно прекрасно.
?
"Ножницы" же
gnome-screensaver из коробки. Только ноут нев сети чтобы фотки слать
?
Там тоже так же ругалось варнингами
Повторюсь, урути в самое начало ошибок а не конец)
?
Скорее всего эту скачал не там где качал ту)
Когда перехожу на другой комп, копирую и дуину и либы вместе с проектом. Работает шикарно! Но у меня линух.
?
И прям в браузере редактируешь файлы сервера😍
Главное чтобы без интернета так умело.
?
Да на здоровье.
Zh
Главное чтобы без интернета так умело.
Умеет! Еще есть типа подсветка кода и даже значками показывает строки с явными ошибками в коде)
?
Умеет! Еще есть типа подсветка кода и даже значками показывает строки с явными ошибками в коде)
Круто че. Правда я могу и в блокноте писать код. Только бы компилятор ругался понятнее где я объебался)
?
Умеет! Еще есть типа подсветка кода и даже значками показывает строки с явными ошибками в коде)
Кстати разрбрался в проблеме? Я то там написанного чет совсем много было... Я психанул и перемотал
Zh
Круто че. Правда я могу и в блокноте писать код. Только бы компилятор ругался понятнее где я объебался)
Я был в шоке, в такую маленькую платку засунули полноценный редактор кода) молодцы вообще) ну он по сути не особо та нужен, просто как фишка
Zh
У меня была проблема с фтп сервером, никак не хотел работать а теперь он вообще не нужен. Прямо с браузера теперь загружаю любые файлы👍
?
У меня была проблема с фтп сервером, никак не хотел работать а теперь он вообще не нужен. Прямо с браузера теперь загружаю любые файлы👍
Ну я обошел иначе. Создал страницу загрузки выгрузки данных и оттестированное на локалке потом щаливаю в чип. В редакторе кода ничего особенного, он внсь на js. Работает. От чипа нужна только загрузка и выгрузка
Zh
Сегодня уже засыпаю) завтра буду отлаживать