RS485, проблема с отправкой пакета
Добавлено: Вс окт 05, 2008 12:17:19
Добрый день.
В написанной мной программе для MSP430F2272 имеется функция (отправляет пакет):
void SendPackage (unsigned char *TrData, unsigned int NumberByte)
{
P4OUT|=0xC0;//переключаемся на передачу
unsigned int NumberByte2=0;
while (NumberByte2<NumberByte)
{
if((IFG2&0x02)==2){UCA0TXBUF=TrData[NumberByte2];NumberByte2++;}
}
while ((IFG2&0x02)!=2);//ждём отправку последнего байта
P4OUT&=0x3F;//переключаемся на приём
}
Для передачи данных c микроконтроллера использую модуль UART. Данные предаются по интерфейсу RS485, для преобразования использую ADM2483.
Проблема в том, что надо передать N байт, а приходит N-1, последний байт или вообще не приходит или приходит с ошибкой. Если убрать строчку P4OUT&=0x3F; или поставить перед ней задержку, то пакет передаётся полностью.
Подскажите, пожалуйста, в чём ошибка?
В написанной мной программе для MSP430F2272 имеется функция (отправляет пакет):
void SendPackage (unsigned char *TrData, unsigned int NumberByte)
{
P4OUT|=0xC0;//переключаемся на передачу
unsigned int NumberByte2=0;
while (NumberByte2<NumberByte)
{
if((IFG2&0x02)==2){UCA0TXBUF=TrData[NumberByte2];NumberByte2++;}
}
while ((IFG2&0x02)!=2);//ждём отправку последнего байта
P4OUT&=0x3F;//переключаемся на приём
}
Для передачи данных c микроконтроллера использую модуль UART. Данные предаются по интерфейсу RS485, для преобразования использую ADM2483.
Проблема в том, что надо передать N байт, а приходит N-1, последний байт или вообще не приходит или приходит с ошибкой. Если убрать строчку P4OUT&=0x3F; или поставить перед ней задержку, то пакет передаётся полностью.
Подскажите, пожалуйста, в чём ошибка?