Vad (12.03.2006 18:20, просмотров: 1) ответил rezident на Ниччче не понятно! Нельзя ли дополнить словесным описанием "чего вы хотите" и кодом того места где инициализируете UART?
Уточнение по многопроцессорному режиму Добрый день. Желание следующее: MSP430 - Slave устройство. Master передает ему посылку, MSP буферезирует ее и после окончания посылки (как я это понял) он автоматически должен определить 10 единичных бит на линии -признак свободной линии,выставляет флаг обрыва посылки BRK и сваливается в обработку прерывания приемника UART. Здесь я оцениваю наличие флага BRK и если он '1'- считаю, что посылка закончилась, находится в буфере и я начинаю обрабатывать ее.
Инициирую UART следующей функцией:
void UART_init()
{
P3SEL = 0x30; // P3.3,4 = USART0 TXD/RXD
ME2 |= UTXE0 + URXE0; // Enabled USART0 TXD/RXD
UCTL0 |= CHAR; // 8-bit character, SWRST=1
UTCTL0 |= SSEL0; // UCLK = ACLK
UBR00 = 0x03; // 9600 from 32768 hz
UBR10 = 0x00; //
UMCTL0 = 0x4a; // Modulation
UCTL0 &= ~SWRST; // Initialize USART state machine
IFG2 &= ~UTXIFG0; // Clear inital flag on POR
IE2 |= URXIE0 + UTXIE0; // Enable USART0 RX/TX interrupt
U0RCTL |= URXEIE;
}
Обработчик прерывания приема упрощен. Хочу на данном этапе просто попасть в обработку флага BRK и увидеть увеличение переменной Reset по окончании каждой посылки
#pragma vector=UART0RX_VECTOR
__interrupt void usart0_rx (void)
{
if(U0RCTL & BRK)
{
Reset++;
}
U0TXBUF = U0RXBUF;
U0RCTL &= ~URXWIE;
}
Спасибо.