|
|
  |
UART с управлением паритета, Опциональная передача символа Mark и Space |
|
|
|
Apr 18 2009, 06:05
|

Участник

Группа: Участник
Сообщений: 61
Регистрация: 5-10-05
Из: Зеленоград
Пользователь №: 9 268

|
Цитата(@Ark @ Apr 18 2009, 02:48)  Кстати, управлять напрямую значением девятого бита нельзя, можно лишь выбрать один из режимов - контроль четности, контроль нечетности, нет контроля Стоп... а как же вот это?:  Разве это не задание значения бита напрямую? Зачем 2 стоп-бита?
|
|
|
|
Guest_@Ark_*
|
Apr 18 2009, 06:53
|
Guests

|
Цитата(IgorMarx @ Apr 18 2009, 10:05)  Стоп... а как же вот это?: ... Разве это не задание значения бита напрямую? Зачем 2 стоп-бита? По моим данным (из описания 16550) значения битов 5-3 задают следующие режимы: XX0 - нет контроля четности 001 - контроль четности 011 - контроль нечетности отстальные значения зарезервированы. По Вашей информации получается: 101 - девятый бит =1 111 - девятый бит =0 Противоречия нет. Есть возможность - задавате 9-й бит напрямую. Только я не уверен, что можно переключать режимы "на ходу". Скорее нет. Ведь для приема используется то же формат, что для передачи, и от него зависит ошибка четности и тест стоп-бита в конце. P.S. Режим "2 стоп-бита без контроля четности" аналогичен 9-битному режиму с одним стоп-битом и с постоянным значением девятого бита 1.
|
|
|
|
|
Apr 18 2009, 08:57
|

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

|
Цитата(@Ark @ Apr 18 2009, 09:53)  По моим данным (из описания 16550) Выбросте это 'описание' и возьмите даташит. Эти режимы поддерживают не только 550 и клоны но и прадедушка 8250 с самого рождения. Цитата(@Ark @ Apr 18 2009, 01:48)  Проще сделать программно... Дергать ножками самое глупое решение из всех возможных вне зависимости от решаемой задачи. Нельзя пользоваться FIFO так на зло National Semiconductor не будем пользоваться и аппаратным сдвиговым регистром .... Цитата(@Ark @ Apr 18 2009, 09:53)  P.S. Режим "2 стоп-бита без контроля четности" аналогичен 9-битному режиму с одним стоп-битом и с постоянным значением девятого бита 1. Не аналогичен, ибо еще есть прием.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Apr 18 2009, 09:31
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(meister @ Apr 17 2009, 23:36)  Зачем же Вы плохое советуете? Код UART0 FIFOs are disabled. Must not be used in the application. Честно говоря я совершенно не понял, откуда взялся процитированный вами кусок текста. Я же вроде бы достаточно подробно расписал - бит управления четностью не буферизуется в FIFO, поэтому FIFO надо выключить. Цитата(Andy Mozzhevilov @ Apr 18 2009, 12:02)  На самом деле при передаче там должно все получиться установкой для Fifo передачи trigger level 1. А разве этот параметр не для приема? На передачу можно или включить все FIFO, или выключить.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Apr 18 2009, 09:57
|

Участник

Группа: Участник
Сообщений: 61
Регистрация: 5-10-05
Из: Зеленоград
Пользователь №: 9 268

|
Цитата(@Ark @ Apr 18 2009, 10:53)  По Вашей информации получается:
101 - девятый бит =1 111 - девятый бит =0 Это не по моей информации. Это по данным документации на конкретный чип, о котором здесь идёт речь, UM10161 rev 3.
|
|
|
|
Guest_@Ark_*
|
Apr 18 2009, 10:02
|
Guests

|
Цитата(zltigo @ Apr 18 2009, 12:57)  Дергать ножками самое глупое решение из всех возможных вне зависимости от решаемой задачи. Нельзя пользоваться FIFO так на зло National Semiconductor не будем пользоваться и аппаратным сдвиговым регистром .... Да пользуйтесь хоть ШИМ-мом. Лишь бы результат был. Технические решения не бывают "глупыми" или "умными". Бывают простыми и сложными, эффективными и не эффективными, дорогими и дешевыми, и т.д. А Ваше личное отношение к ним - это Ваше личное дело... Цитата(zltigo @ Apr 18 2009, 12:57)  Не аналогичен, ибо еще есть прием. Физические сигналы на линии будут аналогичны. Этого достаточно. Можете взять два UART-а в этих двух, формально различных, режимах и соединить между собой. Оба будут нормально работать и на прием и передачу.
|
|
|
|
|
Apr 18 2009, 10:28
|

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

|
Цитата(@Ark @ Apr 18 2009, 13:02)  Физические сигналы на линии будут аналогичны. Этого достаточно. Этого НЕ достаточно, ибо в этом режиме на приеме бит parity не обрабатываетя вообще. Цитата(@Ark @ Apr 18 2009, 13:02)  Бывают простыми и сложными, эффективными и не эффективными, дорогими и дешевыми, и т.д. Использование тех, которые начинаются c "не", а также дорогие и сложные и называюмся одним словом ГЛУПЫЕ (есть еще несколько синонимов, но этт помягче).
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Apr 18 2009, 10:29
|

Участник

Группа: Участник
Сообщений: 61
Регистрация: 5-10-05
Из: Зеленоград
Пользователь №: 9 268

|
Любезный @Ark, возможно Вы и правы. только Ваш UART на 4-х мегагерцах должен тупо ждать стартового бита, а мой, хоть и на 18-и, но работает в фоне наверное в более сложных, по сравнению с Вашей, системах (не одной, заметьте!), переносим в другие проекты и является законченным универсальным решением. Может я, по Вашим словам, и не разбираюсь в этой теме, но читаю документацию и нахожу там то, чего Вы почему-то не видите (или читаете не то).
Если делать как попало, то легко ошибиться, кроме того, переносимость таких решений практически нулевая. Это имеет смысл только в очень больших партиях, где реально такое решение окупит труд программиста. В данном случае, если нет дуплекса, то можно посылать побайтно через имеющийся уарт, предварительно выставляя четность вручную. на приём придётся анализировать бит Parity Error и вычислять, какой же был 9 бит на самом деле.
|
|
|
|
Guest_@Ark_*
|
Apr 18 2009, 10:40
|
Guests

|
Цитата(zltigo @ Apr 18 2009, 14:28)  Этого НЕ достаточно, ибо в этом режиме на приеме бит parity не обрабатываетя вообще. Этого достаточно, так как бит четности всегда установлен 1. И как он формально обрабатывается - как 9-й бит или один из стоп-битов - принципиального значения не имеет. Цитата(zltigo @ Apr 18 2009, 14:28)  Использование тех, которые начинаются c "не", а также дорогие и сложные и называюмся одним словом ГЛУПЫЕ (есть еще несколько синонимов, но этт помягче). Воздержусь от дальнейшего спора на эту тему. У супермодераторов, конечно, есть право считать только свои решения УМНЫМИ.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|