Página 1 de 1

Problemas com a UART

MensagemEnviado: 23 Ago 2007 16:29
por Milhoci
Boa trade, eu estou tentando usar a UART de um msp430f1611 o problema é que o caractere que eu recebo é totalmente difirente do que eu mandei pelo msp. Eu já mudei velocidade do msp, ja aumentei e mininui o baud rate, troquei de computador, tentei usar a outra uart e até agora nada...

Alguém poderia de dar uma ajuda?

void putc(char c)
{
U0TXBUF = c;
while(!U0TCTL_bit.TXEPT);
}


//************** MAIN *****************************

void main(void)
{

// char c;
WDTCTL = WDTPW + WDTHOLD;
delay();

DCOCTL = 0x9B;
BCSCTL1 = 0x87;
BCSCTL2 = 0x00;

P3SEL_bit.P3SEL_4 = 1;
P3SEL_bit.P3SEL_5 = 1;
ME1 = UTXE0 + URXE0;
U0CTL = SWRST + CHAR;
U0TCTL = SSEL1 + SSEL0;
U0BR0=0x6B;
U0BR1=0x00;
U0MCTL=0x55;
U0CTL_bit.SWRST =0;

while(1)
{
putc('a');
}

MensagemEnviado: 24 Ago 2007 00:14
por henriquethiesen
Se você estiver usando o DCO para gerar o baud-rate, você deve observar que este pode apresentar desvios de frequência.
Experimente testar colocando um cristal para gerar o baud-rate.

MensagemEnviado: 24 Ago 2007 11:28
por Fábio Pereira
Os exemplos do meu livro funcionam perfeitamente. Você já tentou utilizá-los ?

Até +

MensagemEnviado: 28 Ago 2007 18:05
por Milhoci
Fábio, eu tentei usar os do seu livro também, eu estou comprando tudo novo e assim que os msp430 chegarem eu vou voltar a mexer com a uart, talvez seja algum problema com o hardware da uart....

Milhoci

MensagemEnviado: 29 Ago 2007 16:47
por luizrico
Milhoci,

Voce esta recebendo os dados com o MSP ?? ou com outro software, pelo que entendi vc esta enviando dados pelo MSP, porém não endenti com o que voce esta recebendo.

Já tive o mesmo problema, porém o que estava errado era o software que eu estava recebendo os dados

abraços
Luiz

Uma sugestão

MensagemEnviado: 31 Ago 2007 12:54
por quispe
Milhoci tente estes códigos, entre no hiperterminal ou use o terminal do rogercom (www.rogercom.com) e teste este comando CMD:Teste \n\r
O \n\r é enviado automaticamente pelo terminal

// Para recebeir um comando via porta serial
#pragma vector = USART0RX_VECTOR // Vector de interrupção da serial
__interrupt void trata_usartrx0(void)
{
unsigned char temp = U0RXBUF; // Salva o dado que chegou pela serial

if(temp != '\n') // Testa se o valor carregado é linha feed
{
buffer[cont] = U0RXBUF; // Caso não seja, carrega o valor em buffer
cont++; // Incrementa o contador do buffer
}
else // Caso seja igual, sinaliza flag e faz eco
{
f_dado_serial = 1; // Sinaliza que existe dado no buffer serial
cont = 0; // Zera cont

for(int i = 0; i < k; i++) // Escreve na serial o dado no buffer
{
if(buffer[i] == ' ') // O elemento i da matriz buffer é ' ' ?
break; // Sim, então sai do loop "for"
U0TXBUF = buffer[i]; // Caso não seja verdade, escreve na serial
while(!U0TCTL_bit.TXEPT); // Espera o dado ser transmitido
}
esc_crlf(); // Escreve <cr> e <lf> na serial
}
}

e configura a porta assim
/************************************************************/
// Configura os registradores da USART - 2400 bps

ME1 |= UTXE0 + URXE0; // Habilita UARTO RX e TX
U0CTL |= CHAR; // USART trabalha com 8 bits de dados
U0TCTL |= SSEL0; // O clock da UART será o ACLK
U0BR0 = 0X0D; // Configura baund rate para 2400
U0BR1 = 0X00;
U0MCTL = 0X6B;
UCTL0 &= ~SWRST; // Inicializa a UART

Abraço
www.qsptecnologia.eng.br

MensagemEnviado: 12 Set 2007 23:37
por Milhoci
Problema resolvido, eu troquei todos os circuitos integrados, aparentemente era algum problema com o hardware do msp430. Muito obrigado a todos pela ajuda.

Milhoci