Closed pruwait closed 2 years ago
...
uint8_t master_tx_buf[] = {0x55, 0x22, 0x00};
uint8_t break_tx_buf[] = {0x00, 0x66, 0x77, 0x00};
...
void send_break() {
uart_flush(_uart);
uart_uninit(_uart);
_uart = uart_init(_UART_NO, baud_break, SERIAL_8N1, UART_TX_ONLY, TX_P, 0, false);
uart_set_baudrate(_uart, baud_break);
uart_flush(_uart);
//uart_write(_uart, (char *)&dummy, 1);
uart_write(_uart, (char *)break_tx_buf, sizeof(break_tx_buf));
uart_wait_tx_empty(_uart);
//uart_flush(_uart);
uart_uninit(_uart);
_uart = uart_init(_UART_NO, baud_work, SERIAL_8N1, SERIAL_FULL, TX_P, 256, false);
uart_write(_uart, (char *)master_tx_buf, sizeof(master_tx_buf));
uart_wait_tx_empty(_uart);
}
...
send_break() must send on 9600bps 0x00, 0x66, 0x77, 0x00 and after that send on 19200bps 0x55, 0x22, 0x00. But i see 9600bps 0x00, 0x66, 0x77 + 19200bps 0x00, 0x55, 0x22, 0x00.
It seems uart_wait_tx_empty() not working correctly
Short impulse at start is uart on/off garbage. Bad idea using uart_init() / uart_uninit() or Serial.begin() / Serial.end()
uart_wait_tx_empty() not working before uart_set_baudrate() Need delayMicroseconds()
Thats working good with Core Version: 3.0.2;
// Отправка break + посылка
uart_flush(_uart); // очищаем uart
uart_set_baudrate(_uart, baud_break); // занижаем бодрэйт
//uart_write(_uart, (char *)&dummy, 1);
uart_write(_uart, (char *)break_tx_buf, sizeof(break_tx_buf)); // отправляем ноль на низкой скорости, длиинный ноль
uart_wait_tx_empty(_uart); // ждём, пока отправка завершится. Здесь в библиотеке uart.h (esp8266 core 3.0.2) ошибка, ожидания недостаточно при дальнейшем uart_set_baudrate().
delayMicroseconds(100); // добавляем ожидания, иначе скорость переключится раньше отправки. С задержкой 100us на d1-mini я получил идеальный сигнал, break = 520us
uart_set_baudrate(_uart, baud_work); // возвращаем рабочий бодрэйт
uart_write(_uart, (char *)master_tx_buf, sizeof(master_tx_buf)); // отправляем основную посылку
uart_wait_tx_empty(_uart); // ждем завершения отправки
closed
Platform
Settings in IDE
Problem Description
Debug Messages