|
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 ответа, передача ответа. Как я понял, необходимо делать задержки после каждого переключения на прием/передачу?
|
|
|
|
Сообщений в этой теме
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    rezident Цитата(maxim_P @ Apr 2 2011, 02:23) Как я... Apr 1 2011, 21:25     maxim_P Спасибо за информацию, на следующей неделе попробу... Apr 2 2011, 07:45      maxim_P Добрый день.В 1611 после передачи команды делаю за... Apr 5 2011, 08:31
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|