Разработки ecoins

Библиотеки для разных контроллеров

Аватара пользователя
olddolin
Сержант
Сообщения: 119
Зарегистрирован: 08.09.2017{, 19:47}
Репутация: 6
Откуда: Тверь
Имя: Вадим

Разработки ecoins

#281

Сообщение olddolin » 31.07.2019{, 16:38}

Те же грабли и тот же лоб, всё один к одному. Библиотеки менял, блоки из последних выложенных в №274 ДЮАИР. Попробовал на есп, компилируется, но не проверял пока работу
Электронщик как врач, ему нужно постоянно учиться чтобы соответствовать времени.

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

Разработки ecoins

#282

Сообщение ecoins » 31.07.2019{, 16:59}

Dryundel писал(а):
31.07.2019{, 16:32}
#280 Сообщение Dryundel » 24 минуты назад
ecoins писал(а): ↑35 минут назад
Библиотеки ecoins, в т.ч. MCP23017. От 31.07.19.
Пожалуйста, помещайте новые библиотеки еще и в первый пост. Желательно с датой обновления.
Возможно так и надо делать. Мы пока это делаем по мере существенных изменений.

Отправлено спустя 28 минут 21 секунду:
olddolin писал(а):
31.07.2019{, 16:38}
Те же грабли и тот же лоб, всё один к одному. Библиотеки менял, блоки из последних выложенных в №274 ДЮАИР. Попробовал на есп, компилируется, но не проверял пока работу
1. Проверял, фото о работе выложил вчера. По приведенному Вами листингу видно, что библиотеке RT_HW_Main.h что-то не так с функцией "Счетчик" - у Вас была старая библиотека.
2. Проверял на Nanо, на ESP8266 вчера не проверял и не не писал об этом. Есть некоторые различия в компиляторах С++ для AVR и ESP8266. В данном случае не большие.
3. 30.07. 12:23 - выложил материал по mcp23017
31.07 9:29 - olddolin разместил замечания
31.07 11:06 - увидел замечания (был в дороге) и ответил.
31.07 16:20 - выложил новый материал, поблагодарил olddolin.
31.07 16:45 - olddolin дал понять, что раздражен доставленным ему дискомфортом....
-----------------
Уважаемый olddolin!
Примите мои извинения за доставленный Вам дискомфорт.
Работы было сделано не мало и по ESP8266 была допущена неточность.
При этом горжусь (это для команды ecoins) созданным продуктом. Ничего подобного сделанным нами где-либо не было обнаружено - ни по содержанию методов и свойств, ни по стилю оформления.
Вы не написали результатов проверки последнего поста - предполагаю, что Вам это не очень и нужно. Если иначе, то полагаю сообщили о Вашей заинтересованности, попросили бы быстрее поправить. Иногда нас еще просто благодарят за работу.
Поскольку Вы уже разобрались с тем, что в команда ecoins это не безошибочно работающие роботы (в ней живые разработчики электроники, программного обеспечения и проектов реального времени), то возможный для Вас путь не торопиться использовать наработки ecoins. На них нет клейма "Завершено окончательно".
Последний раз редактировалось ecoins 31.07.2019{, 18:16}, всего редактировалось 1 раз.

Аватара пользователя
olddolin
Сержант
Сообщения: 119
Зарегистрирован: 08.09.2017{, 19:47}
Репутация: 6
Откуда: Тверь
Имя: Вадим

Разработки ecoins

#283

Сообщение olddolin » 31.07.2019{, 17:58}

ecoins, Вы меня не правильно поняли, я вообще не конфликтный человек, может не так написал. У меня сейчас нет напряжения, в деревне живу, тестить на контроллере нет возможности. Так что не обижайтесь, уважаю всех творческих людей к коим и вас отношу.А то что плаваю иногда в библиотеках и прочем, здесь согласен, не программист я, больше с силовой электроникой дело имел.
Электронщик как врач, ему нужно постоянно учиться чтобы соответствовать времени.

eric25
Рядовой
Сообщения: 17
Зарегистрирован: 14.02.2017{, 14:43}
Репутация: 2
Имя: Андрей

Разработки ecoins

#284

Сообщение eric25 » 31.07.2019{, 18:03}

Пример вывода данных с дальномера SR04 и датчика DHT22 переменных типа float и int, вывод переменных типа string на LCD HD44780 с использование блоков и библиотек ecoins. Дальномер работает по прерываниям на pin2.


________________________________________________________-
Участник "нашей команды" ecoins)

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

Разработки ecoins

#285

Сообщение ecoins » 31.07.2019{, 18:17}

olddolin, Спасибо. Успехов в работе. Будут вопросы - пишите.
Последний раз редактировалось ecoins 31.07.2019{, 18:49}, всего редактировалось 1 раз.

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

Разработки ecoins

#286

Сообщение ecoins » 31.07.2019{, 18:49}

По блоку SR04 viewtopic.php?p=73881#p73881.
Это совершенно уникальный блок. Библиотека написанная с нуля с учетом некоторых идей библиотек NewPing и iArduino, но сильно от них отличающихся. Положительный результат получен на основе аппаратных и программных исследований ecoins модулей HC-SR04 и его контроллера :
1. Блок(библиотека) работает и по прерыванию (если пин контроллера обладает таким свойством) и без него. Библиотека самостоятельно выбирает режим. Перевести в режим без прерывания может пользователь через параметры.
2.При работе без прерываний библиотека гарантировано ограничивает время занятия процессорного времени (в отличие от стандартной, где она случайным образом может подвисать на секунды) задаваемым максимальным расстояние - для 60см - это 6мс, для 100см - это 10мс и т.д.
3.При работе с прерываниями - затрачиваемое процессорное время только на правильный запуск -10 микросекунд.
4.Блоки могут работать с самостоятельным периодическим вызовом - по умолчанию для пинов с прерываниями - 50мс, без прерываний - 200мс. Эти параметры настраиваемые.
5. Блок может работать через один пин Echo(в этом случае он соединяется с Trig через резистор 510 ом), или как обычно через два пина.
6. Блок может выдавать результат в миллисекундах, мм, см и тоже самое с усреднением.
7. Блок отбрасывает случайные измерения, связанные с особенностями SR04.
8. Минимальное расстояние 2 см. Если меньше, возможные ошибки измерения - это связанное со свойствами самого SR04.
9. Может быть неограниченное кол-во сонаров в любом сочетании (с прерываниями и без) - код остается неизменным, увеличивается только область выделяемых данных для сонара - для каждого своя область.
10. Если номер пина <0, действия блоком не производятся.
11. В отличии от библиотеки NewPing - таймер не используется и соответственно не занимается.
12. Проводились длительные испытания на Nano,Mega, STM32, DUE, ESP8266, ESP32. На трех последних соединяли через согласователь уровней. Сейчас получили HC-SR04+ - вероятнее всего он будет работать и непосредственно от 3.3в и соответственно можно будет обойтись без согласования уровней.

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

Разработки ecoins

#287

Сообщение Dryundel » 01.08.2019{, 15:20}

ecoins, будьте добры, поясните параметр ДЕЛИТЕЛЬ.
В блоке "Управление lcd" в описании нашел следующее:
ДЕЛИТЕЛЬ - (default=25) для управления (разрешение работы) дополнительными блоками, используется событие
равное кол-во вхождению в данный блок/ ДЕЛИТЕЛЬ. Это позволяет сушественно сократить затраты на время
работы дополнительных блоков.
Ну с падежами беда это ладно. Не понятно в принципе что это такое.

eric25
Рядовой
Сообщения: 17
Зарегистрирован: 14.02.2017{, 14:43}
Репутация: 2
Имя: Андрей

Разработки ecoins

#288

Сообщение eric25 » 01.08.2019{, 16:26}

Dryundel писал(а):
01.08.2019{, 15:20}
ecoins, будьте добры, поясните параметр ДЕЛИТЕЛЬ.
В блоке "Управление lcd" в описании нашел следующее:
ДЕЛИТЕЛЬ - (default=25) для управления (разрешение работы) дополнительными блоками, используется событие
равное кол-во вхождению в данный блок/ ДЕЛИТЕЛЬ. Это позволяет сушественно сократить затраты на время
работы дополнительных блоков.
Ну с падежами беда это ладно. Не понятно в принципе что это такое.
Работа RT_LCD с делителем
делитель_крупно.jpg
делитель.bmp
делитель.bmp (2.25 МБ) 616 просмотров
Шина i2c практически свободна (0 и 1 строка).
Обновление на LCD происходит не каждый цикл (сигнал с переменной Blink 3 (оранжевая строка) на анализаторе), а каждый 25 цикл (2 строка-красная), то есть в остальные 24 цикла могут выполняться другие задачи, контроллер не будет тратить время на отображение параметров в LCD(хотя там и так измеряется все МИКРОсекундами(4,5мкс)).

Работа стандартной библиотеки LCD в Flprog
делитель_lcd.bmp
делитель_lcd.bmp (2.34 МБ) 616 просмотров
Шина i2c просто "забита" данными (0 и 1 строка), вывод идет на LCD каждый цикл, время длительности цикла(Loop) выросло до МИЛЛИсекунд(4,5 мс)
________________________________________________________-
Участник "нашей команды" ecoins)

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

Разработки ecoins

#289

Сообщение ecoins » 01.08.2019{, 17:09}

Dryundel писал(а):
01.08.2019{, 15:20}
будьте добры, поясните параметр ДЕЛИТЕЛЬ.
Дополнительно: каждый из блоков дисплея (lcd.int, lcd.blink b и т.д.) содержит автономный таймер, основанный на функции millis(). Таймеры оперируют 32-разрядными величинами, для 8-разрядных контроллеров это ощутимая нагрузка по времени.
Чтобы блоки выполнялись не каждый раз, они стробируются сигналами "Событие" через вход EN. Это может быть и автономный генератор, для удобство такой генератор встроен в блок begin().
При делитель=25, сигнал на выходе блока begin()=1 каждое 25-ое вхождение в этот блок, в остальное время =0.
Если быстродействие не критично, на входах EN можно просто установить =1 (или проинвертировать этот вход).

neangel
Рядовой
Сообщения: 10
Зарегистрирован: 10.01.2019{, 13:13}
Репутация: 0
Имя: Игорь

Разработки ecoins

#290

Сообщение neangel » 01.08.2019{, 17:21}

Вопрос to ecoins

На этом вашем видео - Академия Развития_Пример вывода значений типа INT на LCD_Full
В самом начале говорится про счётчик и конкретно про ногу mode
Мол счётчик может считать как пила (со сбросом в ноль) или туда-обратно.
Ставите 2 - будет считать, как пила.

Мол читайте описание там всё уже написано.
В описании про эту ногу (mode) ничего нет и какую бы цифру на неё не ставь туда-обратно он не считает.

А счётчик хороший ... спасибо.
Не надо организовывать сброс от верхней границы, как в штатном.
Но кстати.
Может кому то и не надо организовывать этот сброс автоматически (сброс от верхней границы).
Получается в штатном не навязывается кому то не нужная услуга.

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

Разработки ecoins

#291

Сообщение ecoins » 01.08.2019{, 18:00}

neangel писал(а):
01.08.2019{, 17:21}
В самом начале говорится про счётчик и конкретно про ногу mode
Мол счётчик может считать как пила (со сбросом в ноль) или туда-обратно.
----
Действительно - описание счетчика оказалось урезано. В новых версиях добавим.
Пока смотрите описание здесь:
БЛОК СЧЕТЧИКА
Счетчик считает в диапазоне от -32768 до +32767.
При первом включении или при rst=1, начальное значение счетчика сбрасывается
до значения "НАЧАЛЬНОЕ ЗНАЧЕНИЕ" (диапазоне от -32768 до +32767, default=0).
Счетчик считает с шагом, определяемый
значением "ШАГ ИЗМЕНЕНИЯ СЧЕТЧИКА" (диапазоне от -32768 до +32767, default=1).
Входные параметры:
rst - сброс текущего значения до параметра значения " НАЧАЛЬНОЕ ЗНАЧЕНИЕ.
mode :
'S' - пила. Если шаг >0, увеличение до верхней границы и сразу с возвратом к нижней границе.
Если шаг <0, уменьшение до нижней границы и сразу с возвратом к верхней границе.
'T' - треугольник. Если шаг >0, увеличение до верхней границы, затем уменьшение к нижней границе.
Если шаг <0, уменьшение до нижней границы, затем увеличение к верхней границе.
'L' - лимит. Если шаг >0, увеличение до верхней границы и останавливает счет.
Если шаг <0, уменьшение до нижней границы и останавливает счет.
'C' - предел. Если шаг >0, увеличение до 32767 и останавливает счет.
Если шаг <0, уменьшение до -32768 и останавливает счет.
top - верхняя граница;
bottom - нижняя граница.
----------------------------------------------------------
ecoins@mail.ru 01.08.19

neangel
Рядовой
Сообщения: 10
Зарегистрирован: 10.01.2019{, 13:13}
Репутация: 0
Имя: Игорь

Разработки ecoins

#292

Сообщение neangel » 01.08.2019{, 18:18}

Спасибо.
Всё заработало.
Оказывается на видео была не двойка, а буква S.

Простите слепого пенсионера.
Но я теперь понял почему вы учите подростков.
У них со зрением нет проблем.

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

Разработки ecoins

#293

Сообщение Dryundel » 01.08.2019{, 19:41}

ecoins писал(а):
01.08.2019{, 17:09}
Дополнительно: каждый из блоков дисплея (lcd.int, lcd.blink b и т.д.) содержит автономный таймер, основанный на функции millis().
... ...
Если быстродействие не критично, на входах EN можно просто установить =1 (или проинвертировать этот вход).
Надо это где то расписать.
Скажите, а чем обусловлен именно 25 циклов? Как оперировать этим значением? В каких пределах?
Или это значение оптимальное? Оптимальность для разных контроллеров вероятно разная. Какое значение предпочтительней для ESP8266?

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

Разработки ecoins

#294

Сообщение ecoins » 01.08.2019{, 20:01}

Dryundel писал(а):
01.08.2019{, 19:41}
Скажите, а чем обусловлен именно 25 циклов? Как оперировать этим значением? В каких пределах?
Или это значение оптимальное? Оптимальность для разных контроллеров вероятно разная. Какое значение предпочтительней для ESP8266?
Если Вы измените на 100, то увидите на глаз более медленный вывод.
Когда мы используем диспетчер задач, то устанавливаем вызов по номеру фоновой задачи - когда фоновых задач 5, то фактически вызов будет уже 25х5 - каждые 125мс. В этом случае мы обычно снижаем делитель до 5-6. Все на глазок - т.е. от визуального восприятия дисплея и критичности не к мгновенному появлению нового значения, а с некоторой плавностью. Кому это это и нравится.
Скорость вывода зависит от нескольких факторов - и он интенсивности смены параметров на входе блоков lcd, и в некоторой мере от быстродействия процессора - хотя во многом задержки связаны с частотой шины i2c (400кГц - можно разгонять, но особого смысла нет).

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

Разработки ecoins

#295

Сообщение Dryundel » 01.08.2019{, 20:12}

ecoins писал(а):
01.08.2019{, 20:01}
Все на глазок - т.е. от визуального восприятия...
Шаманство однако. :smile453: Но теперь понятно. :yes: Спасибо.

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

Разработки ecoins

#296

Сообщение Dryundel » 03.08.2019{, 20:02}

ecoins, а возможно сделать набор блоков для шины 1-Wire по типу как для i2c ?
Столкнулся с потребностью замены датчиков ds18b20. Очень бы хотелось организовать аварийное сканирование и замену с возможностью прописывания адреса без перепрошивки контроллера. Стандартными средствами не получается.

Аватара пользователя
Evgesha
Лейтенант
Сообщения: 460
Зарегистрирован: 29.10.2015{, 09:57}
Репутация: 14
Откуда: Kazakhstan
Имя: Evgesha

Разработки ecoins

#297

Сообщение Evgesha » 04.08.2019{, 05:31}

Dryundel, это не подойдет

viewtopic.php?f=74&t=4442
ПОМОЩЬ ПРОЕКТУ FLPROG:
http://flprog.ru/pomoshh-proektu/

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

Разработки ecoins

#298

Сообщение ecoins » 04.08.2019{, 07:50}

Dryundel писал(а):
03.08.2019{, 20:02}
ecoins, а возможно сделать набор блоков для шины 1-Wire по типу как для i2c ?
Столкнулся с потребностью замены датчиков ds18b20. Очень бы хотелось организовать аварийное сканирование и замену с возможностью прописывания адреса без перепрошивки контроллера. Стандартными средствами не получается.
В своих проектах по совокупности причин мы избегаем использования нескольких DS1820 на шине, подключенных к пину контроллера. Обычно 1 пин - один DS1820. Прием посылки от DS1820 по прерываниям - это работу планируется сделать.

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

Разработки ecoins

#299

Сообщение Dryundel » 04.08.2019{, 10:49}

ecoins писал(а):
04.08.2019{, 07:50}
В своих проектах по совокупности причин мы избегаем использования нескольких DS1820 на шине, подключенных к пину контроллера. Обычно 1 пин - один DS1820. Прием посылки от DS1820 по прерываниям - это работу планируется сделать.
Т.е. шину 1-Wire вы избегаете?

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

Разработки ecoins

#300

Сообщение ecoins » 04.08.2019{, 11:24}

Dryundel писал(а):
04.08.2019{, 10:49}
Т.е. шину 1-Wire вы избегаете?
Одно время мы много с ней работали.
Наше мнение об иллюзорности этого решения:
1) Делать длинные сети можно. Однако проблемы с идентификацией узлов и устройств остаются. Достигается через отключение отдельных приборов (или бегать с феном и греть DS18B20)... Это неплохо для исследовательских стендов - когда разработчик и квалифицирован, сам создал этот стенд, сам его эксплуатирует.
2) На контроллерах AVR, подключение сети 1-Wire - это всегда антенны индустриальных помех. Можно использовать оптическую развязку, но практики такой найти не удалось. Вернее отдельный контроллер.
3) Это очень и очень вандала не защищенная система - от обрывов, до попадания высокого напряжения.

Использование отдельных DS18B20 по одному на пин удобно, поскольку не требует идентификации датчика.
-------------------------------
Наше направление - сеть беспроводных сенсоров и устройств. Широко использовали ZigBee. Сейчас пока в поисках и исследованиях.

Ответить

Вернуться в «Библиотеки пользователей»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость