Страница 1 из 5

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

Добавлено: 28 авг 2022, 18:40
Phazz
Диспетчер задач сделанный на библиотеке https://github.com/GyverLibs/GyverOS



Добавлен информационный вход включения ручного режима задачи.
Благодарность [ref]Rovki[/ref], за тестирование

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

Добавлено: 28 авг 2022, 20:57
ecoins
Очень и очень любопытный подход.
Остерегаюсь обсуждения с искрами сомнения, которые могут некоторыми участниками форума боленено восприняты как "критика".
Подождал немного, тема интересная ("Диспетчер задач"), попробую что-то написать, возможно буду первым.
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 и важная, и полезная, исследования в этом направлении интересны и нужны.
Успехов.

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

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

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

Добавлено: 28 авг 2022, 21:54
Phazz
[ref]ecoins[/ref], да тут другой подход к выполнению задач. Можно считать это просто альтернативой куче таймеров и условий если это делать все на блоках. Но есть еще одно преимущество. Эти задачи можно вызывать по прерыванию моментально а не ждать пока дойдет до них очередь.

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

Добавлено: 28 авг 2022, 22:29
ecoins
Phazz писал(а): 28 авг 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.
-------
Успехов.

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

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

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

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

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

Добавлено: 29 авг 2022, 08:12
Rovki
Предупрежден , значит вооружен . Вот и все ! Причем из практики ...А дальше пользователь решит, что ему использовать и к кому обращаться за помощью ,если что...
Автору поста отдельное спасибо за разнообразие и труд.

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

Добавлено: 15 сен 2022, 22:53
krom23
[ref=#808080]Phazz[/ref], спасибо, на первый взгляд вроде всё понятно, попробую. Кстати, не пора ли обновиться, вышла версия 1.2.1.

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

Добавлено: 16 сен 2022, 09:46
Dryundel
krom23 писал(а): 15 сен 2022, 22:53 Кстати, не пора ли обновиться, вышла версия 1.2.1.
Просто скачайте новую библиотеку и удалите старую. Как правило блоки сделанные на предыдущих версиях библиотек AlexGyver, прекрасно работают и со свежими, в отличии от библиотек некоторых других авторов.

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

Добавлено: 16 сен 2022, 10:39
Phazz
Нумерация версии блока не имеет отношения к нумерации версии библиотеки.

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

Добавлено: 16 сен 2022, 11:58
krom23
Спасибо ребята, я так и понял/сделал. Пойду почитаю, что люди пишут, что написал Алекс, прочитал.

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

Добавлено: 16 сен 2022, 12:47
Rovki
Dryundel писал(а): 16 сен 2022, 09:46
krom23 писал(а): 15 сен 2022, 22:53 Кстати, не пора ли обновиться, вышла версия 1.2.1.
Просто скачайте новую библиотеку и удалите старую. Как правило блоки сделанные на предыдущих версиях библиотек AlexGyver, прекрасно работают и со свежими, в отличии от библиотек некоторых других авторов.
Успокойтесь уже наконец ,без грязных намеков ...И не говорите, что вас в очередной раз ни так поняли.

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

Добавлено: 17 сен 2022, 20:38
krom23
[ref=#ff8000]Rovki[/ref], вы писали в соседней теме, что используете блоки от ecoins без диспетчера задач. Какие блоки можно использовать таким образом? Просто я не в теме три года как. Вот думаю скрестить ужа с ежом, диспетчер от Alex Gyver, а блоки от "некоторых других авторов", раз уж они так хороши, с ваших слов.

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

Добавлено: 17 сен 2022, 22:23
Ingwar
krom23 писал(а): 17 сен 2022, 20:38 Вот думаю скрестить ужа с ежом
Да, мне тоже очень любопытно увидеть реальный пример использования.

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

Добавлено: 18 сен 2022, 09:05
Rovki
krom23 писал(а): 17 сен 2022, 20:38 [ref=#ff8000]Rovki[/ref], вы писали в соседней теме, что используете блоки от ecoins без диспетчера задач. Какие блоки можно использовать таким образом? Просто я не в теме три года как. Вот думаю скрестить ужа с ежом, диспетчер от Alex Gyver, а блоки от "некоторых других авторов", раз уж они так хороши, с ваших слов.
Любые ,что есть в его примерах , с вопросами обращайтесь к автору этих блоков. Но помните ,могут быть проблемы с этим диспетчером ,работающий по прерываниям с теми блоками у которых длинная посылка и штатными коммуникациями которые также используют прерывания... :smile37:

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

Добавлено: 18 сен 2022, 09:25
Phazz
[ref=#ff8000]Rovki[/ref], вообще ни каких проблем с прерыванием и прочим не будет.

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

Добавлено: 18 сен 2022, 10:08
Dryundel
[ref=#808080]Phazz[/ref], для кого то это действительно магия о том и предупреждение. :)
с вопросами обращайтесь к автору этих блоков. Но помните ,могут быть проблемы...
Как в сказке. "Но помни, ровно в полночь карета превратиться в тыкву!"

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

Добавлено: 18 сен 2022, 11:21
Rovki
Dryundel писал(а): 18 сен 2022, 10:08 Откуда: Сургут
Вы сюда сказки пришли читать?( флудить)

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

Добавлено: 18 сен 2022, 11:23
Ingwar
Rovki писал(а): 18 сен 2022, 11:21 Вы сюда сказки пришли читать?( флудить)
Впрочем как и вы))

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

Добавлено: 18 сен 2022, 11:34
Rovki
Phazz писал(а): 18 сен 2022, 09:25 [ref=#ff8000]Rovki[/ref], вообще ни каких проблем с прерыванием и прочим не будет.
Уважаемый [ref=#808080]Phazz[/ref], Проверьте простой пример - слейв есп ,мастер каскада (модбас ТСР) читает всего 1 переменную. 2 задача вывод константы в уарт на консоль , включите вывод данных на консоль
testGyverOS 1.0 (1).rar
диспетчер.rar
:smile427:
второй файл это проект на каскаде, другой нет , а вы можете использовать любую

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