Развенчание мифов о "магических" библиотеках (Авторский блог)

Полезные материалы, статьи
Аватара пользователя
garry
Рядовой
Сообщения: 99
Зарегистрирован: 22.01.2016{, 11:20}
Репутация: 7

Развенчание мифов о "магических" библиотеках (Авторский блог)

#21

Сообщение garry » 17.09.2022{, 20:10}

Внесу своё мнение. Как я понял из сообщений Dryundel, он, как и я, сильно возмущен тем, что все наработки ecoins, при всём моем уважении, свалены в большую недокументированную кучу. Однажды ecoins нас тут порол и обрисовал свои академические достижения, весьма впечатляющие, чтоб мы не зарывались, однако любой научный поиск знаний предполагает не только достижения, а еще и скурпулёзную их систематизацию и документирование. Я ни в коем случае не умаляю заслуги ecoins, напротив, сделано очень много, однако стоит серьёзно подойти к документированию и описанию. Уважаемый автор FLProg, например, публиковал на Хабре уроки. Ecoins стоит сделать так-же. Кроме того, как с похожей проблемой разработчиков Linux-дистрибутивов, создать FTP с папками каждого релиза с описанием, уроками и документацией внутри,а в корне создать описание версий(Обновляемое).

Panagiotis
Сержант
Сообщения: 127
Зарегистрирован: 11.09.2015{, 20:58}
Репутация: 5
Имя: Панаётис

Развенчание мифов о "магических" библиотеках (Авторский блог)

#22

Сообщение Panagiotis » 18.09.2022{, 15:19}

В поддержку Ecoins и всех тем кто имел плюсы от разработок автора, хочу сказать, если мы уже Иисуса Христа казнили то думаю этим всё сказано и доказано. Я никогда не пользовался и не имею не одного блока от Ecoins, просто ежедневно читаю форум. Лично мне очень нравиться пользователь Dryundel своим взглядом, идеи и активностью на форуме, но реально не понимаю к чему всё это? Жизнь без фокусов и магии была очень скучной, тусклой и простой, помните это Dryundel.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Развенчание мифов о "магических" библиотеках (Авторский блог)

#23

Сообщение Dryundel » 20.09.2022{, 15:42}

МИФ ПЯТЫЙ (Парадоксальный)

Последнее время на форуме разгоняется миф о том, что я против ЭкоСреды от ecoins. Много вижу постов типа "В защиту ecoins".
Господа, вы что и от чего пытаетесь защитить? Разве я говорил что библиотеки ecoins плохо работают? Разве я призывал не пользоваться этими библиотеками? Разве я высказывался что Энвер (ecoins) создает что то ненужное? Или может называл его какими то обидными словами? Может быть в моих словах присутствует ложь?

Парадокс в том, что ничего этого нет. Наоборот, я часто говорил что БИБЛИОТЕКИ РАБОТАЮТ ХОРОШО И ДАЖЕ ОТЛИЧНО. Постоянно обращал внимание на то, что они имеют большой потенциал. Всегда ратовал за то, чтобы этими библиотеками смогло пользоваться как можно больше участников форума.

Кроме этого, мною проводилось изучение, тестирование и выявление тех недостатков которые мешают многим освоить концепцию библиотек. Все это делалось исключительно на энтузиазме. Никаких особых условий не выдвигалось.
Так же мною были предоставлены некоторые алгоритмы. Например в фильтрации и подсчете кириллических символов, указаны недочеты используемых стандартных функций Arduino, таких например как min() и max(). Я выявил нюанс увеличения размера проектов и показал как с этим можно бороться. Я помог ecoins и с освоением нюансов форума...

И что же в итоге?
Выяснилось что, по мнению ecoins, абсолютно всё в библиотеках уникально, сделано с нуля и исключительно командой ecoins.
Оказалось что я необоснованно наехал на ecoins. Именно так донёс Сергею(Автору FLProg) один из ярых "защитников". Не буду называть его имя, но думаю все прекрасно понимают, о ком идет речь.

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

Думаю что этого не произойдет, потому как, в реальности предъявить нечего.

Не буду категорично заявлять о развенчании этого мифа.
Пусть каждый для себя сделает выводы.


PS
Со своей стороны заявляю, что больше никогда не буду писать в профильных темах ecoins. Все выявленные недочеты и возможные альтернативы будут описываться здесь. И его же словами скажу: Если вам неинтересно мое мнение - не читайте. Ну а если сочтете нужным то милости просим, обсудим и найдем общее решение.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Развенчание мифов о "магических" библиотеках (Авторский блог)

#24

Сообщение Dryundel » 14.04.2023{, 12:34}

Dryundel писал(а):
15.09.2022{, 13:28}
Как вам наверное уже известно в контроллерах типа Arduino весь код выполняется последовательно, начиная с первой строчки и до последней, после чего выполнение начинается снова и так сотни и тысячи раз в секунду, это и есть циклы программы. Исключением являются прерывания, но это отдельная тема.
Так вот если в вашем проекте много "тяжелых" блоков то и время цикла увеличивается, а быстродействие падает.
Новые циклы по оптимизации проектов и простом понятном подходе к диспетчеризации ЗДЕСЬ

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

Развенчание мифов о "магических" библиотеках (Авторский блог)

#25

Сообщение ecoins » 16.04.2023{, 12:13}

===EЩЕ ОБ ОДНОМ "МИФЕ"(2.540 млн. циклов loop()/сек===
Сможет ли кто-нибудь развенчать этот "миф" от ecoins:
"На одном из стандартных стендов ecoins на Lcd через i2c выводится мерцающая звездочка(500мс) и быстройдействие в циклах lool() в сек.
Получилось >2537615(средняя >2.540млн, циклов в сек)."
20230416_120033.jpg
Вопросы:
1.Возможно ли это на FLProg в принципе?
2.Если да, то как это можно реализовать на FLProg?
3.Сможет ли это кто-то сейчас повторить?
Спасибо. Энвер.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Развенчание мифов о "магических" библиотеках (Авторский блог)

#26

Сообщение Dryundel » 16.04.2023{, 13:06}

ecoins писал(а):
16.04.2023{, 12:13}
Сможет ли кто-нибудь развенчать этот "миф" от ecoins:
Вижу только картинку. А на ней цифирька. :smile171: :smile171: :smile171: (Миф не доказан, а значит уже развенчан)


150 миллионов циклов и 5 мерцающих звездочек!!!
А еще 3 потенциометра!
И попробуйте доказать что это не так!
.
2023-04-16_142159.jpg
Последний раз редактировалось Dryundel 16.04.2023{, 14:29}, всего редактировалось 2 раза.

Аватара пользователя
ViktorPetrov
Лейтенант
Сообщения: 677
Зарегистрирован: 09.04.2018{, 23:56}
Репутация: 49
Имя: Виктор

Развенчание мифов о "магических" библиотеках (Авторский блог)

#27

Сообщение ViktorPetrov » 16.04.2023{, 13:07}

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

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

Развенчание мифов о "магических" библиотеках (Авторский блог)

#28

Сообщение ecoins » 16.04.2023{, 14:38}

ViktorPetrov писал(а):
16.04.2023{, 13:07}
Уважаемый Энвер ,в Вашем случаи правильней считать не время цикла ,общее время выполнение всех задач т.е. время выполнения всего кода ,а не кусочка кода ,как Вашем случае
Так и считается -сколько раз все задачи тестового проекта с lcd.i2c выполняются за 1 сек - получилось более 2.540.000 раз. Таким образом среднее время выполнения менее 400ns

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Развенчание мифов о "магических" библиотеках (Авторский блог)

#29

Сообщение Dryundel » 16.04.2023{, 14:40}

ecoins, вот когда будете здесь, тогда и поговорим.
2023-04-16_143342.jpg
Хотя бразды правления теперь в Ваших руках и нашельмовать с репутацией можно все что угодно.
Вот есть у меня вера в добродетель и надежда, что до этого все-таки не дойдет. Но как знать? :)

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

Развенчание мифов о "магических" библиотеках (Авторский блог)

#30

Сообщение ecoins » 16.04.2023{, 14:52}

Dryundel писал(а):
16.04.2023{, 13:06}
Вижу только картинку. А на ней цифирька. (Миф не доказан, а значит уже развенчан)
Наверное разобрался с природой рождаемых мифов - они появляются в силу непонимания технических вопросов, которые заменяются непросто нежеланием разобраться, но и переходят в область технического “мракобесия”. Дополнительно подтверждаю, что приведённые ecoins измерения выполнены на контроллере из Arduino IDE и проект(небольшой) выполнен на FLProg.
————
Относительно нарисованное в посте на дисплее подключённым к UNO цифры 1.500.000 - даже не знаю как к этому отнестись: то ли как к шутке, то как к жульничеству. Надеюсь что все же первое.
————-
Ответов на поставленные выше вопросы пока не получил, подробнее о полученных результатах напишу позже, вместе с новой версией библиотек.

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

Развенчание мифов о "магических" библиотеках (Авторский блог)

#31

Сообщение ecoins » 16.04.2023{, 14:56}

Dryundel писал(а):
16.04.2023{, 14:40}
ecoins, вот когда будете здесь, тогда и поговорим.
Репутация и честь очень разные качества.
Много людей с высокой репутацией растворялись в «небытие”. Вы были могли быть более содержательнее и успешнее если бы ориентировались на объединение усилий, достигать синергии и для себя и для других. К сожалению пока этого не происходит.

WildCat
Лейтенант
Сообщения: 422
Зарегистрирован: 04.06.2022{, 04:14}
Репутация: 48
Имя: Михаил

Развенчание мифов о "магических" библиотеках (Авторский блог)

#32

Сообщение WildCat » 16.04.2023{, 15:50}

ecoins писал(а):
16.04.2023{, 14:56}
>2.540млн, циклов в сек)."
Тут уместен вопрос: а какой камень? ;)

waswas
Рядовой
Сообщения: 44
Зарегистрирован: 04.04.2023{, 18:39}
Репутация: 2
Имя: Вася

Развенчание мифов о "магических" библиотеках (Авторский блог)

#33

Сообщение waswas » 16.04.2023{, 16:16}

ecoins писал(а):
16.04.2023{, 14:40}
Сможет ли кто-нибудь развенчать этот "миф" от ecoins
дайте проект флпрог или .bin
Последний раз редактировалось waswas 16.04.2023{, 17:11}, всего редактировалось 1 раз.

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

Развенчание мифов о "магических" библиотеках (Авторский блог)

#34

Сообщение ecoins » 16.04.2023{, 17:09}

WildCat писал(а):
16.04.2023{, 15:50}
Тут уместен вопрос: а какой камень? ;)
STM32, ранее упоминался в теме ecoins.

Аватара пользователя
bsn
Лейтенант
Сообщения: 347
Зарегистрирован: 22.07.2018{, 07:24}
Репутация: 90
Откуда: Ростовская обл.
Имя: Сергей

Развенчание мифов о "магических" библиотеках (Авторский блог)

#35

Сообщение bsn » 16.04.2023{, 19:37}

Позволю себе вставить свои пять копеек...
Dryundel писал(а):
16.04.2023{, 14:40}
ecoins, вот когда будете здесь, тогда и поговорим.
ОмарХайям.png
Я думаю, что талантливейший и уважаемый мною Андрей, к сожалению, иногда напоминает мне по поведениею того, кто постоянно агрессирует на слона. По крайней мере так это выглядит со стороны. Зачем?..
Твори, возвышайся на своих разработках. Я часто ставлю Андрею "+". Мои респект и уважение ему именно за это, а не за уколы других форумчан. Чем больше вы делаете именно последнее, тем печальнее мне. Дружеский совет, не нужно выставлять напоказ это:
https://theoryandpractice.ru/posts/8151 ... arcissists
ecoins писал(а):
16.04.2023{, 14:52}
Наверное разобрался с природой рождаемых мифов - они появляются в силу непонимания технических вопросов, которые заменяются непросто нежеланием разобраться, но и переходят в область технического “мракобесия”
Уважаемый Энвер, думаю, что вы не до конца разобрались.
То, что вы делаете большое и нужное дело по освоению микроконтроллеров - 100% факт.
Но то, что вы не делаете удобных и доступных описаний ваших разработок - тоже 100% факт.
Dryundel всегда тщательно готовит свои разработки к публикациям, прежде чем их выставить. Они всегда ясно и понятно описаны.
Вы:
(не желаете тратить на это время, вам это кажется и так понятным, умные сами разберутся, это разработки для специалистов а не для начинающих) - нужное подчеркнуть...
Никакого мифа и в помине нет. Самые лучшие описания ваших разработок сделал Dryundel.
Иных нет и в помине.
Почему вы, с железобетонным упорством, не желает признать проблему отсутствия нормальных описаний ваши разработок - не ведаю. Но это очевидно всем, кроме видимо вас самих.
Ваш караван идёт к намеченным вами целям.
Хающих вас я не одобряю. Но вы всё далее, и далее уходите в далёкий туман...
Основной массе форумчан за вами не угнаться...
Караван.jpg
Караван.jpg (8.4 КБ) 891 просмотр

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

Развенчание мифов о "магических" библиотеках (Авторский блог)

#36

Сообщение ecoins » 16.04.2023{, 21:58}

bsn писал(а):
16.04.2023{, 19:37}
Почему вы, с железобетонным упорством, не желает признать проблему отсутствия нормальных описаний ваши разработок - не ведаю. Но это очевидно всем, кроме видимо вас самих.
То, что нет описаний разработок - это миф. Они есть. Кому это требуется, они не только изучают разработки по описаниям, но имеют еще уникальную возможность обратиться к нам за оперативной и развернутой консультацией.
Насчет понимания наших разработок. Мы действительно вышли за границы простых приложений на UNO, Nano и тем пользователям, которые находятся в парадигме этих уже "древних" контроллеров не то, что сложно понять новые разработки, блоки, библиотеки, им и не хочется уходить из этой среды. Это их выбор. И довольно-таки бессмысленны исследования типа как в рамках FLProg заставить пины побыстрее работать. Да еще с ограничением только на AVR. На быстродействие реальных проектов скорость работы с пинами почти не влияет, там есть более значимые проблемы, например широкое использование переменных String.
И как ни странно, ускорение работы с пинами важно на ESP32, иначе в новых версиях ядра возникаю проблемы, например с DS1820. Он этим не занимался, для него это сложно....
=======
Насчет пользы, открытости, репутации и вреда от автора этой темы:
1.Мне не известны его разработки (блоки, библиотеки), собранные в одном месте, так чтобы было удобно ими воспользоваться. Все эти разработки, разбросанные про разным темам в разное время почти всегда при переходах даже между AVR и ESP приводят к проблемам. О других контроллерах (STM32, Raspberry Pi Pico) даже не упоминаю. Источник этих проблем понятен - он просто не хочет учиться, в том числе и на разработках(не только от ecoins), ему важнее "нравиться"... кому-то.
2.Об открытости - любые, повторюсь ЛЮБЫЕ попытки каких либо критических(в хорошем смысле, т.е. иная точка зрения) от ecoins всегда приводили к какой-то не обузданной агрессии. И все потому, что ему важнее "нравиться"...
3.По формальному показателю "репутация" на форуме, на которую он ссылается. По этому показателю он выше разработчика FLProg Сергея Глушенко. Означает ли это чего-то...
Означает, в том числе и то, что он последовательно прикладывает усилия, чтобы "нравиться"... Получает он их ну очень в огромных количествах за "очернении"работы других, да еще в грубой безапелляционной форме. Это многим "нравилось", и он получал свои "+". Тема ecoins оказалась особо благодатной - на ней он наверное собрал несколько сот "+"...
4.О вреде. Лично я потерял два года усилий, чтобы как-то выстроить отношения на форуме. Но мифология автора темы, типа "ecoins это плохо, не понятно, без описаний, не надежно, заумно, вредно и пр." взяло вверх на форуме и последствия ощущаются и сейчас.
То, что он оказался банальным "раскольником" FLProg-сообщества, это так.
То, что он просто без должного уважения относится к мнению Сергея Глушенко, в том числе и по разработкам и исследованиям ecoins, это тоже проявилось.
Похоже он искренне считает себя в области FLProg наивысшим авторитетом... Других он как-то не называл. На болезнь похоже...
-----
Энвер.

Аватара пользователя
bsn
Лейтенант
Сообщения: 347
Зарегистрирован: 22.07.2018{, 07:24}
Репутация: 90
Откуда: Ростовская обл.
Имя: Сергей

Развенчание мифов о "магических" библиотеках (Авторский блог)

#37

Сообщение bsn » 16.04.2023{, 22:53}

ecoins, не буду обсуждать все пункты. Слишком там уж много личных моментов, встревать не хочу.
Ссылку как, по моему мнению, выглядит со стороны поведение вашего оппонента приводил выше.

Если бы вы признали наличие проблемы с описанием ваших, действительно классных, разработок это было бы одно дело.
Вы спецы в программировании, спецами в составлении удобоваримых для пользователей описаний может быть и не являетесь. Ничего страшного. Быть может нашлись бы люди на форуме которые смогли бы вам помочь и с этой частью вашей работы.
Но, другое дело, когда вы категорически отказываетесь признавать наличие проблемы как таковой:
ecoins писал(а):
16.04.2023{, 21:58}
То, что нет описаний разработок - это миф. Они есть.
Давайте сравнивать факты.
Это описание вашей разработки "Диспетчер задач" сделанное силами Dryundel (имеются и иные описания им ваших разработок):
1) viewtopic.php?f=247&t=5853
Вот, для примера, пояснительные рисунки, к этой теме, сделанные им же:
2)
ДиспетчерЗадач.png
Далее пробуем применить метод сравнения, вполне себе признаваемый любым техническим или научным сообществом.
Пожалуйста, приведите:
1) Ссылки (ссылку) на ваши описания ваших разработок,
2) Для сравнения, прошу привести ваши пояснительные рисунки к вашей теме (но не фото дисплеев и ардуин, а именно пояснительные схемы).

Одно из двух, или их действительно нет, а вы выдаёте желаемое за действительное. Быть может вы искренне заблуждаетесь в соей уверенности, что они ничем не уступают тому, что сделал в своё время для вас Dryundel.
Или, может быть, заблуждаются форумчане, считающие что таковых, толковых, описаний разработок ecoins нет.

Метод сравнения покажет есть ли разница, и в чём она заключается.

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

Развенчание мифов о "магических" библиотеках (Авторский блог)

#38

Сообщение ecoins » 16.04.2023{, 23:18}

bsn писал(а):
16.04.2023{, 22:53}
Далее пробуем применить метод сравнения, вполне себе признаваемый любым техническим или научным сообществом.
bsn писал(а):
16.04.2023{, 22:53}
Метод сравнения покажет есть ли разница, и в чём она заключается.
Очень много имел и имею дело с так называемым "научном сообществе" . Это те кто любят поговорить, но мало что умеют делать.
Насим Николасс Талеб о таких писал, что-то вроде "они все время пытаются научить воробья летать".
Интересно его исследования из которого следует, что заслуги технического развития в основном принадлежат инженерам, а академики после создания изделия создают теории как и почему это заработало. Дело безусловно полезное, но оно не первично.
Относительно диспетчера. Это одна из самых простых наших разработок и те кому надо, ею успешно пользуются.
А если не пользоваться, а только рассуждать о достоинствах и недостатках, то много картинок можно нарисовать и текстов написать.
Кому от этого польза? В том числе и для тех кто пытается научить "воробьев летать".
Ниже полный код диспетчера:
Диспетчер,кодПоказать
//=================================================================================================
// Диспетчер задач
//=================================================================================================
void sheduler(){
shed.ready=1; //--Флаг запуска диспетчера;
shed.event=0; shed.quick.num=shed.fast.num=shed.slow.num=shed.back.num=shed.frdm.num=0; shed.eventSec=0;//--Сброс парметров;
++shed.cntCycle; shed.control^=1; //--Контрольный сигнал loop();
//-------------------------------------------------------------------------------------------------
if(period(shed.timeStart10,micros(),10000)) {shed.run^=1; shed.event^=1; shed.blink10^=1; //--Оператив. задача,blink10 10ms;
if(++shed.workSec>=100){shed.workSec=0; shed.cntSec++; shed.eventSec=1; shed.blinkSec^=1; //--Время работы (сек);
shed.cycle=shed.cntCycle; shed.cntCycle=0; shed.smallCycle=(uint16_t)round(((float)shed.cycle)/1000);}}//--Быстродействие проекта;
//-------------------------------------------------------------------------------------------------
if(period(shed.timeStart25,RT_HW_MILLIS,25)) {shed.run^=(1<<1); shed.event^=(1<<1); shed.blink25^=1; //--Быстрая задача,blink25 25ms;
if(!shed.blink25) {shed.blink50^=1;} //-- blink50 50ms;
if(++shed.cnt250 >=10){shed.cnt250=0; shed.run^=(1<<2); shed.event^=(1<<2); shed.blink250^=1; //--Медленная задача,blink25 25ms;
if(!shed.blink250){shed.blink500^=1;}} // blink500 500ms;
if(++shed.cnt100 >= 4){shed.cnt100=0; shed.run^=(1<<3); shed.event^=(1<<3); shed.blink100^=1;} //--Фоновая задача,blink100 100ms;
}
//------------------------------------Обработка вызова задач---------------------------------------
if(shed.run){
if(bitRead(shed.run,0)) {if(++shed.quick.cnt>shed.quick.qnt){shed.quick.cnt=1;} shed.quick.num=shed.quick.cnt; bitClear(shed.run,0); return;}
if(bitRead(shed.run,1)) {if(++shed.fast.cnt >shed.fast.qnt) {shed.fast.cnt =1;} shed.fast.num =shed.fast.cnt; bitClear(shed.run,1); return;}
if(bitRead(shed.run,2)) {if(++shed.slow.cnt >shed.slow.qnt) {shed.slow.cnt =1;} shed.slow.num =shed.slow.cnt; bitClear(shed.run,2); return;}
if(bitRead(shed.run,3)) {if(++shed.back.cnt >shed.back.qnt) {shed.back.cnt =1;} shed.back.num =shed.back.cnt; bitClear(shed.run,3); return;}
}
else{shed.event^=(1<<4); if(++shed.frdm.cnt >shed.frdm.qnt) {shed.frdm.cnt =1;} shed.frdm.num =shed.frdm.cnt; return;}
};
//=================================================================================================
С уважением, Энвер.

Аватара пользователя
bsn
Лейтенант
Сообщения: 347
Зарегистрирован: 22.07.2018{, 07:24}
Репутация: 90
Откуда: Ростовская обл.
Имя: Сергей

Развенчание мифов о "магических" библиотеках (Авторский блог)

#39

Сообщение bsn » 16.04.2023{, 23:49}

ecoins,
Спасибо за "развёрнутый" ответ.
То бишь сравнивать не с чем.
Что и требовалось доказать.
Дискуссию считаю законченной.
С уважением, Сергей.

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

Развенчание мифов о "магических" библиотеках (Авторский блог)

#40

Сообщение ecoins » 17.04.2023{, 00:09}

bsn писал(а):
16.04.2023{, 23:49}
То бишь сравнивать не с чем.
Что и требовалось доказать.
Дискуссию считаю законченной.
Лаконично.
И все же что-же приведено в описании к блоку, которое Вы и критики не читаете:
--------------------------------
ДИСПЕТЧЕР ЗАДАЧ:
В каждый момент времени генерирует только один отличный от нуля номер задач одного из типов задач (оперативные,
быстрые,медленные,фоновые,свободные).
В проектах FLprog рекомендуется размещать диспетчер на одной из первых плат FLProg (выше только платы настройки с однократным выполнением).
Эта плата должна вызываться в каждом цикле loop (платы без условий вызова).

ОСНОВНЫЕ выходы диспетчера (подключаемые):
control - изменяется значение (0/1) в каждом цикле loop() для наблюдения логическим анализатором.
quick – номера оперативных задач (по умолчанию 5 задач, период смены задачи 10 мс);
fast – номера быстрых задач (по умолчанию 4 задач, период смены задачи 25 мс);
slow – номера медленных задач (по умолчанию 4 задачи, период смены задачи 250 мс);
back – номера фоновых задач (по умолчанию 5 задач, период смены задачи 100 мс);
frdm - номера свободных задач (по умолчанию 25 задач). Эти задачи без периода, номера последовательно
изменяются в циклах, когда номера предыдущих задач равны 0;
Кол-во задач каждой из задач могут быть изменены.
Подробнее под спойлером.
--------------------------------
Описания диспетчера в блоке диспетчераПоказать
ДИСПЕТЧЕР ЗАДАЧ:
В каждый момент времени генерирует только один отличный от нуля номер задач одного из типов задач (оперативные,
быстрые,медленные,фоновые,свободные).
В проектах FLprog рекомендуется размещать диспетчер на одной из первых плат FLProg (выше только платы настройки с однократным выполнением).
Эта плата должна вызываться в каждом цикле loop (платы без условий вызова).

ОСНОВНЫЕ выходы диспетчера (подключаемые):
control - изменяется значение (0/1) в каждом цикле loop() для наблюдения логическим анализатором.
quick – номера оперативных задач (по умолчанию 5 задач, период смены задачи 10 мс);
fast – номера быстрых задач (по умолчанию 4 задач, период смены задачи 25 мс);
slow – номера медленных задач (по умолчанию 4 задачи, период смены задачи 250 мс);
back – номера фоновых задач (по умолчанию 5 задач, период смены задачи 100 мс);
frdm - номера свободных задач (по умолчанию 25 задач). Эти задачи без периода, номера последовательно
изменяются в циклах, когда номера предыдущих задач равны 0;
Кол-во задач каждой из задач могут быть изменены.

ДОПОЛНИТЕЛЬНЫЕ выходы диспетчера (секундные):
eventSec - cекундные события;
timeSec(uint32_t) - количество секунд, прошедших с начала работы программы;
Speed(uint32_t) - быстродействие проекта в количестве циклов loop()/sec;
speed(uint16_t) - быстродействие проекта в количестве циклов loop()/sec;

Параметры быстродействия могут быть отфильтрованы фильтром "Бегущего среднего".
Фильтр включается установкой значения параметра "Фильтр бегущего среднего" >1(2,4,6,8,10 и т.д.).
При включенном фильтре вместо выходов Speed,speed, будут выходы SpeedFilter,speedFilter.

ДОПОЛНИТЕЛЬНЫЕ выходы диспетчера (меандры):
меандр - 10ms;
меандр - 25ms;
меандр - 50ms;
меандр - 100ms;
меандр - 250ms;
меандр - 1000ms;
Указаны длительности полупериодрв меандров.

ДОПОЛНИТЕЛЬНЫЕ выходы диспетчера (консоль):
console.ok - флаг готовности консоли для вывода;
console.head - флаг готовности вывода заголовков на консоль(событие). Устанавливается на один цикл loop();
Может быть использован для однократного вывода на консоль различных текстов с параметрами,
например используемые в проекте номера пинов, адресов, констант, параметров контроллера и т.п.;
console.all - флаг готовности консоли для вывода в следующем цикле loop() после собыьтя console.head

Имеются дополнительные блоки FLProg по каждой группе ДОПОЛНИТЕЛЬНЫХ ВЫХОДОВ.

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Описание используемого фильтра "Бегущего среднего"
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Фильтр бегущего среднего.
Алгоритм фильтра работает по принципу буфера, в котором для усреднения хранятся N последних измерений.
При каждом вызове фильтра буфер сдвигается, в него добавляется новое значение и убирается самое старое,
далее буфер усредняется по среднему арифметическому.

При первых четырех вызовах(настраиваемый параметр) буфер заполняется только текущим принятым значением.
Рекомендуется выбирать N четным.
Фильтр быстрый. Ниже приведены замеры для N=32:
Arduino Nano int16_t=44-48 мкс; float= 32 мкс;
ESP32S int16_t=2-4 мкс; float=4-6 мкс;
STM32F103C int16_t=1-2 мкс; float=4-5 мкс;
STM32F401CC int16_t=1-2 мкс; float=1-2 мкс;
RaspBerry Pi Pico int16_t<1 мкс; float=2 мкс;

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Краткое описание диспетчера задач (для разработчиков блоков FLProg)
RT_HW_Base.sheduler() в библиотеке RT_HW_BASE.h
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Используемые термины:
Номер задачи - байтовая переменная (uint8_t).
Событие - значение, которое сохраняет значение в течении текущего цикла loop(),
В начале следующего цикла значение сбрасывается(=0).
Диспетчер - функция RT_HW_Base.sheduler() из библиотеки RT_HW_BASE.h.
Задача - законченная совокупность запрограммируемых пользователем действий.
Проект - совокупность задач.
Программное прерывание - микрооперация функции с выходом из неё с фиксацией точки прерывания.
При следующем функции она возобновляет работу с точки прерывания.

Диспетчер генерит номера 5-ти типов задач(перечень по приоритету): оперативные,быстрые,медленные,фоновые,свободные.
Номера задач используется для управления вызовом задач.
Диспетчер должен вызываться в каждом цикле loop().

При каждом вызове диспетчер генерит отличный от нуля один из 5-ти номеров задачи.
Это значение которого сохраняется в течении текущего цикла loop(), в начале следующего цикла все номера задач
сбрасываются(=0).

Номера задач (перечнь по приоритету) изменяюся периодически или в случае со свободными задачами последовательно:
Оперативная задача(RT_HW_Base.shed.num.quick) - периодически( 10ms) от 1 до RT_HW_Base.shed.quick.qnt(default=5);
Быстрая задача(RT_HW_Base.shed.num.fast) - периодически( 25ms) от 1 до RT_HW_Base.shed.fast.qnt (default=4);
Медленная задача(RT_HW_Base.shed.num.slow) - периодически(250ms) от 1 до RT_HW_Base.shed.slow.qnt (default=4);
Фоновая задача(RT_HW_Base.shed.num.fast) - периодически(100ms) от 1 до RT_HW_Base.shed.back.qnt (default=5);
Свободная задача(RT_HW_Base.shed.num.frdm) - последовательно от 1 до RT_HW_Base.shed.frdm.qnt (default=25);

Для сохранения логики работы диспетчера не следует создавать задачи, которые с управлением более чем 7-8ms
при вызове задачи. Для этого в задачах следует использовать функции с программным прерыванием.

Номера свободных задач изменяются в каждом цикле loop() если уже не назначен номер другой задачи.
Исходя из логики работы диспетчера чаще всего вызываются свободные задачи.

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

Применение диспетчера позволяет существенно увеличить скорость выполнения пользовательских проектов.

Для эффективного использования диспетчера используемые функции не должны содержать функций delay()
или иных узлов, которые приводят к длительному выполнению функций. Обычно это достигается через применение программных прерываний.
Этим требованиям удовлетворяют библиотеки разработчика ecoins@mail.ru, их названия начинаются с префикса "RT_HW_".
Использования библиотек других разработчиков могут привезти к существенному снижению скорости проектов и это не зависит
от того используется диспетчер или нет.
---------------------------------------------------------------------------------------------------
Дополнительные выходы диспетчера:
RT_HW_Base.shed.control(uint8_t) - каждый цикл loop() меняет инвертирует значение (0/1). Если значение control выводить на пин,
то с помощью логического анализатора можно получить много полезной информации о работе проекта.
RT_HW_Base.shed.eventSec(uint8_t)- событие 1 раз в сек.
RT_HW_Base.shed.blinkSec(uint8_t)- меандр с полупериодом 1 сек.
RT_HW_Base.shed.cycle(uint32_t) - быстродействие в loop()/сек.
RT_HW_Base.shed.smallCycle(uint16_t) - быстродействие в loop()/сек/1000.
RT_HW_Base.shed.cntSec(uint32_t) - время наработки в сек;
bitRead(RT_HW_Base.shed.eventBlink,0)- событие loop().
bitRead(RT_HW_Base.shed.eventBlink,1)- событие 10ms.
bitRead(RT_HW_Base.shed.eventBlink,2)- событие 25ms.
bitRead(RT_HW_Base.shed.eventBlink,3)- событие 50ms.
bitRead(RT_HW_Base.shed.eventBlink,4)- событие 100ms.
bitRead(RT_HW_Base.shed.eventBlink,5)- событие 250ms.
bitRead(RT_HW_Base.shed.eventBlink,7)- событие 1000ms.
---------------------------------------------------------------------------------------------------
ecoins@mail.ru 20.12.2022г.
========================================
Вы и это имели ввиду, когда настаиваете на том, что диспетчер не имеет описания?

Ответить

Вернуться в «Читальный зал»