Тут я с вами не соглашусь. Защита от дребезга сделана на mills(), а не на delay(). Другое дело, что при включении защиты от дребезга вход считывается при каждом проходе, вне зависимости от того, на какой плате он установлен.ecoins писал(а): 17 фев 2020, 20:18 Опасно использовать без проверки и некоторые встроенные возможности и блоки FLProg -так чтение дискретного входа с защитой от дребезга (в блоке чтения дискретного входа флажок устанавливается) приводит к тому, что выполняется delay(50) при каждом чтении входа.
Разработки ecoins
Разработки ecoins
-
- Полковник
- Сообщения: 4014
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 159 раз
Разработки ecoins
Проверил, Вы правы - защита от дребезга сделана на millis(), аккуратно и "не тормозит". Раньше вроде проверяю... Наверное с чем-то спутал.edyapd писал(а): 18 фев 2020, 05:38 Тут я с вами не соглашусь. Защита от дребезга сделана на mills(), а не на delay(). Другое дело, что при включении защиты от дребезга вход считывается при каждом проходе, вне зависимости от того, на какой плате он установлен.

-
- Полковник
- Сообщения: 4014
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 159 раз
Разработки ecoins
Уважаемые форумчане!
Наша команда проработала многие вопросы, связанные с планировании задач и событий, и выработала некоторый подход в создании
проектов, упорядочивания задач в проектах.
Подняли вопрос приоритетов выполнения задач и оптимизации времени работы цикла программы. Все блоки тем или иным образом
проверены по времени работы на логическом анализаторе. С уверенностью можно сказать, что применение подходов и принципов, заложенных в библиотеках Ecoins, позволяет в десятки раз ускорить обработку задач в проектах.
Задачи выполняются только тогда, когда это необходимо по условиям, в остальное время программа не затрачивает ресурсы
процессора для обработки задач.
Мы упорядочили и упростили блоки в Flprog, создали руководство по использованию блоков, наполнили их простыми примерами.
В ближайшие время (благо на самоизоляции его чуть побольше чем обычно) в данной теме будем выкладывать разделы с разработанными
блоками, из общей библиотеки ECOINS.
Также будем наполнять эти материалы примерами и понятными (надеюсь с Вашей помощью и участием) руководствами, которые
перерастут в некий учебный материал как для
пользователей Flprog, так и для многих других.
=====================================================================================================================
ОСНОВНЫЕ ССЫЛКИ В ПОСТЕ №1
viewtopic.php?f=181&t=5426&p=72349#p72349
=====================================================================================================================
Любые комментария и вопросы, а также найденные ошибки от форумчан будут услышаны. Всем желаем плодотворных дней дома.
P/S/ Далее будем выкладывать разделы, связанные с работой с пинами, выводом информации о контроллере, будут представлены блоки
для работы с микросхемами расширений MCP23017 и устройствами, датчиками и т.д.
Наша команда проработала многие вопросы, связанные с планировании задач и событий, и выработала некоторый подход в создании
проектов, упорядочивания задач в проектах.
Подняли вопрос приоритетов выполнения задач и оптимизации времени работы цикла программы. Все блоки тем или иным образом
проверены по времени работы на логическом анализаторе. С уверенностью можно сказать, что применение подходов и принципов, заложенных в библиотеках Ecoins, позволяет в десятки раз ускорить обработку задач в проектах.
Задачи выполняются только тогда, когда это необходимо по условиям, в остальное время программа не затрачивает ресурсы
процессора для обработки задач.
Мы упорядочили и упростили блоки в Flprog, создали руководство по использованию блоков, наполнили их простыми примерами.
В ближайшие время (благо на самоизоляции его чуть побольше чем обычно) в данной теме будем выкладывать разделы с разработанными
блоками, из общей библиотеки ECOINS.
Также будем наполнять эти материалы примерами и понятными (надеюсь с Вашей помощью и участием) руководствами, которые
перерастут в некий учебный материал как для
пользователей Flprog, так и для многих других.
=====================================================================================================================
ОСНОВНЫЕ ССЫЛКИ В ПОСТЕ №1
viewtopic.php?f=181&t=5426&p=72349#p72349
=====================================================================================================================
Любые комментария и вопросы, а также найденные ошибки от форумчан будут услышаны. Всем желаем плодотворных дней дома.
P/S/ Далее будем выкладывать разделы, связанные с работой с пинами, выводом информации о контроллере, будут представлены блоки
для работы с микросхемами расширений MCP23017 и устройствами, датчиками и т.д.
Разработки ecoins
[ref]ecoins[/ref], есть один момент. Автор обещает переработать Пользовательские Блоки уже в следующей версии. При этом я где-то читал, что после выхода стабильной версии, старые ПБ поддерживаться в ней не будут.
То есть, получается, что все ваши наработки останутся только для версии 6.х.х. А в дальнейшем возможно всё придётся переделывать.
То есть, получается, что все ваши наработки останутся только для версии 6.х.х. А в дальнейшем возможно всё придётся переделывать.
-
- Полковник
- Сообщения: 4014
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 159 раз
Разработки ecoins
Это не проблема - все сложные функции находятся в библиотеках ecoins (С++)
Отправлено спустя 5 минут 58 секунд:
Первые варианты руководств в pdf: Отправлено спустя 8 минут 25 секунд:
Простенькая демонстрация из примера LCD дисплей
https://youtu.be/v5Dj-BeGEeM
Отправлено спустя 24 минуты 51 секунду:
Три дисплея - 2 на i2c, один на SPI. Предусмотрены еще два способа подключения - через 6 и 3 пина.
Видно, что быстро обновляются данные на Lcd - '+' бегают.
Есть опрос и запись аналоговых пинов.
По быстродействию проект не перегружен. Самый медленный элемент - опрос аналогового пина.
Максимальная задержка (примерно 1 раз в 0,8мс) - 400 мкс. Основной период 20 мкс.
Отправлено спустя 5 минут 58 секунд:
Первые варианты руководств в pdf: Отправлено спустя 8 минут 25 секунд:
Простенькая демонстрация из примера LCD дисплей
https://youtu.be/v5Dj-BeGEeM
Отправлено спустя 24 минуты 51 секунду:
Три дисплея - 2 на i2c, один на SPI. Предусмотрены еще два способа подключения - через 6 и 3 пина.
Видно, что быстро обновляются данные на Lcd - '+' бегают.
Есть опрос и запись аналоговых пинов.
По быстродействию проект не перегружен. Самый медленный элемент - опрос аналогового пина.
Максимальная задержка (примерно 1 раз в 0,8мс) - 400 мкс. Основной период 20 мкс.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Полковник
- Сообщения: 4014
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 159 раз
Разработки ecoins
Наиболее наблюдаемые нами этапы развития проблем в программировании, в т.ч. и FLProg у новичков (и не только):
1. В начале что-то получается, появляется драйв - успех.
2. По мере усложнения проекта, что-то не срабатывает, что-то не получается и самое распространенное - проект "тормозит".
3. Поиск проблем. Хуже (а это распространено) путем гадания "на кофейной гуще" - то i2c "тормозит", то датчик сломался, то помехи и т.п.
4. Проект фиксируется на каком-то уровне и воспринимается как есть - что получилось, то получилось.
5. У кого-то "опускаются руки", идет поиск новых "волшебных" программных и электронных инструментов.
Рекомендации новичкам от ecoins:
1. Любой проект разбивать на небольшие задачи - каждая на отдельной плате.
2. Вызывать задачи только через диспетчер (может быть самый простой - генератор меандра, выделить фронт и от него запустить генератор номеров задач).
3. Когда что-то начнет тормозить и Вы не можете разобраться самостоятельно -пишите.
4. Если Вы будете использовать блоки ecoins, то большинство проблем ими решаются.
1. В начале что-то получается, появляется драйв - успех.
2. По мере усложнения проекта, что-то не срабатывает, что-то не получается и самое распространенное - проект "тормозит".
3. Поиск проблем. Хуже (а это распространено) путем гадания "на кофейной гуще" - то i2c "тормозит", то датчик сломался, то помехи и т.п.
4. Проект фиксируется на каком-то уровне и воспринимается как есть - что получилось, то получилось.
5. У кого-то "опускаются руки", идет поиск новых "волшебных" программных и электронных инструментов.
Рекомендации новичкам от ecoins:
1. Любой проект разбивать на небольшие задачи - каждая на отдельной плате.
2. Вызывать задачи только через диспетчер (может быть самый простой - генератор меандра, выделить фронт и от него запустить генератор номеров задач).
3. Когда что-то начнет тормозить и Вы не можете разобраться самостоятельно -пишите.
4. Если Вы будете использовать блоки ecoins, то большинство проблем ими решаются.
-
- Сержант
- Сообщения: 194
- Зарегистрирован: 29 авг 2016, 22:44
- Откуда: Серпухов
- Имя: Александр
Разработки ecoins
Присоединяюсь к вопросу о том, как сортировать задачи на быстрые, медленные. Опрос датчика, пина, обмен по UART с другим устройством и т.д. Понимаю, что вопросможет не совсем корректный и зависит от конкретной задачи, проекта. Конкретный вопрос: обмен по аппаратному UART с GSM модемом это медленная задача? Опрос дискретного входа (просто кнопка) и т.д.
-
- Полковник
- Сообщения: 4014
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 159 раз
Разработки ecoins
Для обмена с данными через ModBus c KaScadа мы обновляем данные не чаще 100 ms. В диспетчере это быстрая задача.
Для быстрого управления светодиодами обращение к ним от 10 до 50 мс - это оперативная задача.
Не думаю, что обмен GSM модемом требуется чаще 250мс-1сек - это медленная задача.
Опрос кнопки - 1 раз в 100мс - быстрая задача.
Работа со строками и вывод их через LCD FLPROG - эта связка очень тормозит проект и до появления новой библиотеки LCD-ecoins мы это связку реализовывали в нескольких медленных задачах.
------
Деление на тип задач условен, но при планировании проекта это не самое важное.
Гораздо важнее представлять возможности используемых программных ресурсов - библиотеки и блоки.
Все что мы используем, в том числе и стандартные функции Arduino мы исследовали с использованием логических анализаторов.
Вывод следующий - многие стандартные библиотеки используют внутри операторы delay(). Например библиотека DHT_NEW при измерении "тормозит" на 500ms (в нашей 5 ms и наверное будет меньше), стандартная библиотека LCD-HD44780 содержит "гроздья" из delay().
Диспетчер позволяет исключать исполнение задач в каждом цикле.
-------
Известный, но не распространенный в среде Arduino метод - программные прерывания. Суть проста - программа разбивается на микро(мини) операции, после выполнения которых осуществляется выход из программы. При следующем входе передается управление в ту же точку с теми же данными - стек при этом не используется.
Все библиотеки ecoins используют этот метод.
Вызов и исполнение таких программ занимает немного времени (десятки микросекунд), но к ним надо обращаться регулярно.
Для удобства в диспетчере предусмотрены свободные задачи- они самые низкоприоритетные, но при этом по факту наиболее часто вызываемые.
Философия разработок ecoins - это тема отдельная и она будет оформлена в описаниях и руководства. Пока начали выкладывать прикладные материалы.
Пробуйте, и многие вопросы отпадут.
Для быстрого управления светодиодами обращение к ним от 10 до 50 мс - это оперативная задача.
Не думаю, что обмен GSM модемом требуется чаще 250мс-1сек - это медленная задача.
Опрос кнопки - 1 раз в 100мс - быстрая задача.
Работа со строками и вывод их через LCD FLPROG - эта связка очень тормозит проект и до появления новой библиотеки LCD-ecoins мы это связку реализовывали в нескольких медленных задачах.
------
Деление на тип задач условен, но при планировании проекта это не самое важное.
Гораздо важнее представлять возможности используемых программных ресурсов - библиотеки и блоки.
Все что мы используем, в том числе и стандартные функции Arduino мы исследовали с использованием логических анализаторов.
Вывод следующий - многие стандартные библиотеки используют внутри операторы delay(). Например библиотека DHT_NEW при измерении "тормозит" на 500ms (в нашей 5 ms и наверное будет меньше), стандартная библиотека LCD-HD44780 содержит "гроздья" из delay().
Диспетчер позволяет исключать исполнение задач в каждом цикле.
-------
Известный, но не распространенный в среде Arduino метод - программные прерывания. Суть проста - программа разбивается на микро(мини) операции, после выполнения которых осуществляется выход из программы. При следующем входе передается управление в ту же точку с теми же данными - стек при этом не используется.
Все библиотеки ecoins используют этот метод.
Вызов и исполнение таких программ занимает немного времени (десятки микросекунд), но к ним надо обращаться регулярно.
Для удобства в диспетчере предусмотрены свободные задачи- они самые низкоприоритетные, но при этом по факту наиболее часто вызываемые.
Философия разработок ecoins - это тема отдельная и она будет оформлена в описаниях и руководства. Пока начали выкладывать прикладные материалы.
Пробуйте, и многие вопросы отпадут.
- nalnik
- Подполковник
- Сообщения: 1320
- Зарегистрирован: 14 май 2016, 17:12
- Откуда: Кисловодск
- Имя: Александр
Разработки ecoins
Смешно - 26 страниц Философииecoins писал(а): 17 апр 2020, 20:31 Философия разработок ecoins - это тема отдельная и она будет оформлена в описаниях и руководства. Пока начали выкладывать прикладные материалы.


И еще будит отдельная тема?

Я хочу быть добрее, но люди сами нарываются.
-
- Полковник
- Сообщения: 4014
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 159 раз
Разработки ecoins
Уточняем свою позицю:
1. коллектив ecoins в течении двух лет занимается исследованием использования контроллеров в среде Arduino и в т.ч. с учетом применения FLProg;
2. проведен цикл программных и аппаратных исследований используемых в этих средах ресурсов (библиотеки, контролеры, внешние устройства);
3. разработаны методы и инструменты библиотек с требованием к работе в режиме реального времени с учетом требований промышленной автоматизации;
4. разработаны и продолжаются разрабатываться библиотеки C++ для собственной "Эко-среды автоматизации на микроконтроллерах с разной архитектурой".
5. после испытания первых версий системы в 2019г., в феврале-апреле 2020г. создана новая версия, первые alfa-материалы которой начали выкладывать.
--------------
Цель разработки - создание "Эко-среды" пригодной для создания как простых систем автоматизации разработчиками без специальной подготовки, так и сложных распределенных систем промышленной автоматизации.
------------
По достигнутым результатам: окончательная версия будет значительно удобнее, проще в использовании, мощнее, обладать принципиально иными возможностями чем такие (и им подобные) ПЛК "ОВЕН" с системой программирования CodeSys. Выкладываемые материалы проверены, работоспособны и могут быть полезны разработчикам.
-----------
Кому-то изложенное, а также результаты работы ecoins не интересны, кому-то смешны...(пусть продолжают смеяться) - кто-то может попробовать и возможно извлечь пользу.
А у кого-то может сформироваться новое, совсем иное представление о возможностях автоматизации с использованием результатов ecoins.
1. коллектив ecoins в течении двух лет занимается исследованием использования контроллеров в среде Arduino и в т.ч. с учетом применения FLProg;
2. проведен цикл программных и аппаратных исследований используемых в этих средах ресурсов (библиотеки, контролеры, внешние устройства);
3. разработаны методы и инструменты библиотек с требованием к работе в режиме реального времени с учетом требований промышленной автоматизации;
4. разработаны и продолжаются разрабатываться библиотеки C++ для собственной "Эко-среды автоматизации на микроконтроллерах с разной архитектурой".
5. после испытания первых версий системы в 2019г., в феврале-апреле 2020г. создана новая версия, первые alfa-материалы которой начали выкладывать.
--------------
Цель разработки - создание "Эко-среды" пригодной для создания как простых систем автоматизации разработчиками без специальной подготовки, так и сложных распределенных систем промышленной автоматизации.
------------
По достигнутым результатам: окончательная версия будет значительно удобнее, проще в использовании, мощнее, обладать принципиально иными возможностями чем такие (и им подобные) ПЛК "ОВЕН" с системой программирования CodeSys. Выкладываемые материалы проверены, работоспособны и могут быть полезны разработчикам.
-----------
Кому-то изложенное, а также результаты работы ecoins не интересны, кому-то смешны...(пусть продолжают смеяться) - кто-то может попробовать и возможно извлечь пользу.
А у кого-то может сформироваться новое, совсем иное представление о возможностях автоматизации с использованием результатов ecoins.
- nalnik
- Подполковник
- Сообщения: 1320
- Зарегистрирован: 14 май 2016, 17:12
- Откуда: Кисловодск
- Имя: Александр
Разработки ecoins
Вы уж простите, но как по мне - так это все "ересь" -- "свидетели ecoins".ecoins писал(а): 17 апр 2020, 21:11 А у кого-то может сформироваться новое, совсем иное представление
Учиться надо самим, правильно продумывать алгоритм своей программы а не грузить ее "Чужими Мыслями" при исполнении.
Я хочу быть добрее, но люди сами нарываются.
- Phazz
- Полковник
- Сообщения: 3153
- Зарегистрирован: 17 окт 2016, 15:38
- Откуда: Сургут
- Имя: Анатолий
- Благодарил (а): 237 раз
- Поблагодарили: 120 раз
Разработки ecoins
[ref]nalnik[/ref], знаете любая программа собирается через компилятор. А компилятор это ни что иное как мысль программиста о том как должен исполняться этот код на процессоре. И все компьютерах так, библиотеки фреймворки и т.д. Даже программа flprog тут совсем не исключение. Я не понимаю почему вы цепляетесь к людям которые делают вклад в развитие flprog. А уж зайдут ли их идеи пользователям, это только время покажет.
- nalnik
- Подполковник
- Сообщения: 1320
- Зарегистрирован: 14 май 2016, 17:12
- Откуда: Кисловодск
- Имя: Александр
Разработки ecoins
Поверьте, знаю.
Скажите - а что показало время за эти 26 страниц- есть "статистика"?
Я хочу быть добрее, но люди сами нарываются.
- Rovki
- Полковник
- Сообщения: 5740
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 69 раз
- Поблагодарили: 222 раза
- Контактная информация:
Разработки ecoins
Эта тема не для троллинга , верю- не верю ...Люди вложили свой труд ,бессонные ночи,перелопатели кучу библиотек . Имейте уважение и честь
Электронщик до мозга костей и не только
-
- Полковник
- Сообщения: 4014
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 159 раз
Разработки ecoins
И еще самим придумать каменный топор, деревянный плуг, интенсивно развиваться и с самоудовлетворением закончить жизненный путь так и не узнав о железе.nalnik писал(а): 17 апр 2020, 21:28 Вы уж простите, но как по мне - так это все "ересь" -- "свидетели ecoins".
Учиться надо самим, правильно продумывать алгоритм своей программы а не грузить ее "Чужими Мыслями" при исполнении.
Вас ведь никто не ограничивает идти собственным путем, ecoins тогда отдает свои результаты, рассчитывая что это будет способствовать развитию FLProg, в чем ecoins очень заинтересованы.
Активно проявлять беспокойство за нравственность (или безнравственность) участников форума Вас вроде никто не просил...
------------
О конкретном:
Выше выложен виде-ролик: 3 LCD работающих одновременно на которых динамично (при изменении параметров до 50мс) меняются данные.
Мне не известны аналогичные примеры в среде Arduino и FLProg. При этом 2 дисплея подключены через i2c о которой на форуме уже многие писали, что она "тормозная". Она действительно не быстрая в сравнении с SPI. Один дисплей подключен через SPI. Библиотека поддерживает 15 !! одновременно работающих дисплеев, которые могут быть подключены через 4-типа интерфейсов в любом сочетании. В каждый из дисплеев в первую позицию мы выводим мерцающий символ с периодом 250-500мс - по мерцанию этого символа также визуально можно определить "тормозит" ли программа.
LCD работают в фоновом режиме, незначительно используют временные ресурсы и не тормозят другие программы
По имеющимся у нас данным наша реализация работы с LCD HD44780 уникальна (т.е. не имеет аналогов).
Вопрос 1: известны ли Вам подобные реализации, если да то ссылочку пожалуйста;
Вопрос 2: можете ли Вы хотя бы в общих чертах предположительно описать методы и алгоритмы используемые в библиотеке (исходные тексты выложены);
Вопрос 3: по имеющимся исходным текстам можете ли Вы предложить (или создать) иную более совершенную библиотеку (на C++).
------------
Если ответите на эти вопросы, то спасибо.
-
- Лейтенант
- Сообщения: 418
- Зарегистрирован: 13 апр 2020, 18:22
- Имя: Антон
- Поблагодарили: 3 раза
Разработки ecoins
чтото так и не понял как Вы это сделали. Можете выложить пример в формате flp?ecoins писал(а): 17 апр 2020, 22:03 Выше выложен виде-ролик: 3 LCD работающих одновременно на которых динамично (при изменении параметров до 50мс) меняются данные.
-
- Полковник
- Сообщения: 4014
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 159 раз
Разработки ecoins
Для работы примера достаточно установить прикрепленную библиотеку - все необходимые для примера пользовательские блоки в примере. [spoiler] [/spoiler]Ardudue писал(а): 18 апр 2020, 07:06 чтото так и не понял как Вы это сделали. Можете выложить пример в формате flp?
Вернуться к началу
-----
Первые три файла есть в #1 -искать их действительно не удобно.
Отдельно добавлю самые компактные примеры - сейчас набросаю и выложу.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Полковник
- Сообщения: 4014
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 159 раз
Разработки ecoins
Микро и мини тесты lcd:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Полковник
- Сообщения: 4014
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 159 раз
Разработки ecoins
Библиотека Lcd содержит работу со строковыми переменными String - планируем избавиться от них, библиотека станет компактнее.
Все строковые переменные в блоках (название заголовков, выдаваемые на lcd тексты хранятся в памяти PROGMEM - ОЗУ не используют.
Все строковые переменные в блоках (название заголовков, выдаваемые на lcd тексты хранятся в памяти PROGMEM - ОЗУ не используют.
Разработки ecoins
Здравствуйте Econics
Начал пробовать работать с вашими блоками в частности с LCD
Возник вопрос почему с адресом 27 как указывает шина не работает а с вашим 39 работает
В чем секрет
И сразу по ходу планировки задач
Когда они разные понятно а если есть много однотипных задач , у меня 30 герконов
Есть смысл разбивать на разные платы или пусть работаю на одной?
И спасибо за ваш труд
Начал пробовать работать с вашими блоками в частности с LCD
Возник вопрос почему с адресом 27 как указывает шина не работает а с вашим 39 работает
В чем секрет
И сразу по ходу планировки задач
Когда они разные понятно а если есть много однотипных задач , у меня 30 герконов
Есть смысл разбивать на разные платы или пусть работаю на одной?
И спасибо за ваш труд
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей