Разработки ecoins

ecoins
Полковник
Сообщения: 4005
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 137 раз
Поблагодарили: 153 раза

Разработки ecoins

Сообщение ecoins »

GDAN7777 писал(а): 30 окт 2020, 07:00 Еще раз перечитал.Вопросы так и остались.Ладно.Будем Вас напрягать в ветке:)
----------
GDAN7777 писал(а): 30 окт 2020, 07:00 1).ПБ меандры.Можно ли использовать его совместно с диспетчером задач?
2).На какой плате его лучше всего располагать?
Блоки меандры синхронизированы с тем же генератором, что диспетчер задач.
По сути это дополнительные (сервисные) выходы диспетчера.
Следует аккуратно использовать меандры в задачах(платах) так как если меандр 50мс и периодичность задачи 50 мс могут быть "накладки" (задача будет все время получать "0" или "1"). Хорошо выходы меандра работают в свободных задачах (ведь их периодичность порядка сотен мкс. В оперативных, быстрых, фоновых и медленных задачах лучше использовать делитель входного значения.
GDAN7777 писал(а): 30 окт 2020, 07:00 3).Делитель входного значения. Какой сигнал по форме и длительности будет на ВЫХОДАХ?
У делителя входного значения два выхода MN (меандр) и EV(событие).
Длительность меандра(полупериод)=ПЕРИОДИЧНОСТЬ ВЫЗЫВАЕМОЙ ЗАДАЧИ х ДЕЛИТЕЛЬ. Например на плате быстрой задачи (период =100мс) блок с делителем =5, будет генерить меандр(полупериод) длительностью 500мс.
EV=1 при каждом изменении значения меандра. При следующем входе в задачу 0 -> EV. Если этот сигнал подать на вход счетчика (ecoins), то его значение будет изменяться каждые 500мс.
Описанный блок автономный, не использует библиотек и состоит из одной строки кода:
EV=0; if(EN) {if(++cnt>num) {MN=!MN; cnt=1; EV=1;}};
GDAN7777 писал(а): 30 окт 2020, 07:00 4).И все-таки не понятна философия диспетчера задач.А это самое главное.Как проходит полный цикл диспетчера?Я понимаю так-каждые 10 мс на выходе quick меняется значение от 1 до 5(или от 0 до 4???)-итого 50 мс,далее на выходе fast каждые 25 мс меняется значение от 1 до 4,итого 100 мс,выход slow аналогично-1000 мс,выход back аналогично -400 мс.А как тогда на выходе frdm?
В каждый момент времени только на одном из выходов появляется значение отличное от нуля (1-5 - оперативные,1-4 - быстрые, 1-5 фоновые, 1-4 медленные). Происходит это с учетом приоритета задач. Это значит, что если одновременно наступило время выполнение оперативной и быстрой задачи, то будет такая последовательность:
1.Диспетчер.
2.Вызов оперативной задачи.
3.Диспетчер.
4.Вызов быстрой задачи.
Задачи следует проектировать аккуратно и их длительность не должна превышать несколько мс (в редких случаях 10мс). В противном случае более приоритетные задачи не дадут вызывать другие задачи.
Например - в быстрой задачи есть блок, который выполняет delay(120) при каждом входе. Как следствие - будут выполняться только оперативные и быстрые задачи.
Свободные задачи. Последовательно вызываются (№№1-20), каждый раз когда номера остальных задач =0. Эти задачи проектируются так, чтобы они занимали минимальное процессорное время (каждый вход - микрооперация или микродействие).
В простых проектах все задачи могут оформляться как свободные.
-------------------------
Общий вывод: разработчик должен представлять сколько время выполняются используемые блоки.
Например, блок RemoteXY с большим кол-во параметров на UART 115200 может выполняться до 20мс - этот блок мы оформляем как быструю задачу.
Стандартный блок HC-SR04(ультразвуковой дальномер) (очень простой код) может в зависимости от расстояния выполняться от нескольких мс до 2 сек. Такой блок лучше не использовать - есть другие, работающие по прерываниям.
Опрос АЦП(Nano,Mega) занимает порядка 130 мкс --> это оперативная или быстрая задача.
ecoins
Полковник
Сообщения: 4005
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 137 раз
Поблагодарили: 153 раза

Разработки ecoins

Сообщение ecoins »

GDAN7777 писал(а): 30 окт 2020, 12:35 P.S.Чувствую,придется собирать логический анализатор
И получите большинство ответов на большинство собственных вопросов.
Поскольку приходится использовать внешние библиотеки и разные ПБ другого действенного способа узнать их "тормознутость" и сложно придумать.
ecoins
Полковник
Сообщения: 4005
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 137 раз
Поблагодарили: 153 раза

Разработки ecoins

Сообщение ecoins »

GDAN7777 писал(а): 30 окт 2020, 16:07 Что посоветуете?Несложное и с подключением к компьютеру?
Купить готовое:
мы пользуемся DSLogic на 16 каналов, подойдет самый простой. У нас на 400мгц.
https://aliexpress.ru/item/400080650201 ... web201603_

пользовались и дешевым, 24мгц:
https://aliexpress.ru/item/400014659550 ... web201603_

и еще такой есть, попробовали, неплохой, 100мгц
https://aliexpress.ru/item/400081558957 ... web201603_
vovka1973
Подполковник
Сообщения: 1202
Зарегистрирован: 14 фев 2016, 14:16
Откуда: kazahstan
Благодарил (а): 32 раза
Поблагодарили: 6 раз

Разработки ecoins

Сообщение vovka1973 »

ecoins писал(а): 30 окт 2020, 17:21
GDAN7777 писал(а): 30 окт 2020, 16:07 Что посоветуете?Несложное и с подключением к компьютеру?
Купить готовое:
мы пользуемся DSLogic на 16 каналов, подойдет самый простой. У нас на 400мгц.
https://aliexpress.ru/item/400080650201 ... web201603_

пользовались и дешевым, 24мгц:
https://aliexpress.ru/item/400014659550 ... web201603_

и еще такой есть, попробовали, неплохой, 100мгц
https://aliexpress.ru/item/400081558957 ... web201603_
а такой нормальный [spoiler]https://aliexpress.ru/item/32656469310. ... 1592623649[/spoiler]
Изображение
ecoins
Полковник
Сообщения: 4005
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 137 раз
Поблагодарили: 153 раза

Разработки ecoins

Сообщение ecoins »

GDAN7777 писал(а): 30 окт 2020, 19:11 ecoins,можно как-нибудь поправить блок для вывода переменной для LCD,чтобы суффикс после этой переменной не ограничивался одним символом.Пример-мне не нужно выводить амперы,мне нужна емкость---mA/h.
Это проще сделать следующим образом: в нужную позицию выводите текст и выравниваете числовое вправо, чтобы оно примыкало к тексту.
GDAN7777 писал(а): 30 окт 2020, 19:11 И вдогонку-будут ли Ваши библиотеки работать на сторонних контроллерах(mega_16,mega_32,mega_64,mega_128)?У меня таких в запасниках достаточное количество без дела валяется.Сделал файлы описаний по мотивам GitHub.Со стандартными блоками вроде все работает.Сейчас попробовал перевести проект на Ваши библиотеки и вот такие эрроры посыпались
Задумано так, что должны работать, но при этом не будут работать многие функции связанные с кол-вом пином, UART и прочее.
Если контроллер неизвестный, то он должен опознаваться как не известный - то, что ошибка -значит мне что-то надо поправить.
В целом правильнее добавить описание контроллера - скажите какой важно и я добавлю, но без тестирования (у меня не все контроллеры есть).
Описания для контроллера находятся в библиотеке RT_HW_BASE.h и выглядят следующим образом (пример для MEGA2560)
[spoiler]
//*************************************************************************************************
// 1.2 ПЛАТФОРМА AVR - MEGA2560
//*************************************************************************************************
#if !defined(RT_HW_BOARD_CODE) && defined(ARDUINO_ARCH_AVR) && (defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__))
#define RT_HW_BOARD_CODE RT_HW_ID_BOARD_MEGA2560
#define RT_HW_BOARD_MEGA2560
#define RT_HW_BOARD_NAME "MEGA2560"
//------Параметры контроллера общие-------------------------------------------------------------------
enum{RT_HW_PIN_QNT_MAX=70, RT_HW_FCPU=16, RT_HW_LED_BUILTIN=13, RT_HW_ADC_MAX_MV=5000};
enum{RT_HW_SYS_DEPTH=12, RT_HW_ADC_DEPTH=10, RT_HW_ADC_DRIFT=4, RT_HW_ADC_NULL=3, RT_HW_PWM_DEPTH=8, RT_HW_DAC_DEPTH=0};
//------Параметры i2c---------------------------------------------------------------------------------
#define RT_HW_I2C
enum{RT_HW_I2C_SDA=20, RT_HW_I2C_SCL=21, RT_HW_I2C_FREQ=400};
//------Параметры SPI---------------------------------------------------------------------------------
#define RT_HW_SPI
enum{RT_HW_SPI_SS=53, RT_HW_SPI_MOSI=51, RT_HW_SPI_MISO=50, RT_HW_SPI_SCK=52};
//------Параметры UART-----------------------------------------------------------------------------
#define RT_HW_UART
#define RT_HW_UART1
#define RT_HW_UART2
#define RT_HW_UART3
#define RT_HW_UARTS
enum{RT_HW_UART_RX=0, RT_HW_UART_TX=1, RT_HW_UARTS_RX=68, RT_HW_UARTS_TX=69,
RT_HW_UART1_RX=19, RT_HW_UART1_TX=18, RT_HW_UART2_RX=17, RT_HW_UART2_TX=16, RT_HW_UART3_RX=15, RT_HW_UART3_TX=14};
//-----Тестовые параметры--------------------------------------------------------------------------
enum{RT_HW_PIN_CONTROL=42, RT_HW_PIN_DEBUG_1=43, RT_HW_PIN_DEBUG_2=44, RT_HW_PIN_DEBUG_3=45};
enum{RT_HW_PIN_LED=7, RT_HW_PIN_BUTTON=4, RT_HW_PIN_PWM=5, RT_HW_PIN_ADC=54};
enum{RT_HW_PIN_DAC=-1, RT_HW_PIN_TCH=-1, RT_HW_PIN_PWM2=6, RT_HW_PIN_DEVICE=-1};
enum{RT_HW_PIN_SPI_595=46, RT_HW_PIN_SPI_LCD=47, RT_HW_PIN_SPI_NRF2401=48, RT_HW_PIN_SPI_DEVICE=49};
//------Макросы контроля номеров пинов-------------------------------------------------------------
#define RT_HW_PIN_CHECK_ALL(p) (((p)<70) ? (p):(-1)) //--Пин любого типа;
#define RT_HW_PIN_CHECK_DIN(p) (((p)>=2) && ((p)<70) ? (p):(-1)) //--Наличие пина типа DIN;
#define RT_HW_PIN_CHECK_ADC(p) (((p)>=54) && ((p)<70) ? (p):(-1)) //--Наличие пина типа ADC;
#define RT_HW_PIN_CHECK_DOT(p) (((p)>=2) && ((p)<70) ? (p):(-1)) //--Наличие пина типа DOT;
#define RT_HW_PIN_CHECK_PWM(p) (digitalPinHasPWM(p) ? (p):(-1)) //--Наличие пина типа PWM;
#define RT_HW_PIN_CHECK_DAC(p) (-1) //--Наличие пина типа DAC;
#define RT_HW_PIN_CHECK_TCH(p) (-1) //--Наличие пина типа TCH;
#define RT_HW_PIN_CHECK_DIR(p) (((p)>=2) && ((p)<54) ? (p):(-1)) //--Наличие пина типа DIR(прямое управление)
#define RT_HW_PIN_CHECK_INT(p) digitalPinToInterrupt(p) //--Наличие у пина прерывания
#endif
[/spoiler]
ecoins
Полковник
Сообщения: 4005
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 137 раз
Поблагодарили: 153 раза

Разработки ecoins

Сообщение ecoins »

GDAN7777 писал(а): 30 окт 2020, 21:24 Спасибо,я уже посмотрел.С моими сишными познаниями буду долго разбираться,что где исправлять-добавлять.Если не сильно затруднит,то добавьте описание на atmega_16
Не вполне ясно что-такое atmega16 в FLProg Arduino IDE? Если это чип atmega168, то грузится должно, если указать Nano.
И flash всего 16кБ.
Ну совсем не перспективно - гораздо лучше STM32F103C.
o615ye161
Сержант
Сообщения: 226
Зарегистрирован: 19 дек 2019, 14:47
Имя: Сергей

Разработки ecoins

Сообщение o615ye161 »

ecoins писал(а): 29 окт 2020, 03:11 Добавил в проект ESP диспетчер задач и вот такие ошибки, на Mega2560 этот диспетчер работает в чем может быть причина
У меня компилируется без ошибок - ядро ESP8266 версии 2.5.1
Поставил версию ядра 2.5.1 перестал работать UART и Modbus с Kascada cloud?, пришлось удалить диспетчер задач, ядро 2.5.1 и поставить 2.4.2 и проект ожил все стало работать, а почему диспетчер задач не работает на ядре 2.4.2?
ecoins
Полковник
Сообщения: 4005
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 137 раз
Поблагодарили: 153 раза

Разработки ecoins

Сообщение ecoins »

o615ye161 писал(а): 30 окт 2020, 23:02 Поставил версию ядра 2.5.1 перестал работать UART и Modbus с Kascada cloud?, пришлось удалить диспетчер задач, ядро 2.5.1 и поставить 2.4.2 и проект ожил все стало работать, а почему диспетчер задач не работает на ядре 2.4.2?
Не думаю, что работа диспетчера задач как-то связано с ядром 2.4.2. В диспетчере задач от Arduino используется только millis().
Как-нибудь посмотрю. Сейчас "застрял" на библиотеке для сенсора HTU21 и наработки по дисплею Nextion хочется довести до практического применения в FLProg.
o615ye161
Сержант
Сообщения: 226
Зарегистрирован: 19 дек 2019, 14:47
Имя: Сергей

Разработки ecoins

Сообщение o615ye161 »

ecoins писал(а): 30 окт 2020, 23:11 Не думаю, что работа диспетчера задач как-то связано с ядром 2.4.2
Я диспетчер и не виню, дело в ядре 2.5.1 не работает каскада, а 2.4.2 не компилируется проект с диспетчером.

Отправлено спустя 6 минут 15 секунд:
ecoins писал(а): 30 окт 2020, 23:11 Сейчас "застрял" на библиотеке для сенсора HTU21 и наработки по дисплею Nextion хочется довести до практического применения в FLProg.
Ждём с нетерпением!
o615ye161
Сержант
Сообщения: 226
Зарегистрирован: 19 дек 2019, 14:47
Имя: Сергей

Разработки ecoins

Сообщение o615ye161 »

ecoins, можете посмотреть проект и подсказать правильно ли я распределил задачи по платам согласно вашего диспетчера?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
ecoins
Полковник
Сообщения: 4005
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 137 раз
Поблагодарили: 153 раза

Разработки ecoins

Сообщение ecoins »

o615ye161 писал(а): 31 окт 2020, 10:57 ecoins, можете посмотреть проект и подсказать правильно ли я распределил задачи по платам согласно вашего диспетчера?
Сегодня не на рабочем месте, посмотрю завтра.
o615ye161
Сержант
Сообщения: 226
Зарегистрирован: 19 дек 2019, 14:47
Имя: Сергей

Разработки ecoins

Сообщение o615ye161 »

ecoins писал(а): 31 окт 2020, 14:04 Сегодня не на рабочем месте, посмотрю завтра.
Спасибо
ecoins
Полковник
Сообщения: 4005
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 137 раз
Поблагодарили: 153 раза

Разработки ecoins

Сообщение ecoins »

o615ye161 писал(а): 31 окт 2020, 10:57 ecoins, можете посмотреть проект и подсказать правильно ли я распределил задачи по платам согласно вашего диспетчера?
Посмотрел Ваш проект. Интересный, а с точки зрения планирования задач в целом нормальный.
Предложения есть, но не все сразу (проект большой), и что-то Вы поправите сами и потом следующую версию можно посмотреть еще раз.
----------
На плате 20 неверно выделять фронт сигнала наличие сети - один будет держаться один цикл свободных задач и его могут не увидеть другие задачи.
Фронт следует выделять в том месте, где он используется - возможно и несколько раз, это ни на что не влияет..
----------
Мне показалось, что Вам возможно не хватает номеров задач.
Ничему не противоречит, если несколько плат будут иметь несколько номеров.
При необходимости можно генерить из одного номера задач несколько дополнительных номеров и привязывать их к платам..
----------
1. Загрузил Ваш проект (без подключения внешних пультов, KaScada) и посмотрел н логическом анализаторе.
[spoiler]
foto_1.jpg
[/spoiler]
На логическом анализаторе видно, что основной цикл 31mcs(но хорошо), но есть несколько "тормозов":
-3ms - это не страшно;
-34ms с периодичностью 1сек, неприятно;
-114ms c периодичностью 1 сек, нехорошо.
2.Сейчас понятно:
114ms - это сенсор HTU21. Новая библиотека (не тормозящий вариант) разрабатывается. Этот сенсор можно вызывать реже - внутри стандартного блока есть такая опция.
34ms - это ADS115. Хорошее устройство. Под него тоже будет разрабатываться библиотека. Сейчас этот сенсор опрашивается 1раз в сек.
На плате 13 4 DS1820 с одним и тем же периодом вызова 1000мс. В результате измерение может совпадать по времени. Полезно или сделать разные периоды вызова (например 800,920,1150, 1270) или правильнее сделать их свободными задачами с номерами например 5,9,14,18.
3. "Временные тормоза" добавит и обмен с KaScada. Но это особенность MOdbus FLProg, со временем эта проблема будет решена, а сейчас она не критична. Пока можно существенно улучшить ситуацию с переходом на скорость обмена на 115200.
-----
Проект понравился, желаю успехов.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
o615ye161
Сержант
Сообщения: 226
Зарегистрирован: 19 дек 2019, 14:47
Имя: Сергей

Разработки ecoins

Сообщение o615ye161 »

ecoins писал(а): 01 ноя 2020, 08:59
o615ye161 писал(а): 31 окт 2020, 10:57 ecoins, можете посмотреть проект и подсказать правильно ли я распределил задачи по платам согласно вашего диспетчера?
Посмотрел Ваш проект. Интересный, а с точки зрения планирования задач в целом нормальный.
Предложения есть, но не все сразу (проект большой), и что-то Вы поправите сами и потом следующую версию можно посмотреть еще раз.
----------
На плате 20 неверно выделять фронт сигнала наличие сети - один будет держаться один цикл свободных задач и его могут не увидеть другие задачи.
Фронт следует выделять в том месте, где он используется - возможно и несколько раз, это ни на что не влияет..
----------
Мне показалось, что Вам возможно не хватает номеров задач.
Ничему не противоречит, если несколько плат будут иметь несколько номеров.
При необходимости можно генерить из одного номера задач несколько дополнительных номеров и привязывать их к платам..
----------
1. Загрузил Ваш проект (без подключения внешних пультов, KaScada) и посмотрел н логическом анализаторе.
[spoiler]
foto_1.jpg
[/spoiler]
На логическом анализаторе видно, что основной цикл 31mcs(но хорошо), но есть несколько "тормозов":
-3ms - это не страшно;
-34ms с периодичностью 1сек, неприятно;
-114ms c периодичностью 1 сек, нехорошо.
2.Сейчас понятно:
114ms - это сенсор HTU21. Новая библиотека (не тормозящий вариант) разрабатывается. Этот сенсор можно вызывать реже - внутри стандартного блока есть такая опция.
34ms - это ADS115. Хорошее устройство. Под него тоже будет разрабатываться библиотека. Сейчас этот сенсор опрашивается 1раз в сек.
На плате 13 4 DS1820 с одним и тем же периодом вызова 1000мс. В результате измерение может совпадать по времени. Полезно или сделать разные периоды вызова (например 800,920,1150, 1270) или правильнее сделать их свободными задачами с номерами например 5,9,14,18.
3. "Временные тормоза" добавит и обмен с KaScada. Но это особенность MOdbus FLProg, со временем эта проблема будет решена, а сейчас она не критична. Пока можно существенно улучшить ситуацию с переходом на скорость обмена на 115200.
-----
Проект понравился, желаю успехов.
Благодарю за очень подробное разъяснение! Буду корректировать!

Отправлено спустя 9 часов 35 минут 13 секунд:
ecoins писал(а): 01 ноя 2020, 08:59 Пока можно существенно улучшить ситуацию с переходом на скорость обмена на 115200.
Я все переделал по вашим рекомендациям, только ModBus перевести на скорость не получается так как этот элемент связи реализован через HC-06, а он кроме как на скорости 9600 отказывается работать, ну или сама мега? Тут я уже точно не могу сказать. Проект еще увеличивается в своем функционале чуть позже скину еще раз. Спасибо за помощь!
o615ye161
Сержант
Сообщения: 226
Зарегистрирован: 19 дек 2019, 14:47
Имя: Сергей

Разработки ecoins

Сообщение o615ye161 »

ecoins писал(а): 01 ноя 2020, 08:59 При необходимости можно генерить из одного номера задач несколько дополнительных номеров и привязывать их к платам..
Расскажите пожалуйста как это реализовать?
ecoins
Полковник
Сообщения: 4005
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 137 раз
Поблагодарили: 153 раза

Разработки ecoins

Сообщение ecoins »

o615ye161 писал(а): 02 ноя 2020, 11:31 Расскажите пожалуйста как это реализовать?
Ниже тестовый проект.
Блоки div.EN (делитель событий),div.task(делитель задач), ms.val(вывод на консоль) следует брать непосредственно из проекта.
Выполняемые операции проекта:
1.Привязка к медленной задачи №2 - на выходе событие с с периодом 1 сек синхронизованное с вызовом медленной задачи 2.
2.Делитель полученного события на 10 - на выходе событие с периодом 10с.
3. Генератор 8-ми номеров задач как событие от 1 до 6 (появляются на 1 цикл loop), в промеждутке значение =0.
4.Результат выводится на консоль. Каждый номер появляется с периодичностью 60 сек.
[spoiler]
BASE_Шаблон для проектов_расширенный_v02.flp
[/spoiler]
Проект в графической форме:
[spoiler]
Вывод номеров задач_проект.jpg
[/spoiler]
Результат теста на экране - изменение в цикле номеров задач от 1 до 10, слева время.
Видно, что изменение 1раз в 10 сек.
[spoiler]
Вывод номеров задач.JPG
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
o615ye161
Сержант
Сообщения: 226
Зарегистрирован: 19 дек 2019, 14:47
Имя: Сергей

Разработки ecoins

Сообщение o615ye161 »

Здравствуйте Ecoins, подскажите пожалуйста, хотел диспетчер запустить на Atmega328p, а он не работает, весь проект не работает, в чем может быть причина?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
ecoins
Полковник
Сообщения: 4005
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 137 раз
Поблагодарили: 153 раза

Разработки ecoins

Сообщение ecoins »

o615ye161 писал(а): 05 ноя 2020, 10:07 Здравствуйте Ecoins, подскажите пожалуйста, хотел диспетчер запустить на Atmega328p, а он не работает, весь проект не работает, в чем может быть причина?
Сейчас выложу блок HTU21 и посмотрю Ваш проект.

Отправлено спустя 25 минут 25 секунд:
GDAN7777 писал(а): 29 окт 2020, 10:25 Датчик хороший,спора нет.Но у меня 20 шт HTU21.Брал с запасом,так как у них очень хорошая точность измерения при адекватной цене.
Пришлось повозиться - поглубже погрузился в библиотеки Wire.h
Выкладываю библиотеку:
RT_25_HW_HTU21_v0.1.zip
Тест сенсоров - на плате 7 есть блок, которым можно пользоваться.
BASE_Шаблон_add_v03_Тест_сенсоров_10_051120.zip
Тест выводит на LCD 20x4 показания сенсоров ds1820,DHT22,BME280,DHTU21.
Удивился - все показания примерно равны (думал у DHT22 будут проблемы с точностью).
Все блоки отфильтровывают ошибочные показания и допускают горячее переподключение.
Наиболее совершенные алгоритмы в последней разработке (HTU21) - со временем будут "шлифоваться" и другие блоки.
IMG_2928.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
RedSky
Лейтенант
Сообщения: 576
Зарегистрирован: 19 дек 2016, 20:07
Откуда: Днепропетровск
Имя: Алексей
Поблагодарили: 1 раз

Разработки ecoins

Сообщение RedSky »

Приветствую, [ref]ecoins[/ref]. Обращаюсь (не по теме) как к сведущим в железе, если не трудно напишите как сможете. Имеется ESP32 и стоит задача сохранить в переменную (и желательно в eeprom) набор данных, принятых из uart. Основная проблема, что объем данных больше буфера (до 3000 знаков ascii).
С отправкой таких объемов проблем нет, единственное неудобство приоставка всей программы на время передачи. Но принять получается лишь небольшой фрагмент. Возможно ли решить задачу без управления потоком? В случае использования пк с терминальной программой вместо esp такое работает.
ecoins
Полковник
Сообщения: 4005
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 137 раз
Поблагодарили: 153 раза

Разработки ecoins

Сообщение ecoins »

o615ye161 писал(а): 05 ноя 2020, 10:07 Здравствуйте Ecoins, подскажите пожалуйста, хотел диспетчер запустить на Atmega328p, а он не работает, весь проект не работает, в чем может быть причина?
Загрузил Ваш проект - проверил логическим анализатором. Работает, цикл loop() =12мкс.
Какие возможны источники проблем.
Вы в проекте используете UART с настройками на скорость 9600. Эта настройка выполняется в setup().
На плате диспетчера находится блок настройки консоли - он по умолчанию настраивает UART на скорость 115200 и делает это уже в loop().
Получается, что у Вас UART настроен на 115200 (не проверял).
Рекомендация: уберите с платы диспетчер блок настройки консоли (он расположен род диспетчером).
Успехов.
-------------------------
P.S.Много времени отняла предыдущая работа - библиотека HTU21. Сам сенсор не сложный, и библиотека получилась небольшая - но углубился в исследования разных аспектов и работа затянулась.
Надеюсь теперь возобновится работа над библиотеками для дисплея Nextion - уже проведено много исследований и кое-что уже написано.
Закрыто

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

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

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