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

 
 
> UART с управлением паритета, Опциональная передача символа Mark и Space
aerolog
сообщение Apr 16 2009, 14:02
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 11-01-06
Пользователь №: 13 058



Доброе время суток!
Кто сталкивался в LPC210x с необходимостью управления битами паритета Mark и Space, для эмуляции 9-битного варианта передачи данных?
Пробовал делать путем ручного переключения этих битов и вылазит такая картина. В пошаговом режиме байты пересылаются нормально (отслеживаю по осцилу). Как только переходит в сплошной поток - то ли LPC не успевает переключаться, то ли еще что-то, но Mark и Space не изменяются.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
IgorMarx
сообщение Apr 17 2009, 19:59
Сообщение #2


Участник
*

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



Споры - дело дурное. Каждый в любом случае останется при своём мнении. Очень интересно, получится ли управлять девятым битом. Сейчас мне заняться этим просто некогда, но если что-то выйдет, поделюсь. Соответственно, надеюсь, что тут будет опубликован результат, если у кого что получится.

P.S. А может, любезный @Ark найдёт решение? Спец же по портам smile.gif Будем ему благодарны smile.gif

aerolog, попробуйте, как говорит Сергей, отключить фифо и перед записью в THR выставлять требуемые значения битов Parity Select регистра LCR со включенным Parity Enable. Возможно перед этим нужно дожидаться, чтобы освободился буфер передатчика (установился бит THRE или TEMT (какой конкретно нужнопроверять).
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение Apr 17 2009, 22:48
Сообщение #3





Guests






Цитата(IgorMarx @ Apr 17 2009, 23:59) *
... А может, любезный @Ark найдёт решение? Спец же по портам smile.gif Будем ему благодарны smile.gif


Если верить тому, что написано в ДШ на этот камень, его UART совместим по регистрам со стандартом 16550. В PC такой же UART стоит на COM-портах (точнее, стоял). Известная вещь. Берем описание и читаем...

Перед выбором режима управления четностью рекомендуется очистить очередь приемника и передатчика - установкой 1-го и 2-го бита соответственно в регистре управления буферизацией...
Кстати, управлять напрямую значением девятого бита нельзя, можно лишь выбрать один из режимов - контроль четности, контроль нечетности, нет контроля. Если в последнем случае задать 2 стоп бита, то девятый бит всегда будет 1...

Итого: если хотите самостоятельно управлять девятым битом, придется FIFO отключить совсем. Перед передачей каждого байта выбирать режим четность/нечетность таким образом, чтобы девятый бит принимал нужное значение... Короче - геморрой. Проще сделать программно...
Go to the top of the page
 
+Quote Post
IgorMarx
сообщение Apr 18 2009, 06:05
Сообщение #4


Участник
*

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



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


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



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





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
zltigo
сообщение Apr 18 2009, 08:57
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 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
Guest_@Ark_*
сообщение Apr 18 2009, 10:02
Сообщение #7





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
IgorMarx
сообщение Apr 18 2009, 10:29
Сообщение #8


Участник
*

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



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

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

Сообщений в этой теме
- aerolog   UART с управлением паритета   Apr 16 2009, 14:02
- - meister   Цитата(aerolog @ Apr 16 2009, 18:02) для ...   Apr 16 2009, 14:15
|- - aerolog   Но ведь не хочется огород городить. В обычном COM ...   Apr 16 2009, 15:06
- - IgorMarx   Мне эта тема тоже интересна. Филипс как всегда ...   Apr 17 2009, 16:57
|- - @Ark   Цитата(IgorMarx @ Apr 17 2009, 20:57) ......   Apr 17 2009, 17:45
|- - IgorMarx   Цитата(@Ark @ Apr 17 2009, 21:45) P.S. Ес...   Apr 17 2009, 19:00
|- - @Ark   Цитата(IgorMarx @ Apr 17 2009, 23:00) Я э...   Apr 17 2009, 19:16
- - Сергей Борщ   Цитата(aerolog @ Apr 16 2009, 17:02) В по...   Apr 17 2009, 19:25
|- - meister   Цитата(Сергей Борщ @ Apr 17 2009, 23:25) ...   Apr 17 2009, 20:36
|- - HARMHARM   Цитата(meister @ Apr 17 2009, 23:36) Заче...   Apr 17 2009, 20:46
||- - meister   Цитата(HARMHARM @ Apr 18 2009, 00:46) Име...   Apr 17 2009, 20:51
||- - HARMHARM   Цитата(meister @ Apr 17 2009, 23:51) Это ...   Apr 17 2009, 21:12
|- - Сергей Борщ   Цитата(meister @ Apr 17 2009, 23:36) Заче...   Apr 18 2009, 09:31
|- - meister   Цитата(Сергей Борщ @ Apr 18 2009, 13:31) ...   Apr 18 2009, 09:57
|- - Andy Mozzhevilov   Цитата(Сергей Борщ @ Apr 18 2009, 13:31) ...   Apr 18 2009, 10:33
|- - klop   Найдите родной документ по УАРТУ. Будет он я думю ...   Apr 18 2009, 06:52
|- - Wano   А каким образом используется девятый бит? Сигнал к...   Apr 18 2009, 08:40
||- - zltigo   Цитата(@Ark @ Apr 18 2009, 13:02) Физичес...   Apr 18 2009, 10:28
|||- - @Ark   Цитата(zltigo @ Apr 18 2009, 14:28) Этого...   Apr 18 2009, 10:40
|||- - zltigo   Цитата(@Ark @ Apr 18 2009, 13:40) У супер...   Apr 18 2009, 10:53
||- - @Ark   Цитата(IgorMarx @ Apr 18 2009, 14:29) Люб...   Apr 18 2009, 11:08
||- - IgorMarx   Цитата(@Ark @ Apr 18 2009, 15:08) А если ...   Apr 18 2009, 11:23
||- - aerolog   Большое спасибо за такое бурное обсуждение. Пробов...   Apr 21 2009, 09:17
||- - IgorMarx   aerolog, к сожалению у меня сейчас осцильник подох...   Apr 21 2009, 15:36
||- - aerolog   Жаль IgorMarx, но такой вариант тоже не прокатыает...   Apr 22 2009, 09:35
||- - IgorMarx   Цитата(aerolog @ Apr 22 2009, 13:35) Жаль...   Apr 22 2009, 16:00
|- - IgorMarx   Цитата(@Ark @ Apr 18 2009, 10:53) По Ваше...   Apr 18 2009, 09:57
- - IgorMarx   Насчёт отключения FIFO. Вот вопрос: что будет, есл...   Apr 17 2009, 20:54
- - Andy Mozzhevilov   На самом деле при передаче там должно все получить...   Apr 18 2009, 09:02


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

 


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


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