Вопрос Единицы измерения UART_RX_TOUT_THRHD

valerycpp

New member
Здравствуйте, уважаемые форумчане!
Столкнулся с такой проблемой:
Есть устройство, которое я опрашиваю, по RS485-линии, с помощью микросхемы ADM ADM3070E. Пакет данных проходит нормально хоть и приходится ждать время равное одному байту в конце передачи, переключая микросхему осуществляющую интерфейс 485-линии в режим приема.
Прерывание RX происходит быстрее чем начнется следующий байт одного сообщения. Т.е. прерывание RX срабатывает быстрее чем опрашиваемое устройство успеет отправить полностью одну посылку. Проблему можно решить выставив порог срабатывания rx_tout_thrhd в значение 0x10. По умолчанию стоит 0x02.
Код:
WRITE_PERI_REG(UART_CONF1(uart_no),
           ((100 & UART_RXFIFO_FULL_THRHD) << UART_RXFIFO_FULL_THRHD_S) |
           ((110 & UART_RX_FLOW_THRHD) << UART_RX_FLOW_THRHD_S) |
           UART_RX_FLOW_EN |
           (/*0x02*/0x10 & UART_RX_TOUT_THRHD) << UART_RX_TOUT_THRHD_S |
           UART_RX_TOUT_EN |
        ((0x10 & UART_TXFIFO_EMPTY_THRHD) << UART_TXFIFO_EMPTY_THRHD_S));
Это значение находится в диапазоне от 0 до 127. Вопрос: в чем измеряется это значение: в микросекундах, в долях времени передачи одного байта или что либо еще?
 

pvvx

Активный участник сообщества
Вопрос: в чем измеряется это значение: в микросекундах, в долях времени передачи одного байта или что либо еще?
В 8-ми клоках приема битов UART. 8 - зависит от некоторых других параметров... Начинается не с нуля. Работает асинхронно от приемника. Отслеживает тишину на линии в своих клоках, асинхронно, но строб от bitrate UART.
Оф. описания нет. Примеры использования найдете в Web-свалке с TCP2UART и ModbusTCP/RTU/RS-485. Будете хорошо себя вести - допишу другие условия :)
Вам скорее всего надо это esp8266web/rs485drv.c at master · pvvx/esp8266web · GitHub
 
Последнее редактирование:
Сверху Снизу