|
Нужна свежая идея... |
|
|
|
Jul 24 2006, 09:37
|

Участник

Группа: Новичок
Сообщений: 47
Регистрация: 3-07-06
Из: Россия, Краснодар
Пользователь №: 18 530

|
Есть преобразователь RS232->RS485. Желание отказаться от использования линий RTS и CTS для выбора прием/передача привели к необходимости использовать МК, а именно AT89C4051. Все бы ничего, но вот скорости передачи могут быть из числа: 9600, 38400, 115200. Проблема состоит в необходимости определения этой скорости, ибо от этого зависит время удержания управляющего сигнала прием/передача. Собственные размышления приводят к сложным конструкциям с мутным результатом Может кто сталкивался с подобным или просто есть мысли, буду рад помощи.
|
|
|
|
|
 |
Ответов
|
Jul 27 2006, 09:48
|
Местный
  
Группа: Свой
Сообщений: 278
Регистрация: 18-01-05
Из: Санкт-Петербург
Пользователь №: 2 031

|
Может это поможет. Только чтобы этот преобразователь работал необходимо обязательно подтягивать A и B. При скорости 2мбит этот преобразователь у меня вполне нормально работал подтяжки ставил по 620Ом. Принцип работы преобразователя прост. Приёмник включён всё время, передатчик включается только если передаётся 0. Т.о. если передаём 1 передатчик выключен и на шине 1, которая формируется подтяжками, если передаём 0, включается передатчик и передаёт на шину 0. Т.о. можно исключить конфилитные ситуации на шине и исключить необходимость использования сигнала rts. Т.к. приёмник включен всё время, мы можем принимать то что передаём и следить чтобы наши 1 никто 0 не давил! Собственно всё вышеописанное реализованно в CAN интерфейсе. Забыл добавить 5 ножечная микросхема это просто инвертор. Который при передаче 0 включает DE, а при передаче 1 выключает.
Эскизы прикрепленных изображений
|
|
|
|
|
Jul 27 2006, 14:49
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(_Sam_ @ Jul 27 2006, 12:48)  Может это поможет. Только чтобы этот преобразователь работал необходимо обязательно подтягивать A и B. При скорости 2мбит этот преобразователь у меня вполне нормально работал подтяжки ставил по 620Ом.
Принцип работы преобразователя прост. Приёмник включён всё время, передатчик включается только если передаётся 0. Т.о. если передаём 1 передатчик выключен и на шине 1, которая формируется подтяжками, если передаём 0, включается передатчик и передаёт на шину 0. Т.о. можно исключить конфилитные ситуации на шине и исключить необходимость использования сигнала rts. Т.к. приёмник включен всё время, мы можем принимать то что передаём и следить чтобы наши 1 никто 0 не давил! Собственно всё вышеописанное реализованно в CAN интерфейсе. Замечание: Очень полезно при передаче 1 тоже включать передатчик, но на очень короткий промежуток времени (~50% бита на макс. скорости) для быстрой перезарядки емкости линии. Прилагаемая схема делает это и плюс давит эхо. Работает до 115200 без всяких настроек скорости и процессоров. Растяжки, конечно, обязательны.
Эскизы прикрепленных изображений
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jul 28 2006, 09:47
|

Участник

Группа: Новичок
Сообщений: 47
Регистрация: 3-07-06
Из: Россия, Краснодар
Пользователь №: 18 530

|
Цитата(Сергей Борщ @ Jul 28 2006, 11:35)  Цитата(_VoRoN_ @ Jul 28 2006, 10:23)  В качестве драйвера RS485 использую MAX487. На выходе A сигнал нормальный, а вот на B, вместо инверсии A присутствует сигнал повторяющий A, но с гораздо меньшей амплитудой. В чем может быть дело?
Если схема вроде _Sam_ или моей, т.е с побитным отключением передатчика, то симптомы очень похожи на отсутствие растяжек. Если обычная - скорее всего перепутаны входы данных и включения передатчика. Схема собрана по образу и подобию вашей. Дело значит обстоит так (в пред. посте я перепутал): на выходе A сигнал очень слабый и представляет собой инверсию входного, сигнал на выходе B повторяет сигнал на A, но с нормальной амплитудой. Растяжки стоят в соответствии с вашей схемой.
|
|
|
|
|
Jul 28 2006, 10:16
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(_VoRoN_ @ Jul 28 2006, 15:47)  Дело значит обстоит так (в пред. посте я перепутал): на выходе A сигнал очень слабый и представляет собой инверсию входного, сигнал на выходе B повторяет сигнал на A, но с нормальной амплитудой. Растяжки стоят в соответствии с вашей схемой. Если вы запамятовали, то напоминаю, что сигнал на выходе драйвера дифференциальный и наблюдать его нужно не относительно GND, а непосредственно между сигналами A и B. Например, на сигнал A щуп осциллографа, а на сигнал B землю щупа осциллографа. При лог.1 на входе драйвера на выходе должно быть A > B, при лог. 0 на входе B > A.
|
|
|
|
|
Jul 28 2006, 10:26
|

Участник

Группа: Новичок
Сообщений: 47
Регистрация: 3-07-06
Из: Россия, Краснодар
Пользователь №: 18 530

|
Цитата(rezident @ Jul 28 2006, 14:16)  Цитата(_VoRoN_ @ Jul 28 2006, 15:47)  Дело значит обстоит так (в пред. посте я перепутал): на выходе A сигнал очень слабый и представляет собой инверсию входного, сигнал на выходе B повторяет сигнал на A, но с нормальной амплитудой. Растяжки стоят в соответствии с вашей схемой.
Если вы запамятовали, то напоминаю, что сигнал на выходе драйвера дифференциальный и наблюдать его нужно не относительно GND, а непосредственно между сигналами A и B. Например, на сигнал A щуп осциллографа, а на сигнал B землю щупа осциллографа. При лог.1 на входе драйвера на выходе должно быть A > B, при лог. 0 на входе B > A. Да нет, я не забыл, просто запутался  Схема нормально работает на 9600 и 38400, однако на на 115200 проявляется потеря данных ~10%.
|
|
|
|
Сообщений в этой теме
_VoRoN_ Нужна свежая идея... Jul 24 2006, 09:37 Deka Перед началом передачи отправлять маркер (все 1) п... Jul 24 2006, 09:43 Kovrov Цитата(Deka @ Jul 24 2006, 13:43) Перед н... Jul 24 2006, 15:54 &-rey Цитата(_VoRoN_ @ Jul 24 2006, 12:37) Есть... Jul 24 2006, 09:43 Igor26 А почему не использовать преобразователь USB<--... Jul 24 2006, 09:46 _VoRoN_ К сожалению возможности резервировать байт или пос... Jul 24 2006, 10:06 SasaVitebsk Цитата(_VoRoN_ @ Jul 24 2006, 13:06) К со... Jul 24 2006, 22:18  DuMaH Вообще, можно и без микроконтроллера, если допуска... Jul 24 2006, 23:15  Леонид Иванович Цитата(SasaVitebsk @ Jul 25 2006, 01:18) ... Jul 25 2006, 10:31 vesago Интересно - схемка с сайта rs485.com позволяет это... Jul 24 2006, 10:23 _Bill Цитата(_VoRoN_ @ Jul 24 2006, 12:37) Есть... Jul 24 2006, 10:42 _VoRoN_ Цитата(_Bill @ Jul 24 2006, 14:42) Цитата... Jul 24 2006, 10:57 Dog Pawlowa Цитата(_VoRoN_ @ Jul 24 2006, 12:37) ... ... Jul 24 2006, 13:41 _VoRoN_ Цитата(Dog Pawlowa @ Jul 24 2006, 17:41) ... Jul 24 2006, 20:54  rezident Цитата(_VoRoN_ @ Jul 25 2006, 02:54) Цита... Jul 24 2006, 22:03 _VoRoN_ Элементная база основана на том, что есть на склад... Jul 25 2006, 20:33 upc2 ???<<Применение сигнала RTS для данной цели,... Jul 26 2006, 05:16 _VoRoN_ Цитата(upc2 @ Jul 26 2006, 09:16) ???... Jul 26 2006, 21:05  Леонид Иванович Тема преобразователей RS485 <-> RS232 с авто... Jul 27 2006, 06:48  rezident Цитата(_VoRoN_ @ Jul 27 2006, 03:05) Уже ... Jul 27 2006, 10:47 _Sam_ ЦитатаЕсли же пауза перед ответом в слейвах не реа... Jul 27 2006, 11:21 rezident Цитата(_Sam_ @ Jul 27 2006, 17:21) Вы нав... Jul 27 2006, 13:24 _Sam_ ЦитатаК тому же вопрошающему нужен гальваноразвяза... Jul 27 2006, 15:12 rezident Цитата(_Sam_ @ Jul 27 2006, 21:12) у меня... Jul 27 2006, 15:46 _VoRoN_ Ооо! Ребята! Спасибо огромное за помощь... Jul 27 2006, 21:10 SasaVitebsk Как приятно получить чёткие ответы (и множество) н... Jul 27 2006, 21:11 Old1 Цитата(SasaVitebsk @ Jul 28 2006, 00:11) ... Jul 28 2006, 07:18 Laptop Цитата(SasaVitebsk @ Jul 28 2006, 01:11) ... Jul 28 2006, 22:00 Леонид Иванович Цитата(SasaVitebsk @ Jul 28 2006, 00:11) ... Aug 7 2006, 08:26 _VoRoN_ Все, зарубили идею, а ведь почти получилось Для ... Jul 28 2006, 20:43 zltigo Цитата(_VoRoN_ @ Jul 28 2006, 23:43) Для ... Jul 28 2006, 20:53 defunct ЦитатаПрименение AVR не является возможным. Исполь... Jul 28 2006, 22:35 _VoRoN_ Цитата(defunct @ Jul 29 2006, 02:35) Цита... Aug 3 2006, 12:02 _artem_ Я недавно экспериментировал с этим - получал вроде... Aug 7 2006, 12:24 Леонид Иванович Цитата(_artem_ @ Aug 7 2006, 15:24) Если ... Aug 7 2006, 19:28  _artem_ Цитата(Леонид Иванович @ Aug 7 2006, 22:2... Aug 9 2006, 09:29   Леонид Иванович Цитата(_artem_ @ Aug 9 2006, 12:29) (надо... Aug 9 2006, 10:22    _artem_ Цитата(Леонид Иванович @ Aug 9 2006, 13:2... Aug 10 2006, 09:05     Леонид Иванович Цитата(_artem_ @ Aug 10 2006, 12:05) А Вы... Aug 11 2006, 06:58 goodwin Сам правда не пробовал, но в FTDI чипах USB-COM ес... Aug 7 2006, 19:53 Леонид Иванович Цитата(goodwin @ Aug 7 2006, 22:53) Сам п... Aug 8 2006, 20:45 _VoRoN_ Если кто знает, посоветуйте пожалуйста толковый ко... Aug 7 2006, 20:38 otrog Цитата(_VoRoN_ @ Aug 8 2006, 00:38) Если ... Aug 8 2006, 04:41 _Sam_ ЦитатаВсе, зарубили идею, а ведь почти получилось ... Aug 9 2006, 08:59 _VoRoN_ Цитата(_Sam_ @ Aug 9 2006, 12:59) Цитата ... Aug 9 2006, 11:35 _artem_ А можете ли Вы попробовать держать RX 485 драйвера... Aug 11 2006, 08:51
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|