ЭкоСреда ecoins

Мультиплатформенная среда реального времени - библиотеки, блоки, примеры

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

ЭкоСреда ecoins

#21

Сообщение ecoins » 05.06.2022{, 08:58}

Di123 писал(а):
05.06.2022{, 08:03}
пробую через ваш блок вывести частоту в 1гц сос меной скважности от 0-100%
по началу всё хорошо
но после 64% происходит срыв периода в ноль
Действительно, возникало переполнение при работе с uint16_t и временем больше 500мс.
Исправил в библиотеке. Новая версия 7.02 в посте #1.
Тест работает.
PWM_0-100.zip
(441.43 КБ) 68 скачиваний
Проект.png
Тест немного подправил для демонстрации удобства использования вывода на lcd и монитор порта
с использованием блоков ecoins.

Аватара пользователя
Di123
Капитан
Сообщения: 828
Зарегистрирован: 03.11.2018{, 19:38}
Репутация: 29
Имя: Дмитрий

ЭкоСреда ecoins

#22

Сообщение Di123 » 05.06.2022{, 09:16}

так же обрывается после 64%

Отправлено спустя 10 минут 13 секунд:
работает но до 98%
остаётся пробел в 20 мс

Отправлено спустя 41 минуту 18 секунд:
отличная задумка с генератором я даже порадовался немного
позволяет использовать любой пин даже аналоговый в качестве шима по времени

но вашими блоками нвозможно пользоваться ибо даже один блок будь то просто пин сьдает посути почти всю разрешоную оперативу за 700 байт
разрешонную понимаю как примерно 50% потомучто по большей части с превышением её начинаются глюки у нано
я добавляю дисплей и всё
... меню и последующие алгоритмы работы уже не влазиют в диапазон стабильности

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

ЭкоСреда ecoins

#23

Сообщение Phazz » 05.06.2022{, 10:33}

Di123 писал(а):
05.06.2022{, 10:08}
разрешонную понимаю как примерно 50%
Эммм, вы мягко говоря заблуждаетесь.

Аватара пользователя
Di123
Капитан
Сообщения: 828
Зарегистрирован: 03.11.2018{, 19:38}
Репутация: 29
Имя: Дмитрий

ЭкоСреда ecoins

#24

Сообщение Di123 » 05.06.2022{, 10:40}

Phazz, я вам могу привести кучу примеров где по экрану начинают бегать китайцы если иметь большое меню и текстовые константы

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

ЭкоСреда ecoins

#25

Сообщение ecoins » 05.06.2022{, 11:32}

Di123 писал(а):
05.06.2022{, 10:08}
Отправлено спустя 10 минут 13 секунд:
работает но до 98%
остаётся пробел в 20 мс
Скорее всего у Вас потенциометр до конца не докручивается и у Вас на дисплее или консоли значение не подымается больше 98. При 98 длительность LOW=20мc, при 99 LOW=10мс, при 100 LOW=0. Только что на стенде проверил.
Di123 писал(а):
05.06.2022{, 10:08}
но вашими блоками нвозможно пользоваться ибо даже один блок будь то просто пин сьдает посути почти всю разрешоную оперативу за 700 байт
Данный тест использует 21590(70%) памяти устройства, 975(47%) динамической памяти. На NANO работает.
Di123 писал(а):
05.06.2022{, 10:08}
я добавляю дисплей и всё
... меню и последующие алгоритмы работы уже не влазиют в диапазон стабильности
Предыдущий тест с LCD работает. Обычно устойчиво работает пока не менее 25% динамической памяти свободно.
Di123 писал(а):
05.06.2022{, 10:40}
Phazz, я вам могу привести кучу примеров где по экрану начинают бегать китайцы если иметь большое меню и текстовые константы

Для контроллеров Nano и UNO проблемы не только с нашими библиотеками - очень мало оба типа памяти.
Наши библиотеки очень "рачительно" используют оперативную (динамическую) память и обычно не хватает основной памяти,
---------------
Настоятельно рекомендую переходить сразу на другие виды контроллеров, например ESP32,ESP8266.
Очень рекомендую Raspberry Pi Pico - он и по цене дешевле контроллера Nano и он с особым "энтузиазмом" поддерживается библиотеками ecoins. Даже с сенсором DS1820 работает - некоторые стандартные библиотеки отказываются с ним работать.
Это общая проблема совместимости разных архитектур с разными библиотеками, нам эту проблему пока удается решать.

На очереди реализации функции Ticker.h - никак не подберем подход поскольку на разных архитектурах по разному реализуются таймеры. Пока на эту задачу не хватает времени.
----------------
Успехов.

JonyBest
Сержант
Сообщения: 269
Зарегистрирован: 18.11.2015{, 22:42}
Репутация: 89
Откуда: Близко к Ставрополю
Имя: Евгений

ЭкоСреда ecoins

#26

Сообщение JonyBest » 05.06.2022{, 12:36}

ecoins писал(а):
05.06.2022{, 04:07}
С чипом PC8574 Вы можете работать используя блок i2c.Запись
Спасибо! Думаю, этого блока будет достаточно. Только очень хотелось бы пример блока i2c.Запись и описание как с ним работать.

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

ЭкоСреда ecoins

#27

Сообщение ecoins » 05.06.2022{, 13:20}

JonyBest писал(а):
05.06.2022{, 12:36}
Спасибо! Думаю, этого блока будет достаточно. Только очень хотелось бы пример блока i2c.Запись и описание как с ним работать.
Тест мерцания подсветкой LCD i2c с адресом 39(0х27).


Описание (подработанное) в блоке теста.
Интерфейс интуитивно понятен, если непонятно - напишите, будем корректировать.

Собственно с этой группой блоков по i2c можно работать с любым новым устройство с не сложным протоколом обмена (пример сложного - сенсор bme280).
Например мы полностью отлаживали устройство mcp23017 на ввод/вывод. В блоки заложены возможности некоторых технологических приемов (например возможность выстраивания цепочки блоков через вход EN и выход run), которые упрощают такую работу.
Последний раз редактировалось ecoins 06.06.2022{, 01:06}, всего редактировалось 1 раз.

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

ЭкоСреда ecoins

#28

Сообщение ecoins » 06.06.2022{, 01:04}

JonyBest писал(а):
05.06.2022{, 12:36}
Спасибо! Думаю, этого блока будет достаточно. Только очень хотелось бы пример блока i2c.Запись и описание как с ним работать.
Тест мерцания подсветкой LCD i2c с адресом 39(0х27).
LCD_i2c_on_light.zip
(83.18 КБ) 59 скачиваний
Запись в I2c.png
Описание (подработанное) в блоке теста.
Интерфейс интуитивно понятен, если непонятно - напишите, будем корректировать.

Собственно с этой группой блоков по i2c можно работать с любым новым устройство с не сложным протоколом обмена (пример сложного - сенсор bme280).
Например мы полностью отлаживали устройство mcp23017 на ввод/вывод. В блоки заложены возможности некоторых технологических приемов (например возможность выстраивания цепочки блоков через вход EN и выход run), которые упрощают такую работу.

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

ЭкоСреда ecoins

#29

Сообщение ecoins » 06.06.2022{, 04:58}

Тесты проверки блоков ультразвукового дальномера HC-SR04 с выводом значения на плоттер.
Блоки используют аппаратное прерывание пинов, если оно есть и работают очень быстро.
Используются оригинальные алгоритмы и библиотека.
В общей сложности библиотека развивалась и совершенствовалась более 3-х лет.
В блоки встроены фильтры медианного среднего значения(3,5,7,9 порядка), подключаемые входы/выходы ( eN,EN,ok,fresh), разные варианты опроса(периодически, по входу eN, по входу EN и пр.)
Блок вывода на плоттер может работать одновременно с до 10-тью переменными и имеет разные варианты вывода(по изменению, периодически и пр.).
Блоки очень быстрые и не "тормозят".
Работает на разных контроллерах AVR,ESP,STM32,Raspberry Pi Pico и др.
1.Блок с одним пином и выводом на плоттер.
Test HC-SR04_1pin_plotter.zip
(188.82 КБ) 54 скачивания
Test HC-SR04_1pin_plotter_prj.png
2.Блок с двумя пинами и выводом на плоттер.
Test HC-SR04_2pin_plotter.zip
(188.53 КБ) 53 скачивания
Test HC-SR04_2pin_plotter_prj.png
3.Расширенный тест с выводом на lcd, в монитор порта.
На lcd выводится быстродействие в тысячах циклов loop() в сек - на Nano это показатель составил 57тыс./сек(57000 !!!).
Вывод этого параметра обычно используем во всех создаваемых тестах.
Test HC-SR04_full.zip
(1.21 МБ) 58 скачиваний
СпойлерПоказать
Test HC-SR04_full_prj.png
--------------
Тесты используют обновления из библиотек, которые обновлены 06.06.22

Аватара пользователя
Imran
Сержант
Сообщения: 229
Зарегистрирован: 08.11.2017{, 20:53}
Репутация: 9
Имя: Имран

ЭкоСреда ecoins

#30

Сообщение Imran » 06.06.2022{, 11:53}

ecoins писал(а):
02.06.2022{, 14:12}
Возможно что у Вас в проекте?
Можете выделить проект и прислать, мы посмотрим
Спасибо за оперативность, пока я экспериментирую если что не так будет отправлю проект.

Kot
Сержант
Сообщения: 125
Зарегистрирован: 09.10.2021{, 11:54}
Репутация: 1
Имя: Дима

ЭкоСреда ecoins

#31

Сообщение Kot » 08.06.2022{, 12:09}

пробую через ваш 595 передать шим в 2 кгц
но по краям 0 и 100 % остаются пробелы в 60 мкс
может в блоке что то не так ?
595 шим.flp
(5.45 МБ) 47 скачиваний
Отправлено спустя 1 минуту 45 секунд:
и светодиод как то немного подёргивается допустим если поставить 50 %

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

ЭкоСреда ecoins

#32

Сообщение ecoins » 08.06.2022{, 13:54}

Kot писал(а):
08.06.2022{, 12:11}
и светодиод как то немного подёргивается допустим если поставить 50 %
Пришлите проект.
Если у Вас в проекте есть задержки, то и при передаче через SPI будут описанные проявления.
Если проект делать по правилам ecoins в зависимости от контроллера и размера проекта можно получить стабильные результаты выше 10-100кГц.

LexaDoc
Рядовой
Сообщения: 3
Зарегистрирован: 20.12.2021{, 13:52}
Репутация: 0
Имя: Алексей

ЭкоСреда ecoins

#33

Сообщение LexaDoc » 09.06.2022{, 05:03}

Приветствую. Подскажите пожалуйста, как сделать так чтобы плата, работающая по условию (если команда=5, к примеру) была также как Свободная в диспетчере задач?
Подскажите, как работать с modbusс тремя устройствами, чтобы не было постоянного обмена, а только по запросу на чтение, что-то все никак не могу понять

Kot
Сержант
Сообщения: 125
Зарегистрирован: 09.10.2021{, 11:54}
Репутация: 1
Имя: Дима

ЭкоСреда ecoins

#34

Сообщение Kot » 09.06.2022{, 08:43}

Kot писал(а):
08.06.2022{, 12:11}
595 шим.flp
это и был проект теста

ваш генератор шима максимум может выдать 500гц и то как то не очень вроде
а вот 1кгц он вообще не выдаёт через 595 там каша на осцылографе

я придумал свой шим генератор который 2кгц выдаёт почти нормально
видно что светодиод местами подёргивает и края через 595 не максимум
да и 15 бит через него не от маштабируеш потом
вот еслиб в генераторе можно было задать 500000 нс вместо 500 мкс тогда 500000/32767 маштабируется через 15 бит

в общем я не знаю как передать шим в 15 бит на 5 штук 595 на все порты в 2 кгц
выставлял разные варианты вывода в вашем блоке но даже в каждом цикле не помогает приравнять порт расширителя с портом есп
делитель частоты не трогал я не понял что это и зачем он просто оставил как есть

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

ЭкоСреда ecoins

#35

Сообщение ecoins » 09.06.2022{, 08:57}

LexaDoc писал(а):
09.06.2022{, 05:03}
Приветствую. Подскажите пожалуйста, как сделать так чтобы плата, работающая по условию (если команда=5, к примеру) была также как Свободная в диспетчере задач?
Условие для платы(задачи) это значение переменной по условию, например =5. Если в качестве переменной Вы выбираете новой свободной задачи, то задача будет вызываться как "свободная".
Повторюсь коротко по диспетчеру:
1. В каждый момент времени только один из номеров на выходах диспетчера задач отличен от нуля.
2. Диспетчер каждый раз проверяет наступило ли время выполнения какой-либо из задач "оперативная", "быстрая", "медленная", "фоновая" - назовем их "основными" -, и если да то назначается следующий (цикличный) номер соответствующей задачи.
3.Если ни одна из вышеперечисленных задач не назначена, то назначается следующий(цикличный) номер свободной задачи.
4.В реальности, если "основные" задачи(платы) написаны аккуратно без использования блоков с библиотеками "тормозящими", но основное процессорное время выделяется "свободным" задачам.
5.Свободные задачи необходимы для блоков, которые построены по принципу реализации микроопераций с программными прерываниями. На этом основе построены все библиотеки внешних устройств от ecoins.

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

ЭкоСреда ecoins

#36

Сообщение ecoins » 09.06.2022{, 09:12}

LexaDoc писал(а):
09.06.2022{, 05:03}
Подскажите, как работать с modbusс тремя устройствами, чтобы не было постоянного обмена, а только по запросу на чтение, что-то все никак не могу понять
Если у Вас контроллер как Slavе (например при работе с панелью на KaScada), то обмер организовывает сама панель и там есть механизмы, позволяющие реализовывать обмен по изменению, или периодически.
В случае Master - не помню в деталях как в FLProg это реализовано, но вопросы были (в том числе и по совместной работе нескольких Slave и Master) - и в планах заняться этой задачей.

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

ЭкоСреда ecoins

#37

Сообщение ecoins » 09.06.2022{, 09:39}

Kot писал(а):
09.06.2022{, 08:43}
ваш генератор шима максимум может выдать 500гц и то как то не очень вроде
а вот 1кгц он вообще не выдаёт через 595 там каша на осцылографе
Посмотрел Ваш проект, в предыдущем посте просто не заметил его по невнимательности.
1.Генератор ШИМа ecoins - это простая функция управление пином и больше рассчитана на медленные процессы.
2.Но может работать и очень быстро, если в проекте нет тормозящих "блоков".
3.В Вашем проекте используется блок REMOTEXУ который вернее всего "притормаживает" - подключен через TCP. Но лучше это увидеть и лучше на логическом анализаторе, в Вашем проекте на пине 23.
4.Блок HC-595 никак не тормозит - немного побыстрее будет работать если Вы подключитесь не через программный, а через аппаратный SPI и на вход будете подавать не битовое, а байтовое значение управлением 8-ю битами.

Kot
Сержант
Сообщения: 125
Зарегистрирован: 09.10.2021{, 11:54}
Репутация: 1
Имя: Дима

ЭкоСреда ecoins

#38

Сообщение Kot » 09.06.2022{, 10:26}

я смотрел на 23 пин там примерно 113 мкс период я так понял это один цикл программы он показывает
то есть цикл программы намного меньше чем мне требуется частота

а как аппаратный подключать на какой пин паять микросхему там в нете с десяток названий под один пин идёт
припаял
13-11
12-14
14-12
и они щас все горят
595 шим.flp
(5.46 МБ) 55 скачиваний

LexaDoc
Рядовой
Сообщения: 3
Зарегистрирован: 20.12.2021{, 13:52}
Репутация: 0
Имя: Алексей

ЭкоСреда ecoins

#39

Сообщение LexaDoc » 09.06.2022{, 12:02}

Ecoins, я хочу чтобы обычная плата по условию выполнялась как свободная, т.е. даже если условие есть что команда=5 то она бы не выполнялась если в этот момент есть приоритетная от диспетчера. Но когда есть свободное время, то она смогла бы выполнится. Объяснил как смог, если не поняли, ну ниче страшного

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

ЭкоСреда ecoins

#40

Сообщение ecoins » 09.06.2022{, 16:26}

Kot писал(а):
09.06.2022{, 10:26}
я смотрел на 23 пин там примерно 113 мкс период я так понял это один цикл программы он показывает
то есть цикл программы намного меньше чем мне требуется частота
ШИМ программный, быстрый и точный даже на быстром контроллере не простая затея... И дело не только в блоках и библиотеках.
По быстродействию - написал тест вывода по изменению на HC595.
По показаниям на дисплее быстродействие 102 тыс.циклов loop() в сек, по логическому анализатору основной цикл 9.3мкс.
Такие результаты можно получать если пользоваться диспетчером и некоторыми приемами как в приложенном тесте.
595_pwm_eis.zip
(72.95 КБ) 53 скачивания
СпойлерПоказать
595.png

Ответить

Вернуться в «Команда ecoins»