Диспетчер задач by Alex Gyver
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
- Phazz
- Полковник
- Сообщения: 3110
- Зарегистрирован: 17 окт 2016, 15:38
- Откуда: Сургут
- Имя: Анатолий
- Благодарил (а): 228 раз
- Поблагодарили: 107 раз
Диспетчер задач by Alex Gyver
Диспетчер задач сделанный на библиотеке https://github.com/GyverLibs/GyverOS
Добавлен информационный вход включения ручного режима задачи.
Благодарность [ref]Rovki[/ref], за тестирование
Добавлен информационный вход включения ручного режима задачи.
Благодарность [ref]Rovki[/ref], за тестирование
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Phazz 21 сен 2022, 21:10, всего редактировалось 4 раза.
-
- Полковник
- Сообщения: 3999
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 136 раз
- Поблагодарили: 149 раз
Диспетчер задач by Alex Gyver
Очень и очень любопытный подход.
Остерегаюсь обсуждения с искрами сомнения, которые могут некоторыми участниками форума боленено восприняты как "критика".
Подождал немного, тема интересная ("Диспетчер задач"), попробую что-то написать, возможно буду первым.
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 и важная, и полезная, исследования в этом направлении интересны и нужны.
Успехов.
Остерегаюсь обсуждения с искрами сомнения, которые могут некоторыми участниками форума боленено восприняты как "критика".
Подождал немного, тема интересная ("Диспетчер задач"), попробую что-то написать, возможно буду первым.
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
- Полковник
- Сообщения: 2406
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Поблагодарили: 15 раз
Диспетчер задач by Alex Gyver
[ref]ecoins[/ref], здесь не пишется библиотека, а используется готовая. Это ваше предложение мне кажется не совсем уместным. Может быть оно будет полезно AlexGyver. Попробуйте с ним связаться.ecoins писал(а): 28 авг 2022, 20:57 Если требуется что-то поизящнее с приоритетами, заданием кол-ва задач, самое главное, выделение процессорного ресурса когда все периодические задачи уже выполнены, посмотрите на решения "Диспетчера задач" от ecoins - там и код покомпактней, и скорее всего немного побыстрее. Это код находится в библиотеке RT_HW_Base.h ->BASE_030_API_Time.h->API_031_TimerSheduler_h.
Ваша ревность в принципе понятна, но не смотря на то, что:
Этой библиотекой можно пользоваться и делать это легко и удобно.ecoins писал(а): 28 авг 2022, 20:57 Мне представляется, что предложенная библиотека больше подходит для проектов на C++ , и не лучший способ для FLProg.
- Phazz
- Полковник
- Сообщения: 3110
- Зарегистрирован: 17 окт 2016, 15:38
- Откуда: Сургут
- Имя: Анатолий
- Благодарил (а): 228 раз
- Поблагодарили: 107 раз
Диспетчер задач by Alex Gyver
[ref]ecoins[/ref], да тут другой подход к выполнению задач. Можно считать это просто альтернативой куче таймеров и условий если это делать все на блоках. Но есть еще одно преимущество. Эти задачи можно вызывать по прерыванию моментально а не ждать пока дойдет до них очередь.
-
- Полковник
- Сообщения: 3999
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 136 раз
- Поблагодарили: 149 раз
Диспетчер задач by Alex Gyver
Да, конечно.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.
-------
Успехов.
- Dryundel
- Полковник
- Сообщения: 2406
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Поблагодарили: 15 раз
Диспетчер задач by Alex Gyver
Вот о чем человек написал? Про что эти нескончаемые тексты? Какое отношение они имеют к новому проекту топикстартера?
Складывается впечатление, что специально нагоняется пурга, что бы все поняли - все кроме разработок ecoins туфта и даже не стоит начинать.
А в конце, так ехидно:
Типа - ну-ну попробуй создать что то стоящее, а я поухмыляюсь и забью тему километровыми абстрактными текстами.
Может почистить все, что после первого поста? И дать возможность топикстартеру сделать нормальное описание.
Складывается впечатление, что специально нагоняется пурга, что бы все поняли - все кроме разработок ecoins туфта и даже не стоит начинать.
А в конце, так ехидно:
Типа - ну-ну попробуй создать что то стоящее, а я поухмыляюсь и забью тему километровыми абстрактными текстами.
Может почистить все, что после первого поста? И дать возможность топикстартеру сделать нормальное описание.
- Rovki
- Полковник
- Сообщения: 5710
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 67 раз
- Поблагодарили: 212 раз
- Контактная информация:
Диспетчер задач by Alex Gyver
Предупрежден , значит вооружен . Вот и все ! Причем из практики ...А дальше пользователь решит, что ему использовать и к кому обращаться за помощью ,если что...
Автору поста отдельное спасибо за разнообразие и труд.
Автору поста отдельное спасибо за разнообразие и труд.
Электронщик до мозга костей и не только
Диспетчер задач by Alex Gyver
[ref=#808080]Phazz[/ref], спасибо, на первый взгляд вроде всё понятно, попробую. Кстати, не пора ли обновиться, вышла версия 1.2.1.
- Dryundel
- Полковник
- Сообщения: 2406
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Поблагодарили: 15 раз
Диспетчер задач by Alex Gyver
Просто скачайте новую библиотеку и удалите старую. Как правило блоки сделанные на предыдущих версиях библиотек AlexGyver, прекрасно работают и со свежими, в отличии от библиотек некоторых других авторов.
- Phazz
- Полковник
- Сообщения: 3110
- Зарегистрирован: 17 окт 2016, 15:38
- Откуда: Сургут
- Имя: Анатолий
- Благодарил (а): 228 раз
- Поблагодарили: 107 раз
Диспетчер задач by Alex Gyver
Нумерация версии блока не имеет отношения к нумерации версии библиотеки.
Диспетчер задач by Alex Gyver
Спасибо ребята, я так и понял/сделал. Пойду почитаю, что люди пишут, что написал Алекс, прочитал.
- Rovki
- Полковник
- Сообщения: 5710
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 67 раз
- Поблагодарили: 212 раз
- Контактная информация:
Диспетчер задач by Alex Gyver
Успокойтесь уже наконец ,без грязных намеков ...И не говорите, что вас в очередной раз ни так поняли.Dryundel писал(а): 16 сен 2022, 09:46Просто скачайте новую библиотеку и удалите старую. Как правило блоки сделанные на предыдущих версиях библиотек AlexGyver, прекрасно работают и со свежими, в отличии от библиотек некоторых других авторов.
Электронщик до мозга костей и не только
Диспетчер задач by Alex Gyver
[ref=#ff8000]Rovki[/ref], вы писали в соседней теме, что используете блоки от ecoins без диспетчера задач. Какие блоки можно использовать таким образом? Просто я не в теме три года как. Вот думаю скрестить ужа с ежом, диспетчер от Alex Gyver, а блоки от "некоторых других авторов", раз уж они так хороши, с ваших слов.
-
- Полковник
- Сообщения: 1928
- Зарегистрирован: 28 окт 2015, 22:47
- Откуда: Ленобласть
- Имя: Игорь
- Поблагодарили: 2 раза
Диспетчер задач by Alex Gyver
Да, мне тоже очень любопытно увидеть реальный пример использования.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
- Rovki
- Полковник
- Сообщения: 5710
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 67 раз
- Поблагодарили: 212 раз
- Контактная информация:
Диспетчер задач by Alex Gyver
Любые ,что есть в его примерах , с вопросами обращайтесь к автору этих блоков. Но помните ,могут быть проблемы с этим диспетчером ,работающий по прерываниям с теми блоками у которых длинная посылка и штатными коммуникациями которые также используют прерывания...krom23 писал(а): 17 сен 2022, 20:38 [ref=#ff8000]Rovki[/ref], вы писали в соседней теме, что используете блоки от ecoins без диспетчера задач. Какие блоки можно использовать таким образом? Просто я не в теме три года как. Вот думаю скрестить ужа с ежом, диспетчер от Alex Gyver, а блоки от "некоторых других авторов", раз уж они так хороши, с ваших слов.

Электронщик до мозга костей и не только
- Phazz
- Полковник
- Сообщения: 3110
- Зарегистрирован: 17 окт 2016, 15:38
- Откуда: Сургут
- Имя: Анатолий
- Благодарил (а): 228 раз
- Поблагодарили: 107 раз
Диспетчер задач by Alex Gyver
[ref=#ff8000]Rovki[/ref], вообще ни каких проблем с прерыванием и прочим не будет.
- Dryundel
- Полковник
- Сообщения: 2406
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Поблагодарили: 15 раз
Диспетчер задач by Alex Gyver
[ref=#808080]Phazz[/ref], для кого то это действительно магия о том и предупреждение.

Как в сказке. "Но помни, ровно в полночь карета превратиться в тыкву!"с вопросами обращайтесь к автору этих блоков. Но помните ,могут быть проблемы...
- Rovki
- Полковник
- Сообщения: 5710
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 67 раз
- Поблагодарили: 212 раз
- Контактная информация:
Диспетчер задач by Alex Gyver
Вы сюда сказки пришли читать?( флудить)
Электронщик до мозга костей и не только
-
- Полковник
- Сообщения: 1928
- Зарегистрирован: 28 окт 2015, 22:47
- Откуда: Ленобласть
- Имя: Игорь
- Поблагодарили: 2 раза
Диспетчер задач by Alex Gyver
Впрочем как и вы))
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
- Rovki
- Полковник
- Сообщения: 5710
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 67 раз
- Поблагодарили: 212 раз
- Контактная информация:
Диспетчер задач by Alex Gyver
Уважаемый [ref=#808080]Phazz[/ref], Проверьте простой пример - слейв есп ,мастер каскада (модбас ТСР) читает всего 1 переменную. 2 задача вывод константы в уарт на консоль , включите вывод данных на консольPhazz писал(а): 18 сен 2022, 09:25 [ref=#ff8000]Rovki[/ref], вообще ни каких проблем с прерыванием и прочим не будет.

второй файл это проект на каскаде, другой нет , а вы можете использовать любую
Отправлено спустя 2 минуты 20 секунд:
мне был задан вопрос ,я дал ответ , потом дал автору конкретный пример , адвокатов я не вызывал , тем более для флуда
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Электронщик до мозга костей и не только
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость