реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> UART с управлением паритета, Опциональная передача символа Mark и Space
IgorMarx
сообщение Apr 18 2009, 06:05
Сообщение #16


Участник
*

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



Цитата(@Ark @ Apr 18 2009, 02:48) *
Кстати, управлять напрямую значением девятого бита нельзя, можно лишь выбрать один из режимов - контроль четности, контроль нечетности, нет контроля


Стоп... а как же вот это?:



Разве это не задание значения бита напрямую? Зачем 2 стоп-бита?
Go to the top of the page
 
+Quote Post
klop
сообщение Apr 18 2009, 06:52
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 433
Регистрация: 28-02-06
Пользователь №: 14 788



Найдите родной документ по УАРТУ. Будет он я думю Синопсисовским (можно и не найти) или АРМовским или может быть даже МЕНТОРовским(сомневаюсь). А совместимость с 16х50 вещь для корок относительная. У того же Синопсисиса хоть и заявлена но имеется пара-тройка мерзких деталей.
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение Apr 18 2009, 06:53
Сообщение #18





Guests






Цитата(IgorMarx @ Apr 18 2009, 10:05) *
Стоп... а как же вот это?:
...
Разве это не задание значения бита напрямую? Зачем 2 стоп-бита?

По моим данным (из описания 16550) значения битов 5-3 задают следующие режимы:

XX0 - нет контроля четности
001 - контроль четности
011 - контроль нечетности

отстальные значения зарезервированы.

По Вашей информации получается:

101 - девятый бит =1
111 - девятый бит =0

Противоречия нет. Есть возможность - задавате 9-й бит напрямую. Только я не уверен, что можно переключать режимы "на ходу". Скорее нет. Ведь для приема используется то же формат, что для передачи, и от него зависит ошибка четности и тест стоп-бита в конце.

P.S. Режим "2 стоп-бита без контроля четности" аналогичен 9-битному режиму с одним стоп-битом и с постоянным значением девятого бита 1.
Go to the top of the page
 
+Quote Post
Wano
сообщение Apr 18 2009, 08:40
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 272
Регистрация: 3-06-06
Пользователь №: 17 737



А каким образом используется девятый бит? Сигнал команда/данные?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 18 2009, 08:57
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Apr 18 2009, 09:02
Сообщение #21


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



На самом деле при передаче там должно все получиться установкой для Fifo передачи trigger level 1. Тогда перед записью байта на передачу нужно установить либо Mark, либо Space parity.
Гораздо больший геморрой будет при разборе приема, помню, делал это на ПК. Если нужен полудуплекс, то это еще возможно, если дуплекс - то практически невероятно.


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 18 2009, 09:31
Сообщение #22


Гуру
******

Группа: Модераторы
Сообщений: 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)
Go to the top of the page
 
+Quote Post
meister
сообщение Apr 18 2009, 09:57
Сообщение #23


Местный
***

Группа: Участник
Сообщений: 219
Регистрация: 20-11-07
Пользователь №: 32 484



Цитата(Сергей Борщ @ Apr 18 2009, 13:31) *
Честно говоря я совершенно не понял, откуда взялся процитированный вами кусок текста. Я же вроде бы достаточно подробно расписал - бит управления четностью не буферизуется в FIFO, поэтому FIFO надо выключить.

Go to the top of the page
 
+Quote Post
IgorMarx
сообщение Apr 18 2009, 09:57
Сообщение #24


Участник
*

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



Цитата(@Ark @ Apr 18 2009, 10:53) *
По Вашей информации получается:

101 - девятый бит =1
111 - девятый бит =0


Это не по моей информации. Это по данным документации на конкретный чип, о котором здесь идёт речь, UM10161 rev 3.
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение Apr 18 2009, 10:02
Сообщение #25





Guests






Цитата(zltigo @ Apr 18 2009, 12:57) *
Дергать ножками самое глупое решение из всех возможных вне зависимости от решаемой задачи. Нельзя пользоваться FIFO так на зло National Semiconductor не будем пользоваться и аппаратным сдвиговым регистром ....

Да пользуйтесь хоть ШИМ-мом. Лишь бы результат был. Технические решения не бывают "глупыми" или "умными".
Бывают простыми и сложными, эффективными и не эффективными, дорогими и дешевыми, и т.д. А Ваше личное отношение к ним - это Ваше личное дело...

Цитата(zltigo @ Apr 18 2009, 12:57) *
Не аналогичен, ибо еще есть прием.

Физические сигналы на линии будут аналогичны. Этого достаточно. Можете взять два UART-а в этих двух, формально различных, режимах и соединить между собой. Оба будут нормально работать и на прием и передачу.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 18 2009, 10:28
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
IgorMarx
сообщение Apr 18 2009, 10:29
Сообщение #27


Участник
*

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



Любезный @Ark, возможно Вы и правы. только Ваш UART на 4-х мегагерцах должен тупо ждать стартового бита, а мой, хоть и на 18-и, но работает в фоне наверное в более сложных, по сравнению с Вашей, системах (не одной, заметьте!), переносим в другие проекты и является законченным универсальным решением. Может я, по Вашим словам, и не разбираюсь в этой теме, но читаю документацию и нахожу там то, чего Вы почему-то не видите (или читаете не то).

Если делать как попало, то легко ошибиться, кроме того, переносимость таких решений практически нулевая. Это имеет смысл только в очень больших партиях, где реально такое решение окупит труд программиста. В данном случае, если нет дуплекса, то можно посылать побайтно через имеющийся уарт, предварительно выставляя четность вручную. на приём придётся анализировать бит Parity Error и вычислять, какой же был 9 бит на самом деле.
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Apr 18 2009, 10:33
Сообщение #28


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(Сергей Борщ @ Apr 18 2009, 13:31) *
А разве этот параметр не для приема? На передачу можно или включить все FIFO, или выключить.

Да, это я тормознул. Я имел ввиду - можно не писать Fifo на полную глубину, а записывать только по 1 байту, тогда после каждого прерывания Fifo будет пустым, и предварительно установив паритет можно, записав в Fifo только 1 символ добиться его передачи именно с нужным значением в 9-м бите.


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение Apr 18 2009, 10:40
Сообщение #29





Guests






Цитата(zltigo @ Apr 18 2009, 14:28) *
Этого НЕ достаточно, ибо в этом режиме на приеме бит parity не обрабатываетя вообще.

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

Воздержусь от дальнейшего спора на эту тему. У супермодераторов, конечно, есть право считать только свои решения УМНЫМИ. biggrin.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 18 2009, 10:53
Сообщение #30


Гуру
******

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



Цитата(@Ark @ Apr 18 2009, 13:40) *
У супермодераторов, конечно, есть право считать только свои решения УМНЫМИ. biggrin.gif

Опять глупость sad.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 6th July 2025 - 20:12
Рейтинг@Mail.ru


Страница сгенерированна за 0.01467 секунд с 7
ELECTRONIX ©2004-2016