Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LPC2138 и RS485
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Romario
Мне необходимо будет перед установкой DE и сбросом (ADM3485)
выдерживать некоторые паузы. Таймер задейстовать неохота. Появилась
мысль просто коммутировать линию P0.8 то на GPIO, то на TXD1. Во время
коммутации на GPIO (предварительно там Mark) посылать в UART1 левых N байт и дожидаться опустошения U1THR и U1TSR.

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

Какие будут мнения делавших это?
Alex03
Цитата(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
Andy Mozzhevilov
Цитата(Romario @ Jan 18 2007, 23:18) *
Мне необходимо будет перед установкой DE и сбросом (ADM3485)
выдерживать некоторые паузы. Таймер задейстовать неохота. Появилась
мысль просто коммутировать линию P0.8 то на GPIO, то на TXD1. Во время
коммутации на GPIO (предварительно там Mark) посылать в UART1 левых N байт и дожидаться опустошения U1THR и U1TSR.

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

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


не делал, но работать наверное будет, если паузы нужно выдерживать только перед пакетом.
Если после, то могут возникнуть проблемы с синхронностью перевода пина в GPIO и пердачей последнего валидного стоп-бита.
А вообще, я а ARM сделал модуль таймера с периодом тактирования 100 мкс, внутри размножил
его на нужное количество программных таймеров и мне теперь не жалко тратить отдельный
таймер на временные интервалы, в том числе и в модбасе.
А ваш вариант я бы применил только, если действительно все аппаратные таймеры расписаны.
Если неохота - в смысле лень, надо лень побороть.
Romario
все понял.
сделаю на таймере
IgorKossak
Цитата(Romario @ Jan 18 2007, 20:18) *
Еще есть мысль задейстовать Loop Back Mode.
Какие будут мнения делавших это?

Делал, работает.
Помимо основной идеи при таком способе можно совершенно бесплатно получить дополнительную функциональность - контроль линии на коллизии во время передачи информации.
Romario
Цитата(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 у приемопередатчика.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.