Диспетчер задач by Alex Gyver

Пользовательские блоки дополняющие набор стандартных блоков
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Аватара пользователя
Phazz
Полковник
Сообщения: 2558
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

Диспетчер задач by Alex Gyver

#1

Сообщение Phazz » 28.08.2022{, 18:40}

Диспетчер задач сделанный на библиотеке https://github.com/GyverLibs/GyverOS



Добавлен информационный вход включения ручного режима задачи.
Благодарность Rovki, за тестирование
Вложения
GyverOS 1.2.flp
(1.41 МБ) 113 скачиваний
Последний раз редактировалось Phazz 21.09.2022{, 21:10}, всего редактировалось 4 раза.

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

Диспетчер задач by Alex Gyver

#2

Сообщение ecoins » 28.08.2022{, 20:57}

Очень и очень любопытный подход.
Остерегаюсь обсуждения с искрами сомнения, которые могут некоторыми участниками форума боленено восприняты как "критика".
Подождал немного, тема интересная ("Диспетчер задач"), попробую что-то написать, возможно буду первым.
1.Интересен и подход, и код от библиотеки Gyver, подсмотрел там любопытное и полезное.
2.FLProg предлагает, подразумевает некоторые новые возможности и также некоторые ограничения, по сравнению с проектом просто на С++.
3.В FLProg заложена и использована одна из ключевых возможностей этой системы - вызов плат по условию. Она появилась не сразу, до неё приходилось как-то "кривоватые" решения подыскивать.
4.На мой взгляд задачей, как единицей проектирования", должна рассматриваться плата или совокупность плат, которые вызываются по условию. Еще очень полезным подспорьем оказался метод "Контакт".
В выложенном Вами тестовом примере на плате 4 завершается задача 1, начинается задача 4, которая завершается на плате 5. Как-то мудрено немного...
5.Еще одна полезная возможность FLProg(и мы ей часто пользуемся при отладке проектов), это отключение платы из процесса компиляции. В предложенном "Диспетчере задач" это можно делать если на каждой плате есть начальный и завершающий блок.
6.В FLProg нет пока жесткого метода выполнения последовательности блоков, как следствие потребуется на каждой плате контролировать эту последовательность вручную, а она может сбиться случайным образом, что может привести к неожиданным и непредсказуемым результатам...
7.Мне представляется, что предложенная библиотека больше подходит для проектов на C++ , и не лучший способ для FLProg.
8.Периодический вызов задач( (если это одна или несколько задач) достаточно просто реализовать и средствами FLProg - это
генератор + триггер по фронту + bool переменная.
По этой переменной можно вызывать требуемую плату (или несколько плат) по условию bool переменная =1. Мы это называем "Вызов по событию". Таких конструкций можно скажем поставить на первой плате неограниченное кол-во и вызывать соотвественно много разных задач.
9.Средствами FLProg можно реализовать и приоритет, и блокирование задач не только по времени, но и дополнительным условиям (пины, счетчики и т.п.).
10.Если требуется что-то поизящнее с приоритетами, заданием кол-ва задач, самое главное, выделение процессорного ресурса когда все периодические задачи уже выполнены, посмотрите на решения "Диспетчера задач" от ecoins - там и код покомпактней, и скорее всего немного побыстрее. Это код находится в библиотеке RT_HW_Base.h ->BASE_030_API_Time.h->API_031_TimerSheduler_h. К слову там реализован любопытный точный генератор с защитой от переполнения от Gyver, которому в свою очередь еще кто-то предложил (на его сайте есть описание).
-------------
Тема планирования задач в FLProg и важная, и полезная, исследования в этом направлении интересны и нужны.
Успехов.

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

Диспетчер задач by Alex Gyver

#3

Сообщение Dryundel » 28.08.2022{, 21:12}

ecoins писал(а):
28.08.2022{, 20:57}
Если требуется что-то поизящнее с приоритетами, заданием кол-ва задач, самое главное, выделение процессорного ресурса когда все периодические задачи уже выполнены, посмотрите на решения "Диспетчера задач" от ecoins - там и код покомпактней, и скорее всего немного побыстрее. Это код находится в библиотеке RT_HW_Base.h ->BASE_030_API_Time.h->API_031_TimerSheduler_h.
ecoins, здесь не пишется библиотека, а используется готовая. Это ваше предложение мне кажется не совсем уместным. Может быть оно будет полезно AlexGyver. Попробуйте с ним связаться.
Ваша ревность в принципе понятна, но не смотря на то, что:
ecoins писал(а):
28.08.2022{, 20:57}
Мне представляется, что предложенная библиотека больше подходит для проектов на C++ , и не лучший способ для FLProg.
Этой библиотекой можно пользоваться и делать это легко и удобно.

Аватара пользователя
Phazz
Полковник
Сообщения: 2558
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

Диспетчер задач by Alex Gyver

#4

Сообщение Phazz » 28.08.2022{, 21:54}

ecoins, да тут другой подход к выполнению задач. Можно считать это просто альтернативой куче таймеров и условий если это делать все на блоках. Но есть еще одно преимущество. Эти задачи можно вызывать по прерыванию моментально а не ждать пока дойдет до них очередь.

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

Диспетчер задач by Alex Gyver

#5

Сообщение ecoins » 28.08.2022{, 22:29}

Phazz писал(а):
28.08.2022{, 21:54}
ecoins, да тут другой подход к выполнению задач. Можно считать это просто альтернативой куче таймеров и условий если это делать все на блоках. Но есть еще одно преимущество. Эти задачи можно вызывать по прерыванию моментально а не ждать пока дойдет до них очередь.
Да, конечно.
И в этом еще одна "засада" - в прерываниях.
Это может привести к нарушению работы некоторых блоков, которые к этому не приспособлены, например блок измерения HC-SR04, DHT-22.
Впрочем прерываний создающих проблем в реальных проектах и так достаточно.
Как ни странно 3-й год совершенствую блок ds1820 и получаю новые откровения.
Все хорошо работает с AVR, если нет скажем быстрого счетчика по прерываниям и ли как в нашем случае блок HC-SR04 по прерыванию.
Посылки между контроллерами не просто длинные, но еще требуют запрета прерываний ....
Еще большая проблема с ESP8266 и ESP32 - там еще и CORE меняют в части работы с прерываниями, что приводит порой либо к ошибкам компиляции, либо еще хуже к перезагрузке процессора.
Эти проблемы в основном удалось преодолеть. Как ни странно самым чувствительным к скорости обмена чрез дискретный вывод оказался ESP32 - оказалось иллюзией его высокое быстродействие - 240 мгц это для Wi-Fi, а как процессор он порой реально скатывается по быстродействию к AVR.
Так вот когда и WiFi работает (а он по прерываниям) , многие блок DS1820 испытывает трудности.
Похоже нашли хитроумный способ условного преодоления этих проблем, но это путем встраивания в библиотеку целого многоступенчатого планировщика обмена транзакциями с DS1820. Сейчас тестируем, если получится выложим в отдельной ветке.
--------
Таким образом введение еще одного прерывания с принудительным переключения задач, может порождать новый список проблем, он не короткий. Собственно часть из них схож и при работе с 2-я ядрами- требует специальных действий для избежания конфликтов.
Собственно почти все традиционные библиотеки работы с устройствами оказываются в зоне риска.
-------
Разработки AlexGyver основательны и интересны. И разработки других авторов.
Но как-то все грешат тем, что замалчивают о проблемах:
1.которые проявляются на разных контроллерах;
2.о встроенных тормозах - повсеместно используется delay() на значительные времена;
3.о возможных проблемах с прерываниями от одновременно работающих устройств разных разработчиков;
4.и порой просто о конфликтах с другими библиотеками.
-------
Как-то так об аккуратности использования прерываний на простых контроллерах без специальных операционных систем.
FreeRTOS проблем всех не решает, но добавляет новая.
-------
За предложенные решения спасибо - они полезны, интересны, помогают расширить кругозор о проблемах практического использования вроде бы простого устройства - контроллера под Arduino.
-------
Успехов.

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

Диспетчер задач by Alex Gyver

#6

Сообщение Dryundel » 28.08.2022{, 22:54}

Вот о чем человек написал? Про что эти нескончаемые тексты? Какое отношение они имеют к новому проекту топикстартера?
Складывается впечатление, что специально нагоняется пурга, что бы все поняли - все кроме разработок ecoins туфта и даже не стоит начинать.
А в конце, так ехидно:
ecoins писал(а):
28.08.2022{, 22:29}
Успехов.

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

Может почистить все, что после первого поста? И дать возможность топикстартеру сделать нормальное описание.

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

Диспетчер задач by Alex Gyver

#7

Сообщение Rovki » 29.08.2022{, 08:12}

Предупрежден , значит вооружен . Вот и все ! Причем из практики ...А дальше пользователь решит, что ему использовать и к кому обращаться за помощью ,если что...
Автору поста отдельное спасибо за разнообразие и труд.
Электронщик до мозга костей и не только

krom23
Лейтенант
Сообщения: 444
Зарегистрирован: 06.09.2015{, 15:18}
Репутация: 12
Откуда: Калуга
Имя: Андрей

Диспетчер задач by Alex Gyver

#8

Сообщение krom23 » 15.09.2022{, 22:53}

Phazz, спасибо, на первый взгляд вроде всё понятно, попробую. Кстати, не пора ли обновиться, вышла версия 1.2.1.

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

Диспетчер задач by Alex Gyver

#9

Сообщение Dryundel » 16.09.2022{, 09:46}

krom23 писал(а):
15.09.2022{, 22:53}
Кстати, не пора ли обновиться, вышла версия 1.2.1.
Просто скачайте новую библиотеку и удалите старую. Как правило блоки сделанные на предыдущих версиях библиотек AlexGyver, прекрасно работают и со свежими, в отличии от библиотек некоторых других авторов.

Аватара пользователя
Phazz
Полковник
Сообщения: 2558
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

Диспетчер задач by Alex Gyver

#10

Сообщение Phazz » 16.09.2022{, 10:39}

Нумерация версии блока не имеет отношения к нумерации версии библиотеки.

krom23
Лейтенант
Сообщения: 444
Зарегистрирован: 06.09.2015{, 15:18}
Репутация: 12
Откуда: Калуга
Имя: Андрей

Диспетчер задач by Alex Gyver

#11

Сообщение krom23 » 16.09.2022{, 11:58}

Спасибо ребята, я так и понял/сделал. Пойду почитаю, что люди пишут, что написал Алекс, прочитал.

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

Диспетчер задач by Alex Gyver

#12

Сообщение Rovki » 16.09.2022{, 12:47}

Dryundel писал(а):
16.09.2022{, 09:46}
krom23 писал(а):
15.09.2022{, 22:53}
Кстати, не пора ли обновиться, вышла версия 1.2.1.
Просто скачайте новую библиотеку и удалите старую. Как правило блоки сделанные на предыдущих версиях библиотек AlexGyver, прекрасно работают и со свежими, в отличии от библиотек некоторых других авторов.
Успокойтесь уже наконец ,без грязных намеков ...И не говорите, что вас в очередной раз ни так поняли.
Электронщик до мозга костей и не только

krom23
Лейтенант
Сообщения: 444
Зарегистрирован: 06.09.2015{, 15:18}
Репутация: 12
Откуда: Калуга
Имя: Андрей

Диспетчер задач by Alex Gyver

#13

Сообщение krom23 » 17.09.2022{, 20:38}

Rovki, вы писали в соседней теме, что используете блоки от ecoins без диспетчера задач. Какие блоки можно использовать таким образом? Просто я не в теме три года как. Вот думаю скрестить ужа с ежом, диспетчер от Alex Gyver, а блоки от "некоторых других авторов", раз уж они так хороши, с ваших слов.

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

Диспетчер задач by Alex Gyver

#14

Сообщение Ingwar » 17.09.2022{, 22:23}

krom23 писал(а):
17.09.2022{, 20:38}
Вот думаю скрестить ужа с ежом
Да, мне тоже очень любопытно увидеть реальный пример использования.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

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

Диспетчер задач by Alex Gyver

#15

Сообщение Rovki » 18.09.2022{, 09:05}

krom23 писал(а):
17.09.2022{, 20:38}
Rovki, вы писали в соседней теме, что используете блоки от ecoins без диспетчера задач. Какие блоки можно использовать таким образом? Просто я не в теме три года как. Вот думаю скрестить ужа с ежом, диспетчер от Alex Gyver, а блоки от "некоторых других авторов", раз уж они так хороши, с ваших слов.
Любые ,что есть в его примерах , с вопросами обращайтесь к автору этих блоков. Но помните ,могут быть проблемы с этим диспетчером ,работающий по прерываниям с теми блоками у которых длинная посылка и штатными коммуникациями которые также используют прерывания... :smile37:
Электронщик до мозга костей и не только

Аватара пользователя
Phazz
Полковник
Сообщения: 2558
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

Диспетчер задач by Alex Gyver

#16

Сообщение Phazz » 18.09.2022{, 09:25}

Rovki, вообще ни каких проблем с прерыванием и прочим не будет.

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

Диспетчер задач by Alex Gyver

#17

Сообщение Dryundel » 18.09.2022{, 10:08}

Phazz, для кого то это действительно магия о том и предупреждение. :)
с вопросами обращайтесь к автору этих блоков. Но помните ,могут быть проблемы...
Как в сказке. "Но помни, ровно в полночь карета превратиться в тыкву!"

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

Диспетчер задач by Alex Gyver

#18

Сообщение Rovki » 18.09.2022{, 11:21}

Dryundel писал(а):
18.09.2022{, 10:08}
Откуда: Сургут
Вы сюда сказки пришли читать?( флудить)
Электронщик до мозга костей и не только

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

Диспетчер задач by Alex Gyver

#19

Сообщение Ingwar » 18.09.2022{, 11:23}

Rovki писал(а):
18.09.2022{, 11:21}
Вы сюда сказки пришли читать?( флудить)
Впрочем как и вы))
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

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

Диспетчер задач by Alex Gyver

#20

Сообщение Rovki » 18.09.2022{, 11:32}

Phazz писал(а):
18.09.2022{, 09:25}
Rovki, вообще ни каких проблем с прерыванием и прочим не будет.
Уважаемый Phazz, Проверьте простой пример - слейв есп ,мастер каскада (модбас ТСР) читает всего 1 переменную. 2 задача вывод константы в уарт на консоль , включите вывод данных на консоль
testGyverOS 1.0 (1).rar
(28.55 КБ) 33 скачивания
диспетчер.rar
(1.98 КБ) 26 скачиваний
:smile427:
второй файл это проект на каскаде, другой нет , а вы можете использовать любую

Отправлено спустя 2 минуты 20 секунд:
Ingwar писал(а):
18.09.2022{, 11:23}
Rovki писал(а):
18.09.2022{, 11:21}
Вы сюда сказки пришли читать?( флудить)
Впрочем как и вы))
мне был задан вопрос ,я дал ответ , потом дал автору конкретный пример , адвокатов я не вызывал , тем более для флуда
Screenshot_2022-09-18-11-38-33-127_ru.kablov.kascada_full.modbus.jpg
Электронщик до мозга костей и не только

Ответить

Вернуться в «Триггеры, таймеры, счетчики, детекторы сигнала»