Здравствуйте, уважаемые коллеги! Прошу помощи! Собрал в сеть (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, подскажите? В эрратах ответа не нашел. Заранее благодарен.