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

 
 
> Вопрос по 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 5 2010, 04:25
Сообщение #2


Знающий
****

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



Для тактирования выбрал кварц XT1 , SMCLK=16 mHz.
Код
void Initial_System (void)
{unsigned int i;
  WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer
  BCSCTL1 = XTS;                            // ACLK = LFXT1 = HF XTAL
  BCSCTL3 = LFXT1S1;                        // 3 – 16MHz crystal or resonator
  do
  {
    IFG1 &= ~OFIFG;                         // Clear OSCFault flag
    for (i = 0xFF; i > 0; i--);             // Time for flag to set
  }
  while (IFG1 & OFIFG);                     // OSCFault flag still set?
  BCSCTL2 = SELM_3 + SELS;                  // MCLK = SMCLK = LFXT1 (safe)
  
} // void Init_System (void)


Временные диаграммы приема/передачи проверял осциллографом - все в норме. Функцию обработки прерывания RxD привел очень примерно, чтобы не заграмождать форум. Но переполнения массива исключены, так как данные при приеме перемещаются в кольцевой буфер:

Код
Circular_Buf_Put (UCA0RXBUF, &RxD_Buf);   // Save to Circular Buffer
Go to the top of the page
 
+Quote Post
rezident
сообщение Feb 5 2010, 13:58
Сообщение #3


Гуру
******

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



Цитата(Vladimir_T @ Feb 5 2010, 09:25) *
Функцию обработки прерывания RxD привел очень примерно
Извините, но когда исходники примерные, то и советы "примерные" получаются. laughing.gif
При замене датчиков местами неисправность перемещается вместе с ними или локализована в определенном сегменте сети?
Конденсаторы в обвязке кварца стоят? Какого номинала?
Функция с адресом вектора NMI для обработки сбоя генерации кварцевого генератора имеется?
Почему не используете возможность аппаратной фильтрации неверно принятых символов (бит UCRXEIE)?
Цитата(Vladimir_T @ Feb 5 2010, 09:25) *
Но переполнения массива исключены, так как данные при приеме перемещаются в кольцевой буфер:
Ну а в этой функции кольцевого буфера проверка на выход за границы массива-то имеется? Или там тоже что-то типа использования "магических" размерностей переменных?
Go to the top of the page
 
+Quote Post



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

 


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


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