Здравствуйте, уважаемые форумчане!
Столкнулся с такой проблемой:
Есть устройство, которое я опрашиваю, по RS485-линии, с помощью микросхемы ADM ADM3070E. Пакет данных проходит нормально хоть и приходится ждать время равное одному байту в конце передачи, переключая микросхему осуществляющую интерфейс 485-линии в режим приема.
Прерывание RX происходит быстрее чем начнется следующий байт одного сообщения. Т.е. прерывание RX срабатывает быстрее чем опрашиваемое устройство успеет отправить полностью одну посылку. Проблему можно решить выставив порог срабатывания rx_tout_thrhd в значение 0x10. По умолчанию стоит 0x02.
Это значение находится в диапазоне от 0 до 127. Вопрос: в чем измеряется это значение: в микросекундах, в долях времени передачи одного байта или что либо еще?
Столкнулся с такой проблемой:
Есть устройство, которое я опрашиваю, по 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));