тогда копайте core на предмет реализации uart_wait_tx_done(), может там что найдётеuart_wait_tx_done() проверит состояние аппаратного Tx FIFO и вернется, когда он пуст или истекло время ожидания.
не пойдет, надо без ожидания
Там только проверка "состояние аппаратного Tx FIFO", но не окончания полного физического вывода символа на пине TX UART.тогда копайте core на предмет реализации uart_wait_tx_done(), может там что найдёте
Использование C++ связано с постоянными запросами Heap памяти, а поиск свободного куска производиться при запрете прерываний и поиск этот с выделением не маленький по времени. По этому что линейный опрос, что прерывания от UART всегда будут подтормаживать и бить во времени исполнения - концепция Arduinо не предусматривает не рассчитана на выполнение множественных задач, тем более с аппаратной завязкой.Итак варианты:
1. Serial.flush(); - WiFi начинает жутко тормозить, простую страничку отдает в течение 5-10 сек!
И этот байт пойдет в линию - зачем?2. Прерывание по окончании ухода последнего символа в передатчик. Тут можно передавать на один байт больше, а по этому прерыванию сразу переключать ногу на чтение.
Эта доработка создает условия для повышения уровня помех на линии RS485. Драйвер при передаче выводит ток в линию и со сменной полярностью для разряда емкостей линии и прочего, а "доработка" отключает передатчик, тем самым создает дополнительную возможность для проявления помех в линии.3. Это доработка схемы: добавить один транзистор и два резистора - тогда не нужна будет нога для управлением приемом/передачей
Не уйдет, не успеет, проверено.И этот байт пойдет в линию - зачем?
И что такое - "сразу". Выполнение вашей задачи прерывается исполнениями назначенных по прерываниям задач драйвера WiFi и его прерывание имеет больший приоритет.
Это как? Т.е. если есп ногой переключает прием/передачу, то помех нет, а если доработка, то есть?Эта доработка создает условия для повышения уровня помех на линии RS485
Где и кем "проверено"?Не уйдет, не успеет, проверено.
А это эквивалентно работе схемы из двух транзисторов
Интересно посмотреть схему из двух транзисторов для линии RS485 без ADM485Зачем там ADM485?
я проверил - в линию не уходит!Где и кем "проверено"?
Тогда - ура!я проверил - в линию не уходит!
А с этой "доработкой" у вас уже не RS485, т.к. драйвер дает только половину выхода, а на другой бит отпускает линию. Это для того, что линия имеет индуктивную составляющую и после каждого отключения тока на ней образовывался выброс с затухающей бородой.Интересно посмотреть схему из двух транзисторов для линии RS485 без ADM485