Немного информации о ESP

ESP8266-01, 07 и т.п.
Ответить
Anydy

Немного информации о ESP

#1

Сообщение Anydy » 26.08.2021{, 00:07}

Интересный коментарий к статье на хабре о машинках с управлением по WiFi
ESP32 и ESP8266 работают не так, как обычные микроконтроллеры. В обычных разработчик чипа предоставляет полное аппаратное описание чипа, и пользовательская прошивка - это единственный код, который работает в микроконтроллере. Программа пользователя только записывает и считывает биты в регистры. А дальше микроконтроллер делает всю работу аппаратно. Это позволяет точно знать число тактов, сколько занимает каждая команда. И, например, задавать точные временные интервалы при генерации ШИМ сигнала. А также вовремя реагировать на прерывания. А у ESP часть архитектуры закрыта, а доступ к аппаратным функциям делается через софтверный API. То есть, параллельно с вашей прошивкой, внутри ESP крутится какой-то код от производителя чипа. Он жрет много ресурсов и приводит к непредсказуемым задержкам. Поэтому ESP не могут выдерживать точные временные интервалы. Это приводит к куче проблем с управлением электродвигателями и сервоприводами (даже с использованием внешних аппаратных драйверов). Моторы могут дергаться, врубаться неожиданно на полный газ и все такое. По этой же причине на ESP возникают проблемы у софтверных реализаций протоколов UART/I2C/OneWire и при обработке прерываний.

В общем, для очень многих точных аппаратных задач esp НЕ МОГУТ заменить ардуино или stm. И это очень жаль, потому что ESP действительно классные и дешевые чипы. Было бы круто все делать чисто на них. Хотя благодаря большой частоте 80/160/240 МГц, эта проблема сглаживается, конечно. Если подключить обычную серву, то она на первый взгляд, даже заработает. Но может непредсказуемо дергаться и глючить. Аналогично с попыткой собрать на базе ESP энкодер на датчиках холла для определения скорости вращения быстрых моторов, с этим совсем беда. Оно то работает, то пропускает прерывания.

Но для простых задач - вроде обработать нажатия кнопок и обеспечивать web интерфейс, ESP прекрасно подходят. Да и пауза между постоянно пересылаемыми GET запросами там на практике всего около 30 мс, что очень круто. Можно на базе ESP делать радиоуправление в почти реальном времени. Но надо быть готовым к тому, что в любой момент ESP может зависнуть на 300-1500 мс. При этом, если вы своим кодом задержите ESP то ли на 1 мс, то ли на 10 мс, то она молча упадет. Вот такая несправедливость =). Через websocket, который держит соединение постоянно открытым и имеет меньше накладных расходов, пауза между пакетами чуть меньше 20 мс (но сами библиотеки weboscket жрут довольно много памяти, если ее не хватает, проще делать на обычных GET запросах, разница невелика).

P.S. В ESP32 двухядерный процессор, вроде можно один выделить чисто под свой код, на который внутренний код от производителя не будет влиять, но это сложно и требует нестандартных процедур при программировании.
https://habr.com/ru/post/574156/

AndrejK
Сержант
Сообщения: 119
Зарегистрирован: 20.02.2020{, 13:16}
Репутация: 14
Откуда: Вильнюс
Имя: Андрей

Немного информации о ESP

#2

Сообщение AndrejK » 26.08.2021{, 06:33}

Очень правильная статья. Бьюсь с ESP32. Делаю управление откатными воротами командами с телеграм. При обращении к богу, программа действительно зависает на секунду, либо при прерывания по ДХ вообще не реагирует на команды. Даже при выводе в уарт заметно подвисание на 30 мс. Раскидал задачи по разным ядрами- бота, wifi, ota в нулевое, а основной цикл в 1- ое. Помогло. И сериал.принт на 0 ядре не подвисает.
Последний раз редактировалось AndrejK 26.08.2021{, 14:46}, всего редактировалось 1 раз.

ecoins
Полковник
Сообщения: 2921
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Немного информации о ESP

#3

Сообщение ecoins » 26.08.2021{, 12:19}

AndrejK писал(а):
26.08.2021{, 06:33}
Раскидал задачи по разным ядрами- бота, wifi, ota в нулевое, а основной цикл в 1- от. Помогло. И сериал.принт на 0 ядре не подвисает.
Не могли бы об этом поподробнее. И если возможно с примерами на C++.
А мы бы возможно встроили эту особенность в пользовательские блоки.

AndrejK
Сержант
Сообщения: 119
Зарегистрирован: 20.02.2020{, 13:16}
Репутация: 14
Откуда: Вильнюс
Имя: Андрей

Немного информации о ESP

#4

Сообщение AndrejK » 26.08.2021{, 14:45}

Это сырой вариант, прошу не пинать.
Вложения
Dva_jadra_ESP32_Vorota.rar
(6.13 КБ) 47 скачиваний
Vorota ESP32.rar
(278.97 КБ) 42 скачивания

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Немного информации о ESP

#5

Сообщение Sancho » 26.08.2021{, 15:05}

ecoins писал(а):
26.08.2021{, 12:19}
AndrejK писал(а):
26.08.2021{, 06:33}
Раскидал задачи по разным ядрами- бота, wifi, ota в нулевое, а основной цикл в 1- от. Помогло. И сериал.принт на 0 ядре не подвисает.
Не могли бы об этом поподробнее. И если возможно с примерами на C++.
А мы бы возможно встроили эту особенность в пользовательские блоки.
ссылка
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

aidar_i
Полковник
Сообщения: 3120
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 674
Откуда: Уфа
Имя: Айдар
Контактная информация:

Немного информации о ESP

#6

Сообщение aidar_i » 26.08.2021{, 17:21}

Я даже блоки сделал, так не было времени окончательно испытать и выложить.
Задачу можно сделать только на 0 ядро, а ардуино остальное запустит в 1 ядре.

Аватара пользователя
Rovki
Полковник
Сообщения: 4872
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

Немного информации о ESP

#7

Сообщение Rovki » 26.08.2021{, 18:49}

Пошли модели ЕСП32 с одним ядром так же. :smile427:
Электронщик до мозга костей и не только

aidar_i
Полковник
Сообщения: 3120
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 674
Откуда: Уфа
Имя: Айдар
Контактная информация:

Немного информации о ESP

#8

Сообщение aidar_i » 26.08.2021{, 20:29}

Rovki писал(а):
26.08.2021{, 18:49}
Пошли модели ЕСП32 с одним ядром так же. :smile427:
пока сыроватые :)

ecoins
Полковник
Сообщения: 2921
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Немного информации о ESP

#9

Сообщение ecoins » 26.08.2021{, 21:31}

AndrejK писал(а):
26.08.2021{, 14:45}
Это сырой вариант, прошу не пинать.
Большое спасибо.
Правильно ли я понял - Вы сделали проект на FLProg, а затем доработали скетч .ino?

aidar_i
Полковник
Сообщения: 3120
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 674
Откуда: Уфа
Имя: Айдар
Контактная информация:

Немного информации о ESP

#10

Сообщение aidar_i » 26.08.2021{, 22:30}

ecoins писал(а):
26.08.2021{, 21:31}
AndrejK писал(а):
26.08.2021{, 14:45}
Это сырой вариант, прошу не пинать.
Большое спасибо.
Правильно ли я понял - Вы сделали проект на FLProg, а затем доработали скетч .ino?
Да, он так сделал.
Здесь я выложил свои блоки.

edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

Немного информации о ESP

#11

Сообщение edyapd » 27.08.2021{, 11:35}

Если не ошибаюсь, то эта тема поднималась года полтора или два назад. Тогда кто-то предлагал задействовать системное ядро на ESP32. На что ему ответили, что если его бездумно использовать, то будут те же самые проблемы, что и с ESP8266.
При нормальном подходе на ESP8266 крутится даже большой код, взять ту же лампу Гайвера.

JonyBest
Сержант
Сообщения: 269
Зарегистрирован: 18.11.2015{, 22:42}
Репутация: 89
Откуда: Близко к Ставрополю
Имя: Евгений

Немного информации о ESP

#12

Сообщение JonyBest » 27.08.2021{, 12:56}

aidar_i писал(а):
26.08.2021{, 22:30}
Да, он так сделал.
Здесь я выложил свои блоки.
Спасибо! Исследование не проводили? Стабильность устройства улучшается?

aidar_i
Полковник
Сообщения: 3120
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 674
Откуда: Уфа
Имя: Айдар
Контактная информация:

Немного информации о ESP

#13

Сообщение aidar_i » 27.08.2021{, 14:51}

JonyBest писал(а):
27.08.2021{, 12:56}
aidar_i писал(а):
26.08.2021{, 22:30}
Да, он так сделал.
Здесь я выложил свои блоки.
Спасибо! Исследование не проводили? Стабильность устройства улучшается?
Я только работоспособность проверял, исследования прошу форумчан провести.

Serg_Grn
Лейтенант
Сообщения: 333
Зарегистрирован: 11.02.2018{, 13:07}
Репутация: 36
Имя: Сергей

Немного информации о ESP

#14

Сообщение Serg_Grn » 29.08.2021{, 19:30}

Тема очень интересная. Я с ESP32 работаю уже второй год, в основном для выхода в интернет и управления оттуда железом. Проблема зависаний основного кода по разным причинам - это очень актуально. Собственно если бы не это, то у чипа наверно не было бы недостатков, как по мне :)

sergserg
Сержант
Сообщения: 203
Зарегистрирован: 25.02.2021{, 14:26}
Репутация: -19
Имя: Сергей

Немного информации о ESP

#15

Сообщение sergserg » 29.08.2021{, 20:11}

Serg_Grn писал(а):
29.08.2021{, 19:30}
Проблема зависаний основного кода по разным причинам - это очень актуально
проблема только в коде. пользовательском. скорее даже в библиотеках.

Ответить

Вернуться в «Справка по ESP8266»