Мультизадачность на ядре ESP32-D0WD-V3

VAF

✩✩✩✩✩✩✩
15 Июл 2023
39
0
Москва
Я об этом и говорю. Не осознано я нажал обновить и все испортилось. Пытался вернуться, точно вернуться не получилось. Board Manager не позволил. Пытался вручную, восстановил главное для меня now_hoe and NTPC. Причем все это заработало все значительно лучше чем прежде. Далее столкнулся с необходимостью использовать таймеры и обнаружил, что не мог. Ищу выход.
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
537
Saint-Petersburg, Russia
Не лень писать такие длинные тексты
не лень, кому-нибудь будет полезно значит уже не зря

Дали бы конкретный ответ-решение
для начала поставьте задачу грамотно, а не вот это вот "Я хочу явно использовать два ядра". Решения под ваше прокрустово ложе таска с миллисами у меня нет, увольте.
Если хотите целиком полностью и явно контролировать ваши два ядра - вам придется переписать планировщик в RTOS под свои хотелки и заиметь 3х ядерный чип. Планировщик должен работать следующим образом - ядро ноль используется в обычном режиме в том числе и работы самой RTOS, ядра 1 и 2 не используются ни для каких процессов, если они не созданы специальным образом. Для ядер 1 и 2 тики ртос и вочдог не используется - ядро отдается процессу монопольно, сборщик мусора и обработчик прерываний тоже напишете свой. Вот тогда и получите свою хотелку "Я хочу явно использовать два ядра".

Как вернуться в прошлое я пока не знаю
вероятно вам просто надо выбрать версию ардуино ядра для есп32 2.х какое оно там было последнее. Не важно какая версия самой ардуино ИДЕ. С текущим третьим у вас и проблемы.

Что вы там имели ввиду про таймеры я вообще не понял, но имеет смысл заглянуть в документацию под той версии IDF под которой у вас "перестало" работать.
 

VAF

✩✩✩✩✩✩✩
15 Июл 2023
39
0
Москва
Даже не понимаю, как отвечать. Если подытожить всю предыдущую работу и обсуждения, то пример без RTOS существует и работает. Проблема выбора delay or if(millis показала, что второй вариант (if(millis ) приводит к частым рестартам, устранить которые предположительно можно используя для каждого ядра свой таймер. Проверить не удается из-за дефекта моего ide, вызванного попытками восстановления предыдущих библиотек.
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
537
Saint-Petersburg, Russia
то пример без RTOS существует и работает
так в чём дело тогда? Пользуйтесь "без ртос"

Проблема выбора delay or if(millis
так в чём дело? Пользуйтесь делай хотя бы, или лучше vTaskDelay()

про использовать свой таймер для каждого ядра я даже комменти ровать ничего не буду.
С вашим сломаным иде вам кроме вас никто помочь не сможет. Разверните виртуалку с чистой системой и поставьте свежую иде в конце концов если то что есть почнить не можете.
 

VAF

✩✩✩✩✩✩✩
15 Июл 2023
39
0
Москва
Решение нашлось, когда мне объяснили, что произошло существенное изменение ESP Espressif библиотеки, в которой естественно мне показали, что есть примеры близкие по смыслу к тому, что мне надо. Примеры компилируются в моей рваной ИДЕ и теперь надо разобраться с деталями. Как говорится, всем спасибо за терпение.