Страница 37 из 80

Разработки ecoins

Добавлено: 20 окт 2020, 11:51
ecoins
Продолжение #727
Перечень источников "торможения":
1. После каждой посылки использованные блоки(библиотеки) осуществляют задержки 130 мс - это время надо высвободить.
2. Длительность самой посылки 20мс. Её можно уменьшить перейти со скорости обмена с 9600 на 115200.
3. Запрос в каждом цикле - это избыточно. И лучше сделать так, чтобы сам дисплей присылал переменную с состояниями кнопок и делал это по изменению.
4. И в любом проекте целесообразно планировать вызов по времени плат и блоков - они не выполняются мгновенно...

Разработки ecoins

Добавлено: 20 окт 2020, 14:41
grin-mpx
ecoins писал(а): 20 окт 2020, 11:51 И лучше сделать так, чтобы сам дисплей присылал переменную с состояниями кнопок и делал это по изменению.
Сомнительно. Если контроллер в это время чем то занят, например приемом посылки с UART? , то информация с Nextion скорее всего потеряется.

Разработки ecoins

Добавлено: 20 окт 2020, 15:11
ecoins
grin-mpx писал(а): 20 окт 2020, 14:41 Сомнительно. Если контроллер в это время чем то занят, например приемом посылки с UART? , то информация с Nextion скорее всего потеряется.
Не потеряется, у UART есть буфера. Будем пробовать и испытывать.

Разработки ecoins

Добавлено: 20 окт 2020, 15:15
vovka1973
ecoins писал(а): 20 окт 2020, 15:11 Не потеряется, у UART есть буфера. Будем пробовать и испытывать.
ждем от вас блоков :smile9:

Разработки ecoins

Добавлено: 21 окт 2020, 17:06
o615ye161
Скажите пожалуйста ПБ HTU21 GY-21 у вас есть, а то на стандартном блоке Flprog очень часто Mega2560 виснет по шине I2C?

Разработки ecoins

Добавлено: 21 окт 2020, 18:31
ecoins
o615ye161 писал(а): 21 окт 2020, 17:06 Скажите пожалуйста ПБ HTU21 GY-21 у вас есть, а то на стандартном блоке Flprog очень часто Mega2560 виснет по шине I2C?
Сенсор есть, но ПБ не делал. Как нибудь сделаем...
----------
Только что проверил существующий ПБ FLProg.
В принципе он рабочий, но:
1. В каждом цикле вызова в библиотеке два вызова delay(55) - итого 110мс;
2. Если при ожидании ответа от сенсора потеряется один байт, то будет висеть (может бесконечно...).
Обычно так бывает при плохом контакте, но так конечно библиотека работать не должна.
В своих разработках мы всегда предусматриваем тайм-аут и повторный опрос сенсора.
delay() не используем.
---------
У нас сделан хороший ПБ для BME280 - сенсор посложнее, но и лучше, и порядок цен тот же.

Разработки ecoins

Добавлено: 22 окт 2020, 00:23
o615ye161
ecoins писал(а): 21 окт 2020, 18:31
o615ye161 писал(а): 21 окт 2020, 17:06 Скажите пожалуйста ПБ HTU21 GY-21 у вас есть, а то на стандартном блоке Flprog очень часто Mega2560 виснет по шине I2C?
Сенсор есть, но ПБ не делал. Как нибудь сделаем...
----------
Только что проверил существующий ПБ FLProg.
В принципе он рабочий, но:
1. В каждом цикле вызова в библиотеке два вызова delay(55) - итого 110мс;
2. Если при ожидании ответа от сенсора потеряется один байт, то будет висеть (может бесконечно...).
Обычно так бывает при плохом контакте, но так конечно библиотека работать не должна.
В своих разработках мы всегда предусматриваем тайм-аут и повторный опрос сенсора.
delay() не используем.
---------
У нас сделан хороший ПБ для BME280 - сенсор посложнее, но и лучше, и порядок цен тот же.
В наличии есть только BMP. Было-бы очень здорово если вы переработалибы библиотеку и сделали ПБ HTU21! Тогда с Mega2560 будет работать поприятнее, а так очень часто зависает, причём зависает именно Mega2560 на nano такого не замечал, приходится постоянно перезагружать контроллер!

Отправлено спустя 15 минут 58 секунд:
Вопрос по диспетчеру задач, если опрос датчика DS18B20 поставить как медленная задача и записать его в массив, а из массива уже читать как быстрая задача, это может оптимизировать работу контроллера?

Разработки ecoins

Добавлено: 22 окт 2020, 11:52
ecoins
o615ye161 писал(а): 22 окт 2020, 00:23 Вопрос по диспетчеру задач, если опрос датчика DS18B20 поставить как медленная задача и записать его в массив, а из массива уже читать как быстрая задача, это может оптимизировать работу контроллера?
Из описания к ПБ " Рекомендуется подключать блок как оперативную, быструю или свободную задачу".
На оптимизацию предлагаемый выбор особо не влияет - все делается в самой библиотеке.

Разработки ecoins

Добавлено: 22 окт 2020, 16:01
ecoins
o615ye161 писал(а): 22 окт 2020, 00:23 Было-бы очень здорово если вы переработалибы библиотеку и сделали ПБ HTU21! Тогда с Mega2560 будет работать поприятнее, а так очень часто зависает, причём зависает именно Mega2560 на nano такого не замечал, приходится постоянно перезагружать контроллер!
Если с Nano работает, а с MEGA2560 зависает, то проблема глубже:
1. Возможно на MEGA2560 похуже реализовано физическое подключение (плохой контакт).
2.Системная проблема настройки C++ для MEGA2560. Долго занимался этой проблемой - тесты работали на Nano,DUE,ESP8266,ESP32,STM32 , на MEGA2560 то работали, то зависали. В итоге удалось обнаружить проблему.
Она связана с оператором switch(){} - особенно когда там множественный выбор. Компилятор ошибается с адресацией (применяет короткую вместо полной).
В библиотеках ecoins мы отказались от применения этого оператора, тем более у него есть еще системные недостатки - об этом продолжаются дискуссии на форумах.
Исследования показания, что альтернативный метод не медленнее оператора switch().

Разработки ecoins

Добавлено: 22 окт 2020, 18:21
o615ye161
ecoins писал(а): 22 окт 2020, 16:01
o615ye161 писал(а): 22 окт 2020, 00:23 Было-бы очень здорово если вы переработалибы библиотеку и сделали ПБ HTU21! Тогда с Mega2560 будет работать поприятнее, а так очень часто зависает, причём зависает именно Mega2560 на nano такого не замечал, приходится постоянно перезагружать контроллер!
Если с Nano работает, а с MEGA2560 зависает, то проблема глубже:
1. Возможно а MEGA2560 похуже реализовано физическое подключение (плохой контакт).
2.Системная проблема настройки C++ для MEGA2560. Долго занимался этой проблемой - тесты работали на Nano,DUE,ESP8266,ESP32,STM32 , на MEGA2560 то работали, то зависали. В итоге удалось обнаружить проблему.
Она связана с оператором switch(){} - особенно когда там множественный выбор. Компилятор ошибается с адресацией (применяет короткую вместо полной).
В библиотеках ecoins мы отказались от применения этого оператора, тем более у него есть еще системные недостатки - об этом продолжаются дискуссии на форумах.
Исследования показания, что альтернативный метод не медленнее оператора switch().
Зависание происходит еще от наводок на I2C, но сам блок HTU эти глюки увеличивает, удалось значительно сократить количество зависаний путем внедрения в схему 4 неполярных конденсатора емкостью 1nF и одного резистора на 10kO.Может кому то будет полезно, но обязательно на шине I2C должен висеть какой то датчик или LCD

Разработки ecoins

Добавлено: 22 окт 2020, 18:28
nalnik
o615ye161 писал(а): 22 окт 2020, 18:21 удалось значительно сократить количество зависаний путем внедрения в схему 4 неполярных конденсатора емкостью 1nF и одного резистора на 10kO.Может кому то будет полезно, но обязательно на шине I2C должен висеть какой то датчик или LCD
ЕРЕСЬ :smile453:

Разработки ecoins

Добавлено: 22 окт 2020, 18:50
SSSergeich
nalnik писал(а): 22 окт 2020, 18:28 ЕРЕСЬ :smile453:
ПЛАЦЕБО! :yes:

Разработки ecoins

Добавлено: 22 окт 2020, 19:05
nalnik
SSSergeich писал(а): 22 окт 2020, 18:50ПЛАЦЕБО!
Это вредитель.
Соединить - SDA и SCL через хрен знаешь что. Для "ключа морзянки" может и поможет.

Разработки ecoins

Добавлено: 22 окт 2020, 20:02
SSSergeich
nalnik писал(а): 22 окт 2020, 19:05Это вредитель.
надо верить в чудеса!

Разработки ecoins

Добавлено: 22 окт 2020, 20:36
o615ye161
Это нужно для сглаживания помех, по другому не работает, с фильтрами уже трое суток работает без глюков, для начала проверьте, а потом высказывайте, а то не проверил и высказывает свои теории! Я делюсь реально рабочей схемой.

Разработки ecoins

Добавлено: 22 окт 2020, 21:33
ecoins
o615ye161 писал(а): 22 окт 2020, 18:21 .Может кому то будет полезно, но обязательно на шине I2C должен висеть какой то датчик или LCD
Для уверенности мы подтягиваем SCL и SDA резисторами 10к к питанию.

Разработки ecoins

Добавлено: 22 окт 2020, 21:59
o615ye161
ecoins писал(а): 22 окт 2020, 21:33
o615ye161 писал(а): 22 окт 2020, 18:21 .Может кому то будет полезно, но обязательно на шине I2C должен висеть какой то датчик или LCD
Для уверенности мы подтягиваем SCL и SDA резисторами 10к к питанию.
Подтяжка есть, один датчик на проводе длинной 12м HTU, второй 6м BMP280, хочешь не хочешь помеха прилетает!
Изображение

Разработки ecoins

Добавлено: 22 окт 2020, 22:02
Ingwar
o615ye161 писал(а): 22 окт 2020, 20:36 по другому не работает,
o615ye161 писал(а): 22 окт 2020, 20:36 Я делюсь реально рабочей схемой.
Думаю проблема в схемотехнике. А создание таких "фильтров" не что иное поиск эмпирическим методов костылей, вместо грамотного расключения.

Разработки ecoins

Добавлено: 22 окт 2020, 22:44
Nikan
Ingwar писал(а): 22 окт 2020, 22:02 Думаю проблема в схемотехнике. А создание таких "фильтров" не что иное поиск эмпирическим методов костылей, вместо грамотного расключения.
проблема отсутствии знаний и желания их получить (
шина I2C очень критична к емкости проводников, отсюда - чем длиннее провода тем больше емкость, соответственно надо уменьшать сопротивление подтягивающих резисторов. А не дополнительные кондеры вешать

https://radioprog.ru/post/497

Разработки ecoins

Добавлено: 23 окт 2020, 09:15
o615ye161
Nikan писал(а): 22 окт 2020, 22:44
Ingwar писал(а): 22 окт 2020, 22:02 Думаю проблема в схемотехнике. А создание таких "фильтров" не что иное поиск эмпирическим методов костылей, вместо грамотного расключения.
проблема отсутствии знаний и желания их получить (
шина I2C очень критична к емкости проводников, отсюда - чем длиннее провода тем больше емкость, соответственно надо уменьшать сопротивление подтягивающих резисторов. А не дополнительные кондеры вешать

https://radioprog.ru/post/497
Даже если провод 35см, и это устройство находится там где есть наводки от сети, всеравно происходят зависания, умничать все могут ну пока не один не предложил рабочую схему, только сопли размазываете по тазику, иногда фильтры помогают там где стандартные решения не работают!