Это то понятно. А окончанием фрейма что является ? Та же пауза более 1.5 символов.Фрейм - это последовательность символов с паузой от 3.5 символа в начале и без разрыва более 1.5 символа.
Это то понятно. А окончанием фрейма что является ? Та же пауза более 1.5 символов.Фрейм - это последовательность символов с паузой от 3.5 символа в начале и без разрыва более 1.5 символа.
RF Tx Power: 75 пингвина решило и еще пару проблем по стабильности.модули плохо работают при "RF Tx Power: 82"
А на это однозначного ответа нет. Такова специфика. Но указано, что следующий фрейм должен иметь перед собой паузу в 3.5 символа.Это то понятно. А окончанием фрейма что является ? Та же пауза более 1.5 символов.
Вопрос не ясен. Что и кому и когда?Возможно в коде задать значение IP для клиента как значение по умолчанию в TCP2UART?
Пользоваться init.ini не хочется
Есть. Всё естьА это однозначного ответа нет.
Вот и ответыВслед за последним передаваемым символом также следует интервал тишины продолжительностью не менее 3.5 символов. Новое сообщение может начинаться после этого интервала.
Фрейм сообщения передается непрерывно. Если интервал тишины продолжительностью 1.5 возник во время передачи фрейма, принимающее устройство заканчивает прием сообщения и следующий байт будет воспринят как начало следующего сообщения.
Таким образом, если новое сообщение начнется раньше 3.5 интервала, принимающее устройство воспримет его как продолжение предыдущего сообщения. В этом случае устанавливается ошибка, так как будет несовпадение контрольных сумм.
А на это однозначного ответа нет. Такова специфика. Но указано, что следующий фрейм должен иметь перед собой паузу в 3.5 символа.
А вам что написал?Есть. Всё есть
Вот и ответы
Вот тут уже не оговаривается. Пользователь сам решает, какое время мастер будет ждать таймаут от подчинённого.Пользователь может устанавливать продолжительность интервала таймаута в течении которого головное устройство будет ожидать ответа от подчиненного. Если подчиненный обнаружил ошибку передачи, то он не формирует ответ главному.
Я успел быстрее прочитать Ваше сообщение, чем Вы его отредактироватьА вам что написал?
Что касается таймаутов по ответам :Вот тут уже не оговаривается. Пользователь сам решает, какое время мастер будет ждать таймаут от подчинённого.
Время ответа нормируется в доп. ограничении.
Я не редактирую, а дописываю - уточняю. И тут не гонка по кол-ву сообщений в секЯ успел быстрее прочитать Ваше сообщение, чем Вы его отредактировать
Т.е. мастер имеет полное право гнать последовательно тысячу фреймов "всем" (адрес = 0) с паузой в 3.5 символа, а устройства должны их всех отработать и не давать ответов, т.к. адрес сообщения "для всех".
Это и решено в прошивке Modbus хоть ка-то. Ещё встроен анализ "коллизии" перед выводом ответа - если в паузу вклинялись символы или помеха, то мастер или другие не воспримут этот фрейм. Ещё бы хорошо встроить ответ о тай-ауте при истечении времени ответа, чтобы мастер не тупил.А я и не гоняюсь Ну не увидел Вашей дописи, чтож теперь
В общем, мысль я уловил. Измерениме времени между байтами, Вы решаете задачу разделения фреймов между собой, расчитывая на то, что попадутся добросовестные производители и сделают реально паузу между фреймами в несколько микросекунд Так бы сразу и сказали. А то - каллбеки чтоб вызывать, ...
каллбек надо вызывать когда приняты все данные, чтобы сообщить об этом пользовательской программе, для её дальнейшего решения (отвечать, не отвечать, что-то сделать, ...)
перефразирую: Настройку по умолчанию имени точки доступа задаем в esp8266web/wifi.h at master · pvvx/esp8266web · GitHubВопрос не ясен. Что и кому и когда?
С прошедшим!С праздником!
Где-то вписать new_tcp_client_url("ваш url"). По первому старту строка не задана и нет такого блока в сохранениях эмулятора EEPROM в Flash.перефразирую: Настройку по умолчанию имени точки доступа задаем в esp8266web/wifi.h at master · pvvx/esp8266web · GitHub
скорость порта тут esp8266web/flash_eep.h at master · pvvx/esp8266web · GitHub
Где можно задать значение для TCP2UART0 Server IP: попадающее в ~cfg_tcp_url~ ?
Более одного соединения у TCP2UART невозможно. Буфера UART привязаны к первому соединению. Необходимо всё переделывать на отдельные буфера и не понятно что будет у вас с алго - с одного UART высылать данные всем соединениям? Не успеет и смысла в этом никакого - гнать один поток в несколько выходов? Изобретаете велосипед с треугольными колесами? Он не поедет.Количество подключений к TCP2UART порту задается в esp8266web/tcp2uart.c at master · pvvx/esp8266web · GitHub
и ограничено esp8266web/wifi.c at master · pvvx/esp8266web · GitHub
или связано с ограничениями heap size ?
Пытаюсь получить данные с четырех источников но пока только 2 работают.
Если выключить вывод отладки в меню, то ничего этим портам не мешает.@pvvx, Пытаюсь использовать GPIO2, GPIO0 в качестве I2C - глючит, то читает, то ошибка.
UART1 не используется - заремарил в uart_init:
uart_read_fcfg(2) и os_install_putc1((void *)uart1_write_char)
еще отключил WDT - вызов wdt_init(1)
DEBUG_UART = 0
удалось только заставить работать когда обрамил функциями ets_isr_mask(0xFFFFFFFF) и ets_isr_unmask(0xFFFFFFFF)
Однако, после ets_isr_unmask - зависон!
Что ему еще может мешать?
Все, кроме NMI.@pvvx, функция ets_intr_lock() какие прерывания запрещает, не подскажете?
Нельзя использовать ets_set_idle_cb() в новых SDK. Её задействовали китайцы, особенно во время инициализации...@pvvx, по-отключал еще доступ к UART1, ситуация такая:
делаю ets_set_idle_cb(user_idle, NULL)
в user_idle() идет блочное чтение, запись, проверка по i2c (где-то 6 - 7 секунд на операцию)
WDT сбрасывается в цикле - WDT_FEED = WDT_FEED_MAGIC;
если на это время не блокировать прерывания, то где-то через 3 сек в отладку сыпется мусор и зависон.
если прерывания заблокировать ets_intr_lock(), то первые 2 операции проходят нормально, а на 3-ию (проверка) стабильно через где-то 2 секунды - мусор в отладку и либо зависает, либо уходит в перезагрузку по
SoftWdt.
Heap в это время = 48800.