|
msp430f5419 и msp430f1611, Полудуплекс |
|
|
|
 |
Ответов
|
Apr 1 2011, 19:35
|

Участник

Группа: Участник
Сообщений: 39
Регистрация: 14-06-07
Из: Минск, Беларусь
Пользователь №: 28 436

|
Цитата(rezident @ Apr 1 2011, 21:58)  Вот же блин!  В таком случае вам нужно после передачи обязательно выключать функцию пина TXD, сбрасывая соответствующие биты в регистрах P3SEL и P3DIR. А устанавливать бит 4 в P3SEL можно только на время передачи. Иначе у вас получается конфликт, когда два выхода TXD одновременно пытаются управлять общей линией передачи. И нафига такие заморочки? Не проще ли было обычный дуплекс реализовать? Вам еще одну "лишнюю" дорожку на плате нарисовать было влом? Мне было бы не влом, а только в радость. Возникла необходимость замены устройства, на аналог, и это устройство "общается" с базовой платой через полудуплекс. Чтобы не менять базовую плату и программное обеспечение придется делать так. Вообще я пробовал такой вариант чуть раньше, как только 1611 передал команду, я переключаю его на прием с помощью P3SEL, 5419 после того как принял последний байт переключается на передачу. Картина та же. Я, конечно, еще раз попробую. Получится только в понедельник. RXD можно не трогать? Кстати, в 5419 есть такой бит USLISTEN, который закорачивает RXD и TXD внутри процессора, его случайно не нужно использовать?
|
|
|
|
|
Apr 1 2011, 19:50
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(maxim_P @ Apr 2 2011, 01:35)  Вообще я пробовал такой вариант чуть раньше, как только 1611 передал команду, я переключаю его на прием с помощью P3SEL, 5419 после того как принял последний байт переключается на передачу. Картина та же. У вас классическая картина конфликта двух логических выходов. Правда это выяснилось только после "допроса"  Вы надеюсь какие-то паузы ввели в протокол для исключения этого конфликта? Т.е. один передатчик должен выключать свой выход (сбрасывать бит в P3SEL) сразу после окончания передачи, а второй подключать выход к линии (устанавливать бит в P3SEL) только после некоторой паузы. Причем начало этой паузы должно определяться либо протоколом (символом окончания пакета), либо паузой в приеме пакета данных. Хоть это и тавтология, но смысл в том, что нужна пауза после паузы приема. Цитата(maxim_P @ Apr 2 2011, 01:35)  RXD можно не трогать? Нет RXD не мешает обмену. Но желательно на линии иметь pull-up резистор, чтобы исключить ложный старт-импульс и начало приема в момент паузы, когда оба передатчика будут отключены от линии. Цитата(maxim_P @ Apr 2 2011, 01:35)  Кстати, в 5419 есть такой бит USLISTEN, который закорачивает RXD и TXD внутри процессора, его случайно не нужно использовать? Нет. Этим битом можно только организовать "эхо". Зачем вам "эхо"?
|
|
|
|
|
Apr 1 2011, 20:23
|

Участник

Группа: Участник
Сообщений: 39
Регистрация: 14-06-07
Из: Минск, Беларусь
Пользователь №: 28 436

|
Цитата(rezident @ Apr 1 2011, 22:50)  У вас классическая картина конфликта двух логических выходов. Правда это выяснилось только после "допроса"  Вы надеюсь какие-то паузы ввели в протокол для исключения этого конфликта? Т.е. один передатчик должен выключать свой выход (сбрасывать бит в P3SEL) сразу после окончания передачи, а второй подключать выход к линии (устанавливать бит в P3SEL) только после некоторой паузы. Причем начало этой паузы должно определяться либо протоколом (символом окончания пакета), либо паузой в приеме пакета данных. Хоть это и тавтология, но смысл в том, что нужна пауза после паузы приема. Нет RXD не мешает обмену. Но желательно на линии иметь pull-up резистор, чтобы исключить ложный старт-импульс и начало приема в момент паузы, когда оба передатчика будут отключены от линии. Нет. Этим битом можно только организовать "эхо". Зачем вам "эхо"? Основной режим 1611 - передача, то есть при инициализации контроллер настраиваю на передачу, как только был отправлен последний байт, сразу же переключаю на прием (Сбрасываю флаг RXIFG, разрешаю прерывания по приему), затем делал паузу, но я ее почему-то закомментировал, восстановлю. Основной режим 5419 - прием, при инициализации настроен на прием. Как только был принят последний байт, далее переключение на передачу, затем формирование ответа, вычисление CRC ответа, передача ответа. Как я понял, необходимо делать задержки после каждого переключения на прием/передачу?
|
|
|
|
|
Apr 1 2011, 21:25
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(maxim_P @ Apr 2 2011, 02:23)  Как я понял, необходимо делать задержки после каждого переключения на прием/передачу? Да, тут такая же ситуация как при использовании трансиверов RS-485 и полудуплексной линии связи чеоез RS-485. После окончания передачи пакета запроса трансивер ведущего переходит в режим приема. Но ведомый не начинает передачу сразу же после приема даже, если он готов ответить через 1мкс. Выдерживается оговоренная протоколом пауза (обычно порядка 1-1,5 длительностей одного символа на используемой скорости обмена, например, для 115200, 8, n, 1 пауза должна быть порядка 1,5*(1+8+1)/115200= 130мкс или больше) и только затем ведомый переключает трансивер RS485 на передачу, но пока еще не передает. Еще одна пауза, когда трансивер ведомого удерживает линию в состоянии передачи, нужная для того, чтобы линия зарядилась и закончились все переходные процессы в ней. И если переходный процесс вызвал ложный старт-бит, то приемник ведущего успел отработать ошибочно принятый байт, отсеяв его. И только по истечении второго 1,5-го интервала длительности символа ведомый начинает передачу пакета с ответом на запрос. Вам вторая пауза в принципе и не нужна, т.к. у вас нет трансивера RS485 и длинной линии связи. Но пауза перед включением выхода UART на передачу весьма желательна. Также как и pull-up резистор на линии.
|
|
|
|
Сообщений в этой теме
maxim_P msp430f5419 и msp430f1611 Mar 31 2011, 12:45 rezident 1. Если вы пользуетесь прерываниями, то не нужно о... Mar 31 2011, 14:26 maxim_P Цитата(rezident @ Mar 31 2011, 17:26) 1. ... Apr 1 2011, 06:16  rezident Цитата(maxim_P @ Apr 1 2011, 12:16) 2. Не... Apr 1 2011, 07:41   maxim_P Цитата(rezident @ Apr 1 2011, 10:41) Посл... Apr 1 2011, 08:35    rezident Цитата(maxim_P @ Apr 1 2011, 14:35) Все п... Apr 1 2011, 15:30     maxim_P Цитата(rezident @ Apr 1 2011, 18:30) Для ... Apr 1 2011, 17:42      rezident Цитата(maxim_P @ Apr 1 2011, 23:42) Испол... Apr 1 2011, 18:40       maxim_P Цитата(rezident @ Apr 1 2011, 21:40) Пояс... Apr 1 2011, 18:49     maxim_P Спасибо за информацию, на следующей неделе попробу... Apr 2 2011, 07:45      maxim_P Добрый день.В 1611 после передачи команды делаю за... Apr 5 2011, 08:31
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|