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

 
 
 
Reply to this topicStart new topic
> LPC2138 и RS485, прицепление UART1'а к приемопередатчику 485
Romario
сообщение Jan 18 2007, 21:18
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 92
Регистрация: 26-06-04
Пользователь №: 192



Мне необходимо будет перед установкой DE и сбросом (ADM3485)
выдерживать некоторые паузы. Таймер задейстовать неохота. Появилась
мысль просто коммутировать линию P0.8 то на GPIO, то на TXD1. Во время
коммутации на GPIO (предварительно там Mark) посылать в UART1 левых N байт и дожидаться опустошения U1THR и U1TSR.

Еще есть мысль задейстовать Loop Back Mode.

Какие будут мнения делавших это?
Go to the top of the page
 
+Quote Post
Alex03
сообщение Jan 19 2007, 07:44
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



Цитата(Romario @ Jan 18 2007, 23:18) *
Мне необходимо будет перед установкой DE и сбросом (ADM3485)
выдерживать некоторые паузы. Таймер задейстовать неохота. Появилась
мысль просто коммутировать линию P0.8 то на GPIO, то на TXD1.


А зачем переводить в GPIO перед установкой DE на ADM3485? Передачи то и так нет.

Цитата
Во время коммутации на GPIO (предварительно там Mark) посылать в UART1 левых N байт и дожидаться опустошения U1THR и U1TSR.

Как дожидаться? По опросу, или по прерыванию?
Если по прерыванию, то в соответствии с х550 аналогом, по крайней мере в LPC221x/LPC229x нет прерывания по TEMP, и соответственно факт ухода из сдвигового регистра последнего байта можно узнать только по опросу. (И этот факт у всех кто реализовывал 485 вызывал недовольство smile.gif )
Ну а если по опросу, то ИМХО проще таймер опрашивать! smile.gif
Если в вашем LPC2138 вдруг есть прерывание по опустошению сдвигового регистра, то извиняйте, Вам повезло. smile.gif
Цитата
Еще есть мысль задейстовать Loop Back Mode.


Попробуйте и нам расскажите.
Ну а если есть свободный таймер, то может и его проще задействовать. smile.gif
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Jan 19 2007, 07:55
Сообщение #3


Знающий
****

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



Цитата(Romario @ Jan 18 2007, 23:18) *
Мне необходимо будет перед установкой DE и сбросом (ADM3485)
выдерживать некоторые паузы. Таймер задейстовать неохота. Появилась
мысль просто коммутировать линию P0.8 то на GPIO, то на TXD1. Во время
коммутации на GPIO (предварительно там Mark) посылать в UART1 левых N байт и дожидаться опустошения U1THR и U1TSR.

Еще есть мысль задейстовать Loop Back Mode.

Какие будут мнения делавших это?


не делал, но работать наверное будет, если паузы нужно выдерживать только перед пакетом.
Если после, то могут возникнуть проблемы с синхронностью перевода пина в GPIO и пердачей последнего валидного стоп-бита.
А вообще, я а ARM сделал модуль таймера с периодом тактирования 100 мкс, внутри размножил
его на нужное количество программных таймеров и мне теперь не жалко тратить отдельный
таймер на временные интервалы, в том числе и в модбасе.
А ваш вариант я бы применил только, если действительно все аппаратные таймеры расписаны.
Если неохота - в смысле лень, надо лень побороть.


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
Romario
сообщение Jan 19 2007, 13:24
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 92
Регистрация: 26-06-04
Пользователь №: 192



все понял.
сделаю на таймере
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jan 19 2007, 17:54
Сообщение #5


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(Romario @ Jan 18 2007, 20:18) *
Еще есть мысль задейстовать Loop Back Mode.
Какие будут мнения делавших это?

Делал, работает.
Помимо основной идеи при таком способе можно совершенно бесплатно получить дополнительную функциональность - контроль линии на коллизии во время передачи информации.
Go to the top of the page
 
+Quote Post
Romario
сообщение Jan 19 2007, 20:51
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 92
Регистрация: 26-06-04
Пользователь №: 192



Цитата(IgorKossak @ Jan 19 2007, 17:54) *
Делал, работает.
Помимо основной идеи при таком способе можно совершенно бесплатно получить дополнительную функциональность - контроль линии на коллизии во время передачи информации.


А как контролировать? насколько я понял RXD1 в этом случае отсоединяется от реального пина RXD (?)
>>
Serial data from the transmitter is
connected internally to serial input of the receiver. Input pin,
RXD1, has no effect on loopback and output pin, TXD1 is held
in marking state
>>
Контролировать коллизии по моему удобнее включив линию RE у приемопередатчика.
Go to the top of the page
 
+Quote Post

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

 


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


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