Разработки ecoins

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

starshoy81
Лейтенант
Сообщения: 530
Зарегистрирован: 05.04.2016{, 23:30}
Репутация: 29
Откуда: Санкт-Петербург
Имя: Илья

Разработки ecoins

#1421

Сообщение starshoy81 » 02.11.2021{, 18:29}

ecoins, Вы его уже смотрели, viewtopic.php?t=5426&start=1420#p108314, на предыдущей странице.
В общем, посмотрел, это похоже на опцию защиты от зависания в общих настройках. При отключении этой опции из кода пропадают эти строки настройки таймера:

Код: Выделить всё

TCCR2A = 0x00;
    TCCR2B =  0x07;
    TIMSK2=0x01;
    TCNT2=100;
В тестовом проекте защиты от зависания нет, поэтому там шим на 3 пине работает.

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

Разработки ecoins

#1422

Сообщение ecoins » 02.11.2021{, 20:12}

starshoy81 писал(а):
02.11.2021{, 18:29}
В тестовом проекте защиты от зависания нет, поэтому там шим на 3 пине работает.
Отлично, что разобрались.
Таких нестыковок при использовании казалось бы простых функций в Arduino встречается много. Отдельные неожиданности подкидывают макроимена - например En в стандартной библиотеке LCD. Попадется библиотека с таким же макроопределением и проблемы...
В своих библиотеках мы в том числе преодолеваем подобные проблемы ("нежданчики").

Telman
Рядовой
Сообщения: 47
Зарегистрирован: 06.02.2021{, 15:26}
Репутация: 0
Имя: Telman

Разработки ecoins

#1423

Сообщение Telman » 02.11.2021{, 22:56}

Всем доброго времени суток. Уважаемые разработчики данной темы, помогите) Анатолий (автор программы каскада) сказал, что бы можете помочь меня в моем проеекте. Есть весы (тензодатчик на hx711) подключенные к мега, дисплей 2004, идет процесс взвешивания продукта и вес передается по модбас рту-тсп(есп8266, вемод д1) в HMI kascada. и очень часто модбас тормозит из за дисплея, hx711. можете помочь делать программу пошустрее?
Вложения
1.flp
(529.47 КБ) 22 скачивания

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

Разработки ecoins

#1424

Сообщение ecoins » 03.11.2021{, 00:48}

Telman писал(а):
02.11.2021{, 22:56}
Всем доброго времени суток. Уважаемые разработчики данной темы, помогите) Анатолий (автор программы каскада) сказал, что бы можете помочь меня в моем проеекте. Есть весы (тензодатчик на hx711) подключенные к мега, дисплей 2004, идет процесс взвешивания продукта и вес передается по модбас рту-тсп(есп8266, вемод д1) в HMI kascada. и очень часто модбас тормозит из за дисплея, hx711. можете помочь делать программу пошустрее?
Через несколько дней обязательно посмотрю и совместными усилиями непременно сделаем.
Сейчас готовим обновленную версию библиотек.
Успехов.

Аватара пользователя
Alias
Лейтенант
Сообщения: 481
Зарегистрирован: 27.11.2017{, 13:15}
Репутация: 36
Откуда: Rus44
Имя: Michael
Контактная информация:

Разработки ecoins

#1425

Сообщение Alias » 14.12.2021{, 14:36}

ecoins писал(а):
03.11.2021{, 00:48}
готовим обновленную версию библиотек
Приступаю к большому проекту автоматизации своего отопления. Хотел начать в этот раз с Ваших блоков )) Подождать обновления или пока на штатных блоках накидывать схему, а потом уже переехать?

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

Разработки ecoins

#1426

Сообщение ecoins » 14.12.2021{, 22:38}

Alias писал(а):
14.12.2021{, 14:36}
Приступаю к большому проекту автоматизации своего отопления. Хотел начать в этот раз с Ваших блоков )) Подождать обновления или пока на штатных блоках накидывать схему, а потом уже переехать?
Существующие хорошо работают.
Сами блоки достаточно укрупненные - когда появятся новые их будет не сложно заменить.
-----
Какой контроллер планируется?

Аватара пользователя
Alias
Лейтенант
Сообщения: 481
Зарегистрирован: 27.11.2017{, 13:15}
Репутация: 36
Откуда: Rus44
Имя: Michael
Контактная информация:

Разработки ecoins

#1427

Сообщение Alias » 15.12.2021{, 08:03}

Отлично, начинаю с этих! Спасибо!
Буду делать на Мегах, тк много датчиков и логики, да и по модбасу хотелось бы все это перегонять

o615ye161
Сержант
Сообщения: 198
Зарегистрирован: 19.12.2019{, 14:47}
Репутация: 3
Имя: Сергей

Разработки ecoins

#1428

Сообщение o615ye161 » 19.12.2021{, 14:23}

Здравствуйте ecoins, подскажите пожалуйста почему в блоке ШИМ-вывод при изменении частоты, на выходе частота не меняется и составляет 976Hz когда в блоке ставлю 1,5kHz, проверку делал на NANO 328p или данный блок работает только на ESP?
Вложения
test_shim.flp
(1.24 МБ) 17 скачиваний
WhatsApp Image 2021-12-19 at 14.14.48.jpeg
WhatsApp Image 2021-12-19 at 14.14.48 (2).jpeg
WhatsApp Image 2021-12-19 at 14.14.48 (1).jpeg

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

Разработки ecoins

#1429

Сообщение ecoins » 19.12.2021{, 14:29}

o615ye161 писал(а):
19.12.2021{, 14:23}
Здравствуйте ecoins, подскажите пожалуйста почему в блоке ШИМ-вывод при изменении частоты, на выходе частота не меняется и составляет 976Hz когда в блоке ставлю 1,5kHz, проверку делал на NANO 328p или данный блок работает только на ESP?
Изменение частоты ШИМ на Arduino с архитектурой AVR штатными средствами Arduino не предусмотрены.
Добавлять в библиотеку решения с обходными путями настройки ШИМ не планируем.
На форуме встречались решения в виде отдельных блоков для изменения частоты.

o615ye161
Сержант
Сообщения: 198
Зарегистрирован: 19.12.2019{, 14:47}
Репутация: 3
Имя: Сергей

Разработки ecoins

#1430

Сообщение o615ye161 » 19.12.2021{, 14:48}

ecoins писал(а):
19.12.2021{, 14:29}
На форуме встречались решения в виде отдельных блоков для изменения частоты.
ясно

Отправлено спустя 18 минут 52 секунды:
Еще один вопрос,блок аналогового ввода для NANO и MEGA A6 это какой номер нужно подставить на блок?

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

Разработки ecoins

#1431

Сообщение ecoins » 19.12.2021{, 18:21}

o615ye161 писал(а):
19.12.2021{, 15:07}
Еще один вопрос,блок аналогового ввода для NANO и MEGA A6 это какой номер нужно подставить на блок?
пины UNO A0-A5 соответствуют номерам 14-19;
пины NANO A0-A7 соответствуют номерам 14-21;
пины MEGA A0-A7 соответствуют номерам 54-61;

Получить соответствие имени пина можно с помощью простого кода;
setup(){
Serial.begin (115200);
Serial.print("A6="); Serial.println(A6);
}
-----
Успехов.

o615ye161
Сержант
Сообщения: 198
Зарегистрирован: 19.12.2019{, 14:47}
Репутация: 3
Имя: Сергей

Разработки ecoins

#1432

Сообщение o615ye161 » 20.12.2021{, 21:09}

Созрел еще один вопрос про блок счетчик, почему-то входы счетчика не меняют значения если скажем задавать константы через блок меню или переменником внешне, подскажите с чем это связано и можно это исправить.
Вложения
2.png
2.png (9.99 КБ) 778 просмотров

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

Разработки ecoins

#1433

Сообщение ecoins » 21.12.2021{, 02:56}

o615ye161 писал(а):
20.12.2021{, 21:09}
Созрел еще один вопрос про блок счетчик, почему-то входы счетчика не меняют значения если скажем задавать константы через блок меню или переменником внешне, подскажите с чем это связано и можно это исправить.
Для ускорения работы с счетчика параметры считываются со входом при первом запуске, далее по сбросу.
Возможно это полезно и изменить... Это не сложно. Надо подумать...

o615ye161
Сержант
Сообщения: 198
Зарегистрирован: 19.12.2019{, 14:47}
Репутация: 3
Имя: Сергей

Разработки ecoins

#1434

Сообщение o615ye161 » 21.12.2021{, 10:44}

ecoins писал(а):
21.12.2021{, 02:56}
Это не сложно. Надо подумать...
Спасибо, иногда это актуально менять значения так сказать онлайн.

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

Разработки ecoins

#1435

Сообщение ecoins » 21.12.2021{, 13:08}

o615ye161 писал(а):
21.12.2021{, 10:44}
Спасибо, иногда это актуально менять значения так сказать онлайн.
Вопрос. По Вашему мнению обновлять параметры лучше по каждому входу в счетчик(EN=1), или по условиям, например "счетчик=начальному значению" или т.п.?

o615ye161
Сержант
Сообщения: 198
Зарегистрирован: 19.12.2019{, 14:47}
Репутация: 3
Имя: Сергей

Разработки ecoins

#1436

Сообщение o615ye161 » 21.12.2021{, 20:13}

ecoins писал(а):
21.12.2021{, 13:08}
Вопрос. По Вашему мнению обновлять параметры лучше по каждому входу в счетчик(EN=1), или по условиям, например "счетчик=начальному значению" или т.п.?
Желательно что бы на входах можно было менять значения не зависимо от EN=1 или EN=0 так как нужно вести подсчет чего либо как на увеличение так и на уменьшение,и в определенный момент времени считать с увеличенным шагом ну и тому подобное, или отдельный вход от тригера чтобы при изменении значений тригер передергивал счетчик, если конечно это все возможно! Надеюсь у меня получилось сформулировать свою мысль.

Аватара пользователя
Alias
Лейтенант
Сообщения: 481
Зарегистрирован: 27.11.2017{, 13:15}
Репутация: 36
Откуда: Rus44
Имя: Michael
Контактная информация:

Разработки ecoins

#1437

Сообщение Alias » 23.12.2021{, 12:38}

ecoins писал(а):
21.12.2021{, 02:56}
Для ускорения работы с счетчика параметры считываются со входом при первом запуске
Я так понимаю, что и датчики температуры конфигурируются при первом запуске? То есть какой пользовательский пин был установлен на момент первого рабочего цикла, тот потом и используется?
Ваш блок DS18 реально очень быстр, 15мск против 8851мкс от RedSky, которым я раньше всегда пользовался. Но вот памяти отъедают зверски. И это просто катастрофа, если их много. Я хотел было совместить скорость и объем скетча, но не получилось. Мысль проще проиллюстрировать скриншотом.
11.png
Кстати, а не могли бы Вы для проектов со множеством датчиков сделать блок, который сам будет сканировать по очереди с заданным интервалом датчики на заданных пинах и передавать данные в соответствующие переменные? Тогда в проекте будет всего один блок датчика температуры в режиме мультиплексора, что реально сэкономит много ресурсов.

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

Разработки ecoins

#1438

Сообщение ecoins » 23.12.2021{, 13:23}

Alias писал(а):
23.12.2021{, 12:38}
Ваш блок DS18 реально очень быстр, 15мск против 8851мкс от RedSky, которым я раньше всегда пользовался. Но вот памяти отъедают зверски. И это просто катастрофа, если их много.
Не совсем так.
1.Сам блок и библиотека DS1820 немного памяти требует и добавление дополнительного датчика не намного увеличивает размер кода. С каждым новым блоком добавляется только область оперативной памяти (небольшая) под данные сенсора.
Так что идея с мультиплексором скорее не вполне уместна.
То, что с одним блоком сразу много памяти (а сколько?) в связано с тем, что используется библиотека RT_HW_Base, а вместе с ней библиотеки для Serial, i2c и еще разное, что все равно в проектах обычно используется. Можно конечно это и отключить, но ведь проблемы в основном возникают при использовании Arduino Nano и Uno?
Да и в них влазит достаточно много кода.
А чтобы пин опрашивался при каждом новом опросе, это можно будет сделать.
Alias писал(а):
23.12.2021{, 12:38}
Ваш блок DS18 реально очень быстр, 15мск против 8851мкс от RedSky, которым я раньше всегда пользовался.

В действительности и у нас сенсор опрашивается примерно за 5ms - переводить на опрос по прерыванию не стали.
Но у нас блоки действительно выполнены "аккуратно", и в промежутках между опросами (>1 сек) процессорное время почти не используют, а при использовании диспетчера совсем мало.
Alias писал(а):
23.12.2021{, 12:38}
Кстати, а не могли бы Вы для проектов со множеством датчиков сделать блок, который сам будет сканировать по очереди с заданным интервалом датчики на заданных пинах и передавать данные в соответствующие переменные? Тогда в проекте будет всего один блок датчика температуры в режиме мультиплексора, что реально сэкономит много ресурсов.
Это достигается уже имеющими средствами. При этом полезно установить разное время опроса. Кое-что мы в будущем добавить, чтобы и эти коллизии обходились в библиотеках.
-----
Успехов.

Аватара пользователя
Alias
Лейтенант
Сообщения: 481
Зарегистрирован: 27.11.2017{, 13:15}
Репутация: 36
Откуда: Rus44
Имя: Michael
Контактная информация:

Разработки ecoins

#1439

Сообщение Alias » 23.12.2021{, 14:06}

Спасибо за ответ! Прокомментирую развернуто.
Поскольку в моей системе планируется несколько десятков датчиков температуры, - порядка пятидесяти, - я разукрупнил проект по ряду причин на две Меги. Тем не менее, из любопытства решил сопоставить возможные затраты ресурсов.
Для начала взял свои любимые блоки от RedSky и сравнил с Вашими по времени выполнения. Инструмент - блоки отладки от Dryundel, плата - Nano. Ваши блоки выиграли со счетом 15мкс (плата 2) против 8851мкс (плата 3). Проект во вложении. Допускаю, что это не мкс, а просто попугаи, но в данном сравнении это не принципиально.
Потом сравнил объемы тестовой программы с одним блоком датчика: 8226/711 байт Ваш (плата 4) против 6118/681 от RedSky (плата 5). Разумеется, что это не показательно, поэтому тут же сделал по 10 штук. Получилось уже 9422/1242 (плата 6) против 7888/942 (плата 7). Несопоставимо больший рост занимаемой памяти при прочих равных.
Ладно, - думаю, - попробую через мультиплексор. Не получилось, о чем и писал выше. Но было бы приятно использовать один и тот же блок вместо тридцати пяти ))
Возможно, я пока мелко смотрю, тк только сейчас стал изучать Ваши наработки. Пока что с датчиков температуры ))
Разумеется, нужные для конкретного теста платы запускал по очереди галками компиляции в проекте.
Вложения
Tests.rar
(175.43 КБ) 19 скачиваний

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

Разработки ecoins

#1440

Сообщение ecoins » 23.12.2021{, 14:22}

Alias писал(а):
23.12.2021{, 14:06}
Спасибо за ответ! Прокомментирую развернуто.
Поскольку в моей системе планируется несколько десятков датчиков температуры, - порядка пятидесяти, - я разукрупнил проект по ряду причин на две Меги.
Интересная работа.
Наблюдали за одним успешным проектом (у нас немного консультировались) - порядка 50-ти сенсоров MAX6785.
Alias писал(а):
23.12.2021{, 14:06}
Потом сравнил объемы тестовой программы с одним блоком датчика: 8226/711 байт Ваш (плата 4) против 6118/681 от RedSky (плата 5). Разумеется, что это не показательно, поэтому тут же сделал по 10 штук. Получилось уже 9422/1242 (плата 6) против 7888/942 (плата 7). Несопоставимо больший рост занимаемой памяти при прочих равных.
Вроде бы по встроенной памяти больше 1534 байт, по ОЗУ 30 байт. Предположу, что если Вы сделаете проект на 20 сенсоров, то соотношение изменится в пользу наших библиотек. А если задействуете i2c, Serial, то выигрыш будет совсем очевидный.
В целом при использовании MEGA2560 параметры по памяти не столь это несущественны. Ключевое - быстродействие, отсутствие тормозов...
----
Успехов.

Закрыто

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