Имеется следующая задача.
Блок на основе MSP430F449.
Для проверки работоспособности интерфейсного разъема RS232 сигнал TXD с помощью заглушки заведен на RXD (в том же интерфейсном разъеме). Это сигналы порта USART0 - TXD(P2.4)/RXD(P2.5).
Возможно ли в MSP430 настройть USART так, чтобы можно было бы сигналами TXD/RXD играться "вручную" как в процах 8051, 8052 - ставить TXD в 0/1 и ловить эти значения RXD?
Или в MSP430 такое вообще не возможно?
Вот так не работает

Код
#define TX0 (P2OUT & 0x10)
#define RX0 (P2IN & 0x20)
#define ClrTX0 P2OUT &= ~0x10
#define SetTX0 P2OUT |= 0x10
void TestRS_PC() {
P2SEL |= 0x30; // P2.4,5 = USART0 TXD(P2.4)/RXD(P2.5)
P2DIR |= 0x10; // P2.4 output direction
IE1 &= ~(UTXIE0 + URXIE0);
ME1 |= UTXE0 + URXE0; // Enable USART0 TXD/RXD
UCTL0 = SYNC; // пробовал так 1
// UCTL0 = СHAR; и вот так 2
// UCTL0 = 0; и так тоже 3
do {
ClrTX0;
Delay(500); // задержка 500 мс
if (RX0) ShowMsg(msgRX_HIGH); // на индикатор RXD = 1
else ShowMsg(msgRX_LOW); // на индикатор RXD = 0
SetTX0; // после этой команды RX0 все равно = 0 !!!
Delay(500);
if (RX0) ShowMsg(msgRX_HIGH); // на индикатор RXD = 1
else ShowMsg(msgRX_LOW); // на индикатор RXD = 0
} while(!GetKey());
}
#define RX0 (P2IN & 0x20)
#define ClrTX0 P2OUT &= ~0x10
#define SetTX0 P2OUT |= 0x10
void TestRS_PC() {
P2SEL |= 0x30; // P2.4,5 = USART0 TXD(P2.4)/RXD(P2.5)
P2DIR |= 0x10; // P2.4 output direction
IE1 &= ~(UTXIE0 + URXIE0);
ME1 |= UTXE0 + URXE0; // Enable USART0 TXD/RXD
UCTL0 = SYNC; // пробовал так 1
// UCTL0 = СHAR; и вот так 2
// UCTL0 = 0; и так тоже 3
do {
ClrTX0;
Delay(500); // задержка 500 мс
if (RX0) ShowMsg(msgRX_HIGH); // на индикатор RXD = 1
else ShowMsg(msgRX_LOW); // на индикатор RXD = 0
SetTX0; // после этой команды RX0 все равно = 0 !!!
Delay(500);
if (RX0) ShowMsg(msgRX_HIGH); // на индикатор RXD = 1
else ShowMsg(msgRX_LOW); // на индикатор RXD = 0
} while(!GetKey());
}