ESP32 или Вторая часть Марлезонского балета

-NMi-
Offline
Зарегистрирован: 20.08.2018

Суть:

Кто в чём программирует.

(варианты будут попозже, т.к. с нетом траблы....)

-NMi-
Offline
Зарегистрирован: 20.08.2018

VSCode или PlatdormIO ???

Интересно ТОЛЬКО с RTOS, другие варианты на 80/160/220 тактовке просто бессмысленны.

Iv_
Iv_ аватар
Offline
Зарегистрирован: 06.04.2022

Я всё ещё на Arduino IDE. Причём под седьмыми форточками.

Iv_
Iv_ аватар
Offline
Зарегистрирован: 06.04.2022

Я на этой сижу.
Arduino IDE 1.8.19
Программное обеспечение Arduino с открытым исходным кодом (IDE) позволяет легко писать код и загружать его на плату. Это программное обеспечение можно использовать с любой платой Arduino.
Инструкции по установке см. на странице « Начало работы ».
ИСХОДНЫЙ КОД
Активная разработка программного обеспечения Arduino ведется на GitHub . См. инструкции по сборке кода . Архивы исходного кода последней версии доступны здесь . Архивы подписаны PGP, поэтому их можно проверить с помощью этого ключа gpg.

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Iv_ пишет:
Я на этой сижу. Arduino IDE 1.8.19 Программное обеспечение Arduino с открытым исходным кодом (IDE) позволяет легко писать код

Это сказки для новичков. Среда разработки уровня виндового блокнота - ни автодополнения кода, ни навигации по коду, ни рефракторинга. Писать в ней что-то серьезнее блинка - ну бы его нафиг )))

Iv_
Iv_ аватар
Offline
Зарегистрирован: 06.04.2022

v258 пишет:

Iv_ пишет:
Я на этой сижу. Arduino IDE 1.8.19 Программное обеспечение Arduino с открытым исходным кодом (IDE) позволяет легко писать код

Это сказки для новичков. Среда разработки уровня виндового блокнота - ни автодополнения кода, ни навигации по коду, ни рефракторинга. Писать в ней что-то серьезнее блинка - ну бы его нафиг )))


Ну ТС начинающий. Если предыдущую ветку читали. Ему нафиг не упали ваши навороты. Ему надо, чтоб работало и быстро научиться. А это -
Arduino IDE 1.8.19

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Iv_][quote=v258 пишет:

 Ну ТС начинающий

Кто бы мог подумать )))

Iv_
Iv_ аватар
Offline
Зарегистрирован: 06.04.2022
Iv_
Iv_ аватар
Offline
Зарегистрирован: 06.04.2022

v258] </p> <p>[quote=Iv_ пишет:
v258 пишет:

 Ну ТС начинающий

Кто бы мог подумать )))


Если такие вопросы, как от начинающего...
Я уже всё перебрал. Мне, удобней всего в Arduino IDE старой кодить. Под мои задачи.

Iv_
Iv_ аватар
Offline
Зарегистрирован: 06.04.2022

И все три моих компа под форточками, до сих пор на семёрке. У меня даже есть рабочая платформа на 775 сокете. Ну консервативен я по жизни!

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

А у меня основной комп на AMD FX-6200 )))

Iv_
Iv_ аватар
Offline
Зарегистрирован: 06.04.2022

BOOM пишет:

А у меня основной комп на AMD FX-6200 )))


А я за синих. Intel.

Iv_
Iv_ аватар
Offline
Зарегистрирован: 06.04.2022

Лучшее что я собрал. B75 чипсет, проц Xeon E3-1225 V2. Купил проц Б/У на Али, кажется за 1750 рублей на Али 4..5 лет тому назад.

Iv_
Iv_ аватар
Offline
Зарегистрирован: 06.04.2022

На максимуме, этот сервачный проц, компилирует мой самый сложный код в Arduino IDE за минуту.
1840 строк в коде.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Iv_ пишет:
На максимуме, этот сервачный проц, компилирует мой самый сложный код в Arduino IDE за минуту. 1840 строк в коде.

поставь XUBUNTU будет компилировать значительно быстрее

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

... и кофе варить начнёт!))))

-NMi-
Offline
Зарегистрирован: 20.08.2018

Iv_ пишет:
Я всё ещё на Arduino IDE. Причём под седьмыми форточками.

Ардуино это "классно" для поморгать чем-либо, датчики поопрашивать и тд. Любое другое телодвижение вверх неизбежно столкнётся с тем, что нужно как-то разделять время процессора для задач. 

Давай промоделируем ситуацию: допустим у тебя десять задач, каким образом ты их "запихаешь" в ардуино???

-NMi-
Offline
Зарегистрирован: 20.08.2018

Для простоты "усваивания" тривиальности задачи, давай поступим по новичковски-ардуиновски...

Начнём:

1 - любимые кнопки и их опрос

2 - любимые светодиоды и их управление оными

3 - какой-никакой дисплей

4... и далее, пусть будут датчики

...9 и 10 - управление некими исполнительными механизмами, например нагревательным элементом.

Вот десять задач, которые должны вызываться в определённое время и с определённой частотой вызовов... Вот как это можно сделать на ардуине???

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

1.8 TFT SPI 128*160

nik182
Offline
Зарегистрирован: 04.05.2015

-NMi- пишет:

Для простоты "усваивания" тривиальности задачи, давай поступим по новичковски-ардуиновски...

Начнём:

1 - любимые кнопки и их опрос

2 - любимые светодиоды и их управление оными

3 - какой-никакой дисплей

4... и далее, пусть будут датчики

...9 и 10 - управление некими исполнительными механизмами, например нагревательным элементом.

Вот десять задач, которые должны вызываться в определённое время и с определённой частотой вызовов... Вот как это можно сделать на ардуине???


А что нельзя? Вроде всё именно так и работает и именно на ардуине. Кооперативная многзадачность рулит. А если stm взять то и на вытесняющую можно замахнуться. А на еsp и связь через интернет можно добавить.

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

-NMi- пишет:

Для простоты "усваивания" тривиальности задачи, давай поступим по новичковски-ардуиновски...

Начнём:

1 - любимые кнопки и их опрос

2 - любимые светодиоды и их управление оными

3 - какой-никакой дисплей

4... и далее, пусть будут датчики

...9 и 10 - управление некими исполнительными механизмами, например нагревательным элементом.

Вот десять задач, которые должны вызываться в определённое время и с определённой частотой вызовов... Вот как это можно сделать на ардуине???

Это слишком простой пример. Для этого RTOS не требуется. Простейший диспетчер задач, даже на миллисе, прекрасно справится, лишь бы хватило ресурсов. Реально работающий пример:

shHandle sleep_on_timer;          // таймер ухода в сон через 10 минут после отключения зажигания
shHandle blink_timer;             // таймер блинка, используется всем, что мигает
shHandle low_beam_off_timer;      // таймер отключения ближнего света при превышении порога датчика света
shHandle data_guard;              // отслеживание изменения уровня на входных пинах
shHandle display_guard;           // вывод данных на экран
shHandle light_sensor_guard;      // отслеживание показаний датчика света
shHandle leds_guard;              // управление светодиодами - индикаторами автосвета
shHandle return_to_default_mode;  // таймер автовозврата в режим показа времени из любого режима настройки
shHandle show_set_time_mode;      // режим настройки времени
shHandle show_temp_mode;          // режим показа температуры
shHandle show_other_setting_mode; // режим настройки прочих параметров

11 задач, 5 работают непрерывно, остальные по необходимости. Тут тебе и светодиоды, и дисплей, и датчики, и исполнительные механизмы. Опрос кнопок вызывается непосредственно из loop(), фактически это задача 12. Код влезает в 168 атмегу (правда, на ней не тестировался)))

RTOS нужен, когда требуется организовать многопоточность с разделением задач по приоритету. Если это не нужно, то и ардуина подойдет ))

-NMi-
Offline
Зарегистрирован: 20.08.2018

Это слишком простой пример.

Дык а я изначально написал - "ардуино_новичковский" пример.

 

11 задач, 5 работают непрерывно, остальные по необходимости.

Ну давай лукавить не будем. Мне твой "пример" напомнил абсолютно любую демо-программу на спектруме. Именно так там делалось большинство кода. Напомню, там 50 раз в секунду вызывалась аппаратное обновление экрана и как раз очень выгодно было производить синхронизацию всего и вся. А это, извините, 1993 год!!!

А твой "диспетчер" мне знаком уже много лет как... Хоть на милсах, хоть на таймерах. 

 

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

-NMi- пишет:

Мне твой "пример" напомнил абсолютно любую демо-программу на спектруме. 

Дык, а что нужно-то?

-NMi- пишет:

 Напомню, там 50 раз в секунду вызывалась аппаратное обновление экрана и как раз очень выгодно было производить синхронизацию всего и вся. А это, извините, 1993 год!!!

При чем здесь обновление экрана? Каждая задача имеет свои тайминги

sadman41
Offline
Зарегистрирован: 19.10.2016

Можно подумать, что 10 задач можно запихнуть в ESP как-то иначе, чем в AVR.

Количество непрерывно выполняющихся задач равно количеству ядер. Остальной функционал - это компромисс между работающими фрагментами кода. На обоих МК он будет вызывать одинаковые проблемы.

Все отличие только в том, что под ESP можно голову не включать (до какого-то предела) - довериться "черному ящику".

-NMi-
Offline
Зарегистрирован: 20.08.2018

Блин, я в афиге с ваших комментооФФ...

Йоксель_чпоксель, 16 мегагерц или 80-240 мегагерц = чо, нет разницы???

Три!!!, блеать, сцуко, проца, два больших и один махонький = чо, нет разницы опять???

Ну и самый риторический вопрос: зачем "___тупые" люди придумали RTOS, Windows, Linux, а? Сидели бы в DOS и не жужжали )))))))))

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

-NMi- пишет:

Йоксель_чпоксель, 16 мегагерц или 80-240 мегагерц = чо, нет разницы???

Для озвученной выше задачи - нету разницы. Более того, 80-240 МГц тут явный overkill )))

-NMi-
Offline
Зарегистрирован: 20.08.2018

Это реально или прикол какой??? Вы чо, подумали, што я буду есп32 сраные датчики опрашивать и светодиодами моргать???

Мой вопрос был о среде программирования а никак не о моргалах_светодиодных...

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Вот и я думаю - Не срастается. Вопрос был про IDE, а спорят о многозадачность ))))

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

BOOM пишет:

Вот и я думаю - Не срастается. Вопрос был про IDE, а спорят о многозадачность ))))

Он сам вектор спора задал )))

Что касается IDE, то я и на ардуину в VS Code пишу

sadman41
Offline
Зарегистрирован: 19.10.2016

В абстрактном устройстве абсолютно никакой разницы нет что применять - ATTiny13 или Xeon. 1Mhz или 10GHz. Одно ядро или кластер. Никаких инопланетных технологий с прорывом через черные дыры тут нет. Одно ядро - одна непрерывно выполняющаяся задача. 

Windows, Linux и прочие уровни абстракции придумали для облегчения работы с вычислительными ресурсами, потому что у человека соображалка не сильно мощная и херачить всё на ассемблере или в опкодах ему слабо. С многозадачностью эти системы связаны лишь косвенно.

Кстати, в Досе тоже была "многозадачность". Драйвера работали параллельно с пользовательскими задачами.  Так что наброс не засчитывается.

SLKH
Offline
Зарегистрирован: 17.08.2015

sadman41 пишет:

Кстати, в Досе тоже была "многозадачность". Драйвера работали параллельно с пользовательскими задачами.  

забыл народ про KeyRus.

sadman41
Offline
Зарегистрирован: 19.10.2016

И про himem. И про drivespace. Да дохрена чего в config.sys напхать можно было.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

sadman41 пишет:
И про himem. И про drivespace. Да дохрена чего в config.sys напхать можно было.

да и не в конфиг, к любому прерыванию свой код прицепить )))

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

sadman41 пишет:

Кстати, в Досе тоже была "многозадачность". Драйвера работали параллельно с пользовательскими задачами.  Так что наброс не засчитывается.

Насколько я помню, многозадачность в ДОС ограничивалась единственной программой print, которая могла работать одновременно с одной другой прикладной задачей.

Драйвера же под ДОС, как правило, были нереентерабельными, хотя теоретически могло работать "одновременно" несколько резидентных программ, написанных определенным образом.

Вообще же "многозадачности" ДОС мешало, как правило, именно отсутствие драйверов и необходимость работать напрямую с железом, что исключало доступ к одному и тому же железу со стороны разных программ.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

ua6em пишет:

да и не в конфиг, к любому прерыванию свой код прицепить )))

Только прицепить код - мало, надо еще сделать задачу резидентной.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

andriano пишет:

ua6em пишет:

да и не в конфиг, к любому прерыванию свой код прицепить )))

Только прицепить код - мало, надо еще сделать задачу резидентной.

само собой )))

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

А что такое многозадачность? Ворд и эксель в соседних окнах запустить? Или что? Есть api OS, тупо подпрограммы, те же прерывания в дос, ниче нового и в линукс и в винде.

SergeiL
SergeiL аватар
Offline
Зарегистрирован: 05.11.2018

Все резиденты в DOS были по сценарию:

1) загрузить код в память. (DOS)

2) перехватить прерывания. (подмена векторов  в таблице и вызов оригинала после себя)

2) оставить свой код в памяти и завершить свою задачу. (DOS)

Тут многозадачности то и нет. :-( Те же вектора и прерывания.

Функции DOS - int 20h-2Fh, нужно же было семафорить для многозадачности. Если пишется своя RTOS под DOS. 

 

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

И? Чем современные ос в глобальном смысле отличаются? Все то же самое, в защищённом режиме перехват команд, все пользовательские api приложений проверяются и перехватываются ядром.

SergeiL
SergeiL аватар
Offline
Зарегистрирован: 05.11.2018

andycat пишет:
И? Чем современные ос в глобальном смысле отличаются? Все то же самое, в защищённом режиме перехват команд, все пользовательские api приложений проверяются и перехватываются ядром.

Диспетчер, защищенный режим, Где они в DOS?

DOS это Disk Operating System. Диск !!!

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Дык никто ж её пытается сравнить, изначально разговор о средах программирования шёл, потом об ос, теперь о многозадачность, я к тому что задачи разные, путей решения задач и видов МК и cpu миллион, архитектур ещё больше, и сравнивать абстрактных коней в вакууме это просто хрень.

Upper
Offline
Зарегистрирован: 23.06.2020

andycat пишет:
... и сравнивать абстрактных коней в вакууме это просто хрень.

Для многих наука это просто хрень.

Цитата.
"Абстракции являются уни­вер­саль­ным методом на­учного по­зна­ния, они необходимы для фор­ми­ро­ва­ния по­ня­тий, уз­на­ва­ния и клас­си­фи­ка­ции объ­ек­тов исследования на всех уров­нях фор­ми­ро­ва­ния зна­ний. "

 

SAB
Offline
Зарегистрирован: 27.12.2016

Как помнится, когда существовал DOS, большинство программ было с расширение у файлов .сом И загрузка этих файлов была по абсолютному адресу памяти 0х100. Скорее всего, только по этому и не было тогда многозадачности. И только когда пришли в дос .ехе файлы можно было говорить уже о работе нескольких программ одновременно.

sadman41
Offline
Зарегистрирован: 19.10.2016

С точки зрения прокладки между креслом и монитором в доcе была удовлетворяющая задачам "многозадачность". Диск на ходу сжимался/разжимался, клавиатура переключалась, всякие сотрясатели и переворачиватели картинок на мониторе работали. Другого и не требовалось.

При программировании ESP никакого SIP-а не нужно по QoS гонять. На коммуникации выделено ядро, второе - на юзера. То, что оно по таймеру дёргает подпрограммки, о реальной многозадачности не свидетельствует. Снаружи все выглядит, как DOS.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

SAB пишет:

Как помнится, когда существовал DOS, большинство программ было с расширение у файлов .сом И загрузка этих файлов была по абсолютному адресу памяти 0х100. Скорее всего, только по этому и не было тогда многозадачности. И только когда пришли в дос .ехе файлы можно было говорить уже о работе нескольких программ одновременно.

Не совсем так.

*.com унаследованы DOS от ОС CP/M-80, имел ограничение в 64к, а *.exe - новый "родной" для DOS формат, позволяющий использовать все 640к. 

НО!

*.com, хотя и загружался всегда по смещению 100h, это смещение могло быть в любом сегменте, т.е. считай в любом месте 640к-байтной памяти. Соответственно с точки зрения "многозадачности" (т.е. загрузить резидент) оба формата позволяли это сделать. Причем, *.com был даже удобнее.

 

PS. И еще раз: реальная многозадачность (не многопоточность, а именно многозадачность) имела в DOS единственный пример - работа задачи print на фоне любой другой задачи, запущенной после нее.

ВН
Offline
Зарегистрирован: 25.02.2016

sadman41 пишет:
На коммуникации выделено ядро, второе - на юзера. То, что оно по таймеру дёргает подпрограммки, о реальной многозадачности не свидетельствует. Снаружи все выглядит, как DOS.

Вообще-то многозадачность винды исходно в том и состояла, что она по таймеру, через 10 мс примерно, запускала разные задачи, из-за чего на самой винде были не возможны реал таймовые системы, только с привлечением драйверов можно было получить что-то приемлемое.

SAB
Offline
Зарегистрирован: 27.12.2016

 To andriano 

*.com, хотя и загружался всегда по смещению 100h, это смещение могло быть в любом сегменте, т.е. считай в любом месте 640к-байтной памяти. Соответственно с точки зрения "многозадачности" (т.е. загрузить резидент) оба формата позволяли это сделать. Причем, *.com был даже удобнее.

Вы что то путаете, .сом файл априори не мог располагаться с любого адреса памяти, потому как условные и безусловные переходы в программе были определены жестко. В том было и отличие, что .ехе загружаясь с определенного адреса стартуя, сначала пересчитывает эти переходы относительно расположения в адресном пространстве, относительно своего расположения (адреса смещения от 100h), а уж потом начинал выполняться. 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Я прошу прощения, что в чужой огород (и может быть даже не особо по теме), но мне только спросить ))))

Заказал  ESP8266 NodeMcu v3 ( https://aliexpress.ru/item/4000160133215.html ), а только потом подумал - а аддоны для ардуино ide есть вообще для этих плат? ))))

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020
BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Спасибо!

ЗЫ: поправьте ссылку как в моем посте.

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

BOOM пишет:

Спасибо!

ЗЫ: поправьте ссылку как в моем посте.


Не понял как, но посты, которые кто-то процитировал, уже не редактируются ))