Лучший пример Multasking ESP-32

Mrburnette
Пн 12 февраля 2018 г., 2:05
Я пропустил на форуме в эти выходные? :ржу не могу: Я думал, что нет.

Я потратил некоторое время, возившись с ESP-32 под Arduino. Я получил < $ 5 Wemos Lite Board В Aliexpress, и я помню, когда Maple Minis были этой ценой всего несколько лет назад.

Таким образом, моя игра (ограниченная по выходным) была посвящена чтению об эспрессфрагменте Freertos с их Arduino Core. Я смотрел пару видео на YouTube. Я читаю слишком много статей. Я попробовал несколько примеров. Моя голова начала ранить, потому что это такая простая концепция, и существующие примеры Arduino были действительно плохими. Хуже всего, некоторые упускали тот факт, что код Arduino создает задачу по умолчанию; То есть в стандартном режиме Arduino работает на одном ядре, а нативная сторона RF работает на одном ядре.

Другой способ, можно ездить на велосипеде из «выделенного» ядра RF, так как у Arduino Side уже есть выделенное ядро.

Я создал проект Arduino Multi-Tab, чтобы легко продемонстрировать, насколько простой может быть общий процесс. Код доступен как ZIP со страницы моей проекта:
https: // www.хакерс.io/rayburne/esp32- ... Res-8dd948

Наслаждаться.

Луча
The three user's task: 0, 1, 2: __task__ __core__ Task 1 complete running on Core 0 Time = 2 mS Task 2 complete running on Core 1 Time = 1 mS Task 0 complete running on Core 1 Time = 1 mS Task 1 complete running on Core 0 Time = 1 mS Task 2 complete running on Core 1 Time = 2 mS Task 0 complete running on Core 1 Time = 2 mS Task 1 complete running on Core 0 Time = 2 mS Task 2 complete running on Core 1 Time = 2 mS Task 0 complete running on Core 1 Time = 2 mS Task 1 complete running on Core 0 Time = 2 mS Task 2 complete running on Core 1 Time = 2 mS Task 0 complete running on Core 1 Time = 2 mS Task 1 complete running on Core 0 Time = 2 mS Task 2 complete running on Core 1 Time = 1 mS Task 0 complete running on Core 1 Time = 1 mS Task 1 complete running on Core 0 Time = 1 mS Task 2 complete running on Core 1 Time = 1 mS Task 0 complete running on Core 1 Time = 2 mS

Rogerclark
Пн 12 февраля 2018 г., 4:42
Звучит интересно...

Мне нравится идея возможности использовать оба ядра.

Виндиам
Пн 12 февраля 2018 г., 6:19
Что ж, удивительно, что мы можем купить такую ​​мощную готовую доску SOC/MCU Arduino с этой сумасшедшей низкой ценой.

Я думаю, что это определенно превзошло бы STM32F4 даже в вычислительных интенсивных приложениях.

Сжимать
Пн 12 февраля 2018 г., 11:52
Andreas Spiess выпустил отличное видео об использовании 2 ядра ESP32. Это здесь: https: // youtu.be/k_d_qu0cgu8
ESP32 - действительно очень мощное устройство по цене. Даже без возможностей Wi -Fi/Bluetooth является очень экономически эффективным чипом.

Mrburnette
Пн 12 февраля 2018 г. 12:48
[Сжимать - Пн 12 февраля 2018 г., 11:52]] - Andreas Spiess выпустил отличное видео об использовании 2 ядра ESP32. Это здесь: https: // youtu.be/k_d_qu0cgu8
ESP32 - действительно очень мощное устройство по цене. Даже без возможностей Wi -Fi/Bluetooth является очень экономически эффективным чипом.
«Основы примера кода» было от просмотра видео Spiess. Но его пример был запутан, ИМО. Я сохранил его «рабочую нагрузку» и переработал большую часть формата и т. Д. Андреас был только чередующимся ядром 0, 1, но пример ZIP фактически использует Loop (), чтобы показать, что нарезка времени также выделяется на эту задачу.

Итак, подвести итоги, если вы добавите 2 задачи, одну в Core0 и один на Core1, то есть 4 задачи: выполняется:
  • RF и протоколы на Core0
  • User loop () на core1
  • Пользователь добавил задачу на core0
  • Пользователь добавлена ​​задача на core1
Вышеуказанное обрабатывается в моей переработке примера Андреаса... Кроме того, я исправил чрезмерное использование глобальных переменных и должным образом перенесла функции вне основного эскиза в их собственные вкладки с правильным прототипированием.


Луча

Tab Dualcore /* This sketch runs the same load on both cores of the ESP32 ArduinoIDE 1.8.5 Linux Mint 18.3 Sketch uses 162569 bytes (12%) of program storage space. Maximum is 1310720 bytes. Global variables use 11068 bytes (3%) of dynamic memory, leaving 283844 bytes for local variables. Maximum is 294912 bytes. */ #include // Ref: http://arduiniana.org/libraries/streaming/ #include "Workload.h" #include "Task1.h" #include "Task2.h" TaskHandle_t TaskA, TaskB; void setup() { Serial.begin(115200); delay(500); // small delay // Ref: http://esp32.info/docs/esp_idf/html/db/da4/task_8h.html#a25b035ac6b7809ff16c828be270e1431 xTaskCreatePinnedToCore( Task1, /* pvTaskCode */ "Workload1", /* pcName */ 1000, /* usStackDepth */ NULL, /* pvParameters */ 1, /* uxPriority */ &TaskA, /* pxCreatedTask */ 0); /* xCoreID */ xTaskCreatePinnedToCore( Task2, "Workload2", 1000, NULL, 1, &TaskB, 1); } void loop() { // This task will run in the ESP32 Arduino default context unsigned long start = millis(); Serial << "Task 0 complete running on Core " << (xPortGetCoreID()) << " Time = " << (millis() - start) << " mS" << endl ;; delay(10) ; }

ZMEMW16
Пн, 12 февраля 2018 г., 13:55
Какой маршрут установки программного обеспечения ?
У меня есть и IDF, и SketchBook/Adplaive Routes для компиляции, ссылки и Flash.
относительно безболезненно.
Я на самом деле думал о том, чтобы попросить Zip от любого, у кого работающий Arduino, ~/sketchbook/hareware esp32 установка.

Я также думаю, что периферийные устройства не будут такими простыми, как на Arduino, у них, похоже, не будет сканера I2C :)

Для получения маринованности посмотрите на мой почтовый, ViewTopic.PHP?F = 17&t = 3224


Стивен

Mrburnette
Пн 12 февраля 2018 г. 15:24
[ZMEMW16 - Пн, 12 февраля 2018 г. 13:55] - Какой маршрут установки программного обеспечения ?
У меня есть и IDF, и SketchBook/Adplaive Routes для компиляции, ссылки и Flash.
относительно безболезненно.
Я на самом деле думал о том, чтобы попросить Zip от любого, у кого работающий Arduino, ~/sketchbook/hareware esp32 установка.

Я также думаю, что периферийные устройства не будут такими простыми, как на Arduino, у них, похоже, не будет сканера I2C :)

Для получения маринованности посмотрите на мой почтовый, ViewTopic.PHP?F = 17&t = 3224


Стивен
Основная установка ESP32 проста. Следуйте указаниям.
Lite Board отправлена ​​с штифтами... идеально подходит... Адаптер не требуется. CH340C посвящает USB. Правильно сбрасывается из IDE.

Есть много примеров ESP32 после установки ядра.
ESP32 Примеры.jpg
ESP32 Примеры.JPG (144.66 киб) просмотрено 1188 раз

ZMEMW16
Пн, 12 февраля 2018 г. 15:53
@Ray
Вы пробовали версию IDF ?
Он вернул много воспоминаний о настройке ядра с использованием «Make menuconfig», которые начались за четверть века назад :ржу не могу:
Пример IDF Hello World работает.
Одна вещь, которую я заметил, было то, что нужно было нажать на кнопку сброса, даже если сообщения говорят, что он сделал трудный сброс.

У меня был быстрый взгляд на примеры i2c и spi, отсюда и мой комментарий.
Стивен

Mrburnette
Вт 13 февраля 2018 г., 19:44
Не работали напрямую в ИДФ. Использовали эти функциональные вызовы из Arduino.

У меня, наверное, 5 различных сортов модулей ESP32. Все сброс после загрузки с использованием Linux Mint 18.3. ... не пробовали под окнами.

Луча

victor_pv
Вт 13 февраля 2018 г. 22:16
Я думал, что купил ESP32, мне нужно попытаться найти его и попробовать некоторые из этого.

Быстрый вопрос, можете ли вы выполнить задачу в обоих основных альтернативно, когда один из них доступен?

РЕДАКТИРОВАТЬ: Нашел мой ESP32,-это esp-room с 4 МБ дополнительной ОЗУ :) Довольно хорошо за 6-7 долларов.

ZMEMW16
Вт 13 февраля 2018 г., 23:09
[Mrburnette - Вт 13 февраля 2018 г., 19:44] - Не работали напрямую в ИДФ. Использовали эти функциональные вызовы из Arduino.

У меня, наверное, 5 различных сортов модулей ESP32. Все сброс после загрузки с использованием Linux Mint 18.3. ... не пробовали под окнами.

Луча
не пробовали под окнами. @Ray их есть боевые слова - если вы предлагаете, чтобы я пользователь Windows - Linux с 1994 года 8-) OK XP в сеансе VirtualBox, даже не уверен, когда я в последний раз использовал его : D

Я попробую (IDF Hello World) снова, может быть, это было только потому, что я использовал IDF, а не Arduino IDE, вспомнил, что я использовал Cutecom, и он придумал недопустимый скорость передачи (0).

Для SPI и I2C я имел в виду примеры IDF, конечно, не стиль Arduino, по внешнему виду источник больше похож на HAL/SPL со структурами данных.

Стивен

Prusa i3 за 210 евро

PWM ILI9341 Контроль подсветки?