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

 
 
> Вопрос по 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
Ответов
Vladimir_T
сообщение Feb 7 2010, 18:08
Сообщение #2


Знающий
****

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



Спасибо за содействие и хорошие мысли. Если датчики поддерживаются (отвечают концентратору), то отвечают они всегда, в какой бы сегмент я их не включал. В обвязке кварца конденсаторы 18 пФ.
Функцию с адресом вектора NMI, честно говоря еще не вставил. Но ведь система работает устойчиво.
У меня реализован аппаратный рестарт на базе TPS3823.
Бит UCRXEIE буду анализировать. Кольцевой буфер работает прекрасно.
На кабель стал грешить, сделал другой, но это не помогло.
Уже голову сломал... Хочу попробовать поменять конверторы RS485.
Go to the top of the page
 
+Quote Post
rezident
сообщение Feb 7 2010, 19:44
Сообщение #3


Гуру
******

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



Цитата(Vladimir_T @ Feb 7 2010, 23:08) *
Функцию с адресом вектора NMI, честно говоря еще не вставил. Но ведь система работает устойчиво.
Гм. А вы в курсе, что при сбое в генераторе MCLK переходит на DCO, а SMCLK останавливается (может остановиться) совсем и перезапустить их возможно только, предварительно переключив тактирование на DCO и потом снова на (LF)XT? Не тут ли у вас "собака порылась"?
Цитата(Vladimir_T @ Feb 7 2010, 23:08) *
У меня реализован аппаратный рестарт на базе TPS3823.
Это супервизор питания с WD и сбросом? И как он сможет помочь в случае сбоя генератора, если вы факт этого сбоя не фиксируете, а выполнение программы при этом не прекращается?
Цитата(Vladimir_T @ Feb 7 2010, 23:08) *
Уже голову сломал... Хочу попробовать поменять конверторы RS485.
Сделайте вначале контроль генератора, а если не поможет, то растяжку линии RS485 на мастере. Когда таймауты приема/передачи пакетов "от балды" выбраны, то, говорят, такие "костыли" иногда помогают laughing.gif
Go to the top of the page
 
+Quote Post



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

 


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


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