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

 
 
> Вопрос по UART в MSP430F2122
Vladimir_T
сообщение Feb 4 2010, 15:39
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 517
Регистрация: 7-02-06
Пользователь №: 14 073



Здравствуйте, уважаемые коллеги! Прошу помощи! Собрал в сеть (RS485) 12 ведомых устройств (позиционные датчики на процессоре MSP430F2122) и ведущий концентратор (на процессоре MSP430F149). На передачу (скорость 9600 бод) все работает нормально: т.е. каждый датчик отсылает пакеты концентратору, а тот их принимает безошибочно. А вот на прием!! Восемь датчиков принимают команды от концентратора правильно, а остальные - нет. Во всех датчиках идентичные прошивки. Отладчиком просматриваю буфер приема и вижу, что прерывания по приему идут нормально, а в приемном буферном массиве только 20% правильной информации, а остальные байты - нули.

Код
void Init_UART (void)
{
P3SEL = 0x30;                                     // P3.4,5 = USCI_A0 TXD/RXD
  UCA0CTL1 = UCSWRST;                       // **Initialize USCI state machine*
  UCA0BR0 = 82;                                // 16MHz/9600 = ~1666
  UCA0BR1 = 6;                                     //
  UCA0MCTL = UCBRS2 + UCBRS1;               // Modulation UCBRSx = 6
UCA0CTL1 |= UCSSEL_2;       // SMCLK
  UCA0CTL1 &= ~UCSWRST;                         // **Initialize USCI state machine**
  IE2 |= UCA0RXIE;                                  // Enable USCI_A0 RX interrupt
}

#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
Rcv_Buf [Ind++] = UCA0RXBUF;   // Save to Buffer
}


Концентратор передает посылки корректно, без задержек и пауз в пакетах. Большая часть плат ведь заработали сразу, а часть -нет. Процы из одной упаковки.. Снижал скорость передачи - не помогает. Может кто-нибудь сталкивался с ошибками в работе UART на 2122, подскажите? В эрратах ответа не нашел. Заранее благодарен.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Feb 4 2010, 17:17
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Ну раз прошивка одинакова, то значит проблема не в ней, а в самой сети. RS485 требует некоторых условий для устойчивой работы. Терминаторы у вас используются? Растяжка линии на мастере предусмотрена? Если предусмотрена, то включена ли? Какая вообще длина линии? Вы не "звездой" случайно подключили слейвы? Почему между пакетами не предусмотрены паузы? Ведь требуется некоторое время для того, чтобы переключить трансивер RS485 с приема на передачу или обратно и потом подождать окончания переходного процесса в линии. Только после этого можно начинать передачу.
Go to the top of the page
 
+Quote Post



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

 


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


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