ㅤ
Но можно да юзать uart putc. Быстрее передаешь в юарт. Но на 115200 все застрянет
Егор
printf там же типо форматиррвание строки ещё идёт(оьработка \n)
Нет, \n си видит как один символ типа char, гляньте таблицу ascii, там написано
ㅤ
Не там он проблему ищет
Егор
да по сути в блютузе проблемы
Егор
и антенне
Егор
ну и адаптере от интела, который начал отваливаться как и по вайфаю, так и по кабелю
Егор
хм, а в теории я могу логическим анализатором сравнить задержки в развитии сигнале)
индзэец
https://stackoverflow.com/questions/896654/cout-or-printf-which-of-the-two-has-a-faster-execution-speed-c#896665 не то?
Егор
А что, давайте проведу сравнение и составлю таблицу, скажем пусть будет передаваться текст "esp32" со скоростью 115200 каждым из способов, и посмотрим что будет быстрее
Егор
только что лучше заюзать, esp idf или arduino ide? По сути ядро то там на idf работает + arduino.h подрубается
Егор
буду наверное делать так: начали передачу - один пин включили, когда закончится функция - выключаем
Егор
Как лучше пином управлять будет?
Егор
ну интересно же, какая из функций самая долгая
Егор
ну пока приступлю
ㅤ
ну интересно же, какая из функций самая долгая
Возьми просто сними Милли секунды текущие то неё и после. И дельту выведи а сериал. Все просто
ㅤ
Millis кажется в ардуине. Ну или esp get timer
ㅤ
В идеале бы что бы вообще ничего не спрашивали.... Но они лезут сюда как тараканы😂
Ты еще в анархии не был. Или был. Я туда как то заглянул. Там то кровать спрашивают как выбрать, то рецепт врача расшифровать. На минуточку это чат про электронику. Хорошо я в прошлом году попросил байта меня превентивно забанить
Егор
ну ок
ㅤ
И то это только то, что видел я некоторое время назад. И как то байт с тором вывозят. Я бы уже двинулся кукушкой
Ruslan
Согласен, я столкнулся со многим говном в примерах
Добавил своего, без обид, но у тебя подход от ардуинщиков.
Роджер
Добавил своего, без обид, но у тебя подход от ардуинщиков.
Использую, что есть, старые методы для бородатых дядек. Новые методы быстрые, легкие и проще. Мы же не пишем систему защиты для атомного ледокола.
ㅤ
Если ты про защиту силовой установки. То там полвека выверенные решения. И благо там ардунищков пока нет
Егор
щас потестировал такой прикол: arduino ide и две функции: serial.printf и printf. К моему удивлению, serial.printf выполняется гораздо быстрее
Егор
129.708 us у printf
Егор
И 72,375 us у serial.printf
Егор
И что интересно, printf простой шлет и в usb-uart и в пин tx, а serial.printf напрямую в usb-uart
Егор
Ну типо там же есть аппаратный usb на ней
Егор
Вот printf простой
Егор
Вот printf простой
Еще и /r автоматом добавил...
DeFensy 🛡⚔️ AntiSpamBot
Администратор запретил пересылку или цитирование сторонних сообщений 🔖ads: Бот создан в @botsbaseru
Егор
Возьми просто сними Милли секунды текущие то неё и после. И дельту выведи а сериал. Все просто
я решил поточнее сделать) Посмотрите в чат по делу, случайно туда прислал
Егор
Похоже они оптимизировали функцию из библиотеки serial больше
Егор
А еще почитав исходники этого arduino-esp32, я понял что по сути digitalWrite просто алиас на gpio_set_level
Егор
extern void ARDUINO_ISR_ATTR __digitalWrite(uint8_t pin, uint8_t val) { #ifdef RGB_BUILTIN if (pin == RGB_BUILTIN) { //use RMT to set all channels on/off RGB_BUILTIN_storage = val; const uint8_t comm_val = val != 0 ? RGB_BRIGHTNESS : 0; rgbLedWrite(RGB_BUILTIN, comm_val, comm_val, comm_val); return; } #endif // RGB_BUILTIN if (perimanGetPinBus(pin, ESP32_BUS_TYPE_GPIO) != NULL) { gpio_set_level((gpio_num_t)pin, val); } else { log_e("IO %i is not set as GPIO.", pin); } } Ну в целом нормально, учитывая что обычно будет компилироваться тот мелкий кусок в конце
Сергей
Подскажите, сколько времени занимает преобразование АЦП esp32?
Сергей
Нужно порядка 10-20мкс не более.
Сергей
Есть импульс, нужно измерить его уровень. Факт наличия можно завести на прерывание и там запустить АЦП.
ㅤ
Похоже они оптимизировали функцию из библиотеки serial больше
Принтф это стандартная си функция из стдлиб. Они не могли её оптимизировать, просто она не умеет в формат
ㅤ
Ну свою реализацию stdlib же могли сделать
Newlib? Память позволяет. Нет смысла в этом
ㅤ
На 003 да, это актуально. А тут зачем
Sergey
Нужно порядка 10-20мкс не более.
10мкс это 100кгц семпл рейт, первая строчка в гугле говорит что старая esp32 с выкл wifi может 2мгц максимум дать, но рекомендуется 1кгц))
Егор
Ну по факту то зато мы выяснили что лучше использовать в arduino ide да и думаю не только
Sergey
В даташите на С серию кстати не нашел инфы по семпл рейту. Рекомендуют опять же 1 кГц)
Егор
Ну хотя хз. По сути разницы сильной нет, что писать самому функции, что ускорить использованием либы для idf, под капотом почти одно и тоже
Егор
Причем тут оболочка?
Ну я имел ввиду в ней с ядром для есп. Там же по дефолту подрубается arduino.h
Sergey
S3 тоже урезали до 100кгц😳
ok-home
Всем привет. Недавно начал изучать данную платформу. Я сейчас использую ESP32-S3 с API ESP-IDF, и пока не совсем понимаю, как работать с UART, документация сыровата, опыта нет. 1 - Я не увидел там ни слова про DMA 2 - Я увидел там, что работа с прерыванием на прием используется сугубо для перформанса. Вот и не понимаю, какую методику использовать. Надо очень четко принимать примерно пакет в 100 байт на скорости 115 200.
под капотом драйвера используется 2 буфера - аппаратный fifo на 120 байт и ringbuf на сколько закажешь при инициализации драйвера. Драйвер отдает данные в зависимости от настроек и способа чтения - сразу после получения нужного количества символов, указанных в запросе на чтение ( от 1 ... ) - при использовании event можно получать пакет по ( количеству байт в фифо, таймауту после приема последнего байта в пакете... ) все очень хорошо расписано в примерах esp-idf
Сергей
10мкс это 100кгц семпл рейт, первая строчка в гугле говорит что старая esp32 с выкл wifi может 2мгц максимум дать, но рекомендуется 1кгц))
Нашел, где люди задаются таким же вопросом и не могут найти прям точного ответа. На обычной серии рекомендуется 1кГц. Исследовали и установили, что максимум 6кГц можно выжать, дальше значения АЦП начинают снижаться. Поэтому я и переспросил.
Always
под капотом драйвера используется 2 буфера - аппаратный fifo на 120 байт и ringbuf на сколько закажешь при инициализации драйвера. Драйвер отдает данные в зависимости от настроек и способа чтения - сразу после получения нужного количества символов, указанных в запросе на чтение ( от 1 ... ) - при использовании event можно получать пакет по ( количеству байт в фифо, таймауту после приема последнего байта в пакете... ) все очень хорошо расписано в примерах esp-idf
Я вчера разбирался, в итоге настроил драйвер на FIFO, убрал ручное прерывание. В методе чтения слушаю ивент. И все это по примеру из GitHub засунул в тачку, чтобы ОС сама распределяла ресурсы и смотрела за всем. Хотя в доках где-то видел, что при ручной обработке может быть все гораздо быстрее, но раз есть ОС, то пусть она наверное заботиться об этом.
Always
И да, спасибо большое за ваш ответ!
Max
Movement Detector With Arduino and ESP8266 Movement Detector With Arduino and ESP8266 with Serial communication between them. https://www.hackster.io/rakaamburotech/movement-detector-with-arduino-and-esp8266-a4340f
Max
USB Insight Hub is an open-source, ESP32-S2-based tool for testing USB devices (Crowdfunding) The USB Insight Hub is a USB testing tool based on the ESP32-S2 wireless SoC made by Ecuador-based company Aerio Solutions SAS and aimed at developers and tech enthusiasts. The Insight Hub connects to a computer via a USB Type-C port and expands it to three downstream ports, each with a 1.3-inch color display screen… https://www.cnx-software.com/2024/11/04/usb-insight-hub-open-source-esp32-s2-based-for-testing-usb-devices/
Роджер
однозначно дешевле )
Есть старый как мир, си метод: main() { while() { } } В Ардуино его упростили до: Setup() {} Loop() {} В еще более сложных ситемах заменили на freertos. Так яем плох Ардуино подход? Если это лишь упрощает и ускоряет хотя бы тупо обкатку прототипа. Ведь, использование чипов atmega не делает их плохими, они много где используются, ради плохо, что смогли упростить процесс обучения и использования? Или же чип esp32 разве кодом из под arduino ide можно их испортить. (Esp32 как слышал из производство запустят в России, доступны будут только для коммерческого рынка)
Роджер
Цена чипа равна серьёзности проекта?
Серьезность проекта влияет на требования к качеству и отказоустойчивости. Что в свою очередь влияет на цену продукто., т.е. получается ты сказал верно, на цену за чип влияет серьезность проекта.
Ruslan
Какой проект серьезнее: 1) на attiny13, с продажами на 200 млн 2) на Intel i5, с продажами на 25 млн?
Ruslan
Инвестору до пизды сколько стоит и как крут твой проц, если они могут в результате делать минимум три конца
Ruslan
Плохо. Народ отупел до безумия
Ну дык усилят войнушки на планете, переработают всех лишних, главное — в статистику не попасть )