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

 
 
> управление ADM485
vitko
сообщение Oct 3 2007, 09:27
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 8-03-06
Из: Kyiv, UA
Пользователь №: 15 066



Как можно заставить AVR апаратно генерить сигнал разрешение передачи DE для ADM485 при обнаружении старт бита?
Завожу сигнал передачи от MAX232 на вход Т0 и конфигурирую таймер0 на внешний сигнал по спадающему фронту, таймер должен дергать выводом ОС0А по совпадению А, задаю TCNT=(OCRА-1) чтоб нога ОС0А дергалась по первому же спаду. Но она дергается только по второму.
Можно это как то по другому организовать без внешних элементов - платка маленькая, некуда их впаивать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
NVade
сообщение Oct 3 2007, 09:38
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 71
Регистрация: 7-07-06
Из: Новосибирск
Пользователь №: 18 652



ADM должен быть всегда в приеме!
принял, разобрал, перевел в передачу, передал и опять в прием.
Если же имеется в виду просто конвертор rs232-485, то его можно и без контроллера сделать.

Сообщение отредактировал NVade - Oct 3 2007, 09:45
Go to the top of the page
 
+Quote Post
alexander55
сообщение Oct 3 2007, 10:00
Сообщение #3


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(vitko @ Oct 3 2007, 13:27) *
Как можно заставить AVR апаратно генерить сигнал разрешение передачи DE для ADM485 при обнаружении старт бита?
Завожу сигнал передачи от MAX232 на вход Т0 и конфигурирую таймер0 на внешний сигнал по спадающему фронту, таймер должен дергать выводом ОС0А по совпадению А, задаю TCNT=(OCRА-1) чтоб нога ОС0А дергалась по первому же спаду. Но она дергается только по второму.
Можно это как то по другому организовать без внешних элементов - платка маленькая, некуда их впаивать?

Эта тема обсуждалась в форуме по интерфейсам. Там есть хорошее решение от Сергея Борща.
Go to the top of the page
 
+Quote Post
defunct
сообщение Oct 3 2007, 10:12
Сообщение #4


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(vitko @ Oct 3 2007, 12:27) *
Как можно заставить AVR апаратно генерить сигнал разрешение передачи DE для ADM485 при обнаружении старт бита?

аппаратно никак.
если речь о конвертере 232<->485, то проблема решается диодом и RC цепочкой.
Go to the top of the page
 
+Quote Post
vitko
сообщение Oct 3 2007, 11:52
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 8-03-06
Из: Kyiv, UA
Пользователь №: 15 066



Устройство - проеобразователь RS232/485 c настраиваемой скоростью на тини2313, MAX232, ADM485. У ADM485 RE всегда разрешен, DE - включается от тини2313 только на время передачи 1 байта при обнаружении стартбита от RS232. Стартбит ловится по внешнему прерыванию, по которому включается DE. Только получается слишком большая задержка включения на 115200 - бывают сбои. Вот и думаю как выкрутиться с минимумом переделок - желательно используя возможности контроллера

А судя по даташиту таймер/счетчик должен ловить каждый фронт/спад внешнего сигнала:

An external clock source applied to the T1/T0 pin can be used as Timer/Counter clock
(clkT1/clkT0). The T1/T0 pin is sampled once every system clock cycle by the pin synchronization
logic. The synchronized (sampled) signal is then passed through the edge
detector. Figure 38 shows a functional equivalent block diagram of the T1/T0 synchronization
and edge detector logic. The registers are clocked at the positive edge of the
internal system clock (clkI/O). The latch is transparent in the high period of the internal
system clock.
The edge detector generates one clkT1/clkT0 pulse for each positive (CSn2:0 = 7) or negative
(CSn2:0 = 6) edge it detects.

Но у меня почемо-то начинает счет со второго перепада - проверял и при счете по фронту, и по спаду...
Go to the top of the page
 
+Quote Post
defunct
сообщение Oct 3 2007, 14:52
Сообщение #6


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(vitko @ Oct 3 2007, 14:52) *
Вот и думаю как выкрутиться с минимумом переделок - желательно используя возможности контроллера

Вот думаю зачем тут контроллер, если трафик через него не проходит.
Может быть проще сделать просто конвертер 232<->485 с работой в широком диапазоне скоростей? И tiny не нужен. В инете есть куча схем конвертеров с подробным описанием работы, некоторые из них можно посмотреть здесь http://www.rs485.com/pconverters.html. Советую начать с этого.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Oct 3 2007, 16:31
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(vitko @ Oct 3 2007, 12:27) *
Как можно заставить AVR апаратно генерить сигнал разрешение передачи DE для ADM485 при обнаружении старт бита?
Завожу сигнал передачи от MAX232 на вход Т0 и конфигурирую таймер0 на внешний сигнал по спадающему фронту, таймер должен дергать выводом ОС0А по совпадению А, задаю TCNT=(OCRА-1) чтоб нога ОС0А дергалась по первому же спаду. Но она дергается только по второму.
Можно это как то по другому организовать без внешних элементов - платка маленькая, некуда их впаивать?

Для повышения помехоустойчивости обычно рекомендуется, чтобы передача была включена не менее длительности одного байта до посылки первого стартового бита. То есть нужно установить программно передачу, запустить соответствующий тайм-аут, после его окончания передать байт.
Сейчас подтянется народ и скажет, что все работает и так. Бремя выбора правильного решения за Вами smile.gif
Ага, применение увидел... Стирать не буду, совет такой - сделайте
разрешение Tx = сигнал, которым запускаете "одновибратор" ИЛИ сигнал самого одновибратора. Ну, с точностью до полярностей smile.gif


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
alexander55
сообщение Oct 4 2007, 04:48
Сообщение #8


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



[quote name='vitko' date='Oct 3 2007, 15:52' post='302283']
Устройство - проеобразователь RS232/485 c настраиваемой скоростью на тини2313, MAX232, ADM485. У ADM485 RE всегда разрешен, DE - включается от тини2313 только на время передачи 1 байта при обнаружении стартбита от RS232.
[quote]
Все оказывается проще, чем Вы вначале нарисовали.

Я решал задачу так.
1.На ADM485 RE и DE соединены вместе.
2.При инициализации запрещение передачи (разрешение приема).
3.Перед передачей пакета разрешаю передачу (запрещается прием).
4.По окончанию передачи (прерывание TxC) ее запрещаю (разрешается прием).

PS. Не так страшен черт, как его малютки. (Афоризм).
Go to the top of the page
 
+Quote Post
IceS
сообщение Oct 5 2007, 07:09
Сообщение #9


Участник
*

Группа: Свой
Сообщений: 43
Регистрация: 17-10-06
Из: Санкт Петербург
Пользователь №: 21 387



Цитата(vitko @ Oct 3 2007, 13:27) *
... апаратно генерить сигнал разрешение передачи DE для ADM485 при обнаружении старт бита?


Со стороны компа можно управлять направлением передачи, к примеру, линией RTS.

Можно сделать переходник USB<=>RS-485 на FT232R+ADM485 или FT232R+ADM2483+DC/DC. Со стороны компа девайс будет выглядеть как COM-порт. FT232R аппаратно переключает прием/передачу. Второй вариант с ADM2483 получается дороже, но! с гальванической развязкой (а без нее 485, как правило, бесполезен ибо стоит куча девайсов и выход из строя компа это дело времени) и малоточным питанием драйверов шины RS-485.
Go to the top of the page
 
+Quote Post

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

 


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


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