|
Прием по КОМ порту 9-го бита под Windows |
|
|
|
 |
Ответов
|
Nov 19 2015, 20:05
|
Местный
  
Группа: Свой
Сообщений: 352
Регистрация: 29-10-06
Из: Тула
Пользователь №: 21 769

|
Цитата(iosifk @ Nov 19 2015, 22:54)  Читать ошибку паритета... А если в буфере несколько байт накопилось, этот метод сработает?
|
|
|
|
|
Nov 20 2015, 16:05
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(zltigo @ Nov 20 2015, 19:24)  Не хранит  . Ну и BREAK это вообще не к байту относится. Навороченных UART, котрые хранят, вообще раз два и все  . Самое навороченным в этом плане был набортный у древного AM186CC. Впромем там и битов было сколько хошь, и поддержка адресации в старших битах. A 16550 это все тот-же 8250 к которому грубо FIFO только на данные прикрутили  . Вот передо мной открыт юзер-мануал на LPC43xx страница UART. В заголовке его написано: "Register locations conform to ‘550 industry standard". Далее, при описании регистра LSR вижу такие фразы: "Note: A parity error is associated with the character at the top of the USART RBR FIFO." Это же самое указано и для FE и для BREAK. Если они, как пишут, реализовали у себя регистры x550, то вполне возможно, что и всю структуру FIFO тоже. А почему в оригинальном 16550 не может быть так же? Считываем LSR, если стоит бит0 - считываем вершину FIFO, после этого пара регистров LSR/RBR обновляется поднимающимся из FIFO следующим принятым символом с его статусными битами (символ - в RBR, статусы - в LSR). Логично.
|
|
|
|
|
Nov 20 2015, 17:32
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (jcxz @ Nov 20 2015, 18:05)  Вот передо мной открыт юзер-мануал на LPC43xx страница UART. Далее, при описании регистра LSR вижу такие фразы: "Note: A parity error is associated with the character at the top of the USART RBR FIFO." А что такое TOP FIFO  ? Например, последний попавший в него символ. Как только приемный автомат зафиксировал ошибку он взводит этот бит при помещении символа в FIFO, хотя перед ним в FIFO лежит уже куча правильных символов. Бит ошибки остается взведенным до тех пор, пока он не будет считан LSR - полностью совместимый 16450 режим. Но! Действительно оказалось есть 16550 D чип у которого FIFO не 8 а 11 бит и в нем соответственно хранятся ошибки уже привязанные к символу. Но тут уж возникает вопрос о том знает-ли об этом драйвер и API WIN. Мне помнится у драйвера декларировалась совместмость с 16650A. Хотя в принципе может при определенных условиях просто плевать. В общем можно пробовать - либо получится, либо нет.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
paskal Прием по КОМ порту 9-го бита под Windows Nov 19 2015, 19:10     kovigor Можно, например, передавать данные небольшими паке... Nov 20 2015, 13:40      zltigo QUOTE (kovigor @ Nov 20 2015, 15:40) Можн... Nov 20 2015, 14:16       kovigor Цитата(zltigo @ Nov 20 2015, 18:16) Автор... Nov 20 2015, 14:31       jcxz Цитата(zltigo @ Nov 20 2015, 23:32) А что... Nov 21 2015, 08:02        zltigo QUOTE (jcxz @ Nov 21 2015, 10:02) Исходя ... Nov 21 2015, 09:49         HardEgor А вот в миландровском 1986ВЕ1 FIFO хранит флаги дл... Dec 3 2015, 10:35 kovigor Цитата(paskal @ Nov 19 2015, 22:10) Как э... Nov 19 2015, 20:01
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|