Fallo alto de 4 bits en la comunicación serial atmega128

0

Estoy intentando comunicarme entre atmega128 y serialCom (PC),

pero me sale un error bastante extraño.

Cuando envío datos 0 a 255 (char) desde atmega128 a serialCom (PC)

, después de enviar 0x08, el bit alto se bloquea. (07 - > 18)

Para una mejor comprensión, adjunté una imagen sobre el error.

EsmiprimeracodificacióndecódigoenAVR,porloquenopudeencontrardóndeestámierror.

Aquíestámicódigofuente.

#include<avr/io.h>#include<util/delay.h>#include<avr/interrupt.h>#include"header.h"

unsigned char rx;

void Putch(unsigned char local_data)
{
    while(!(UCSR0A & 0x20));
    UDR0 = local_data;
}

char Getch(void)
{
    while(!(UCSR0A & 0x80));
    return UDR0;
}



void main(void)
{
    UCSR0A = 0;
    UCSR0B = (1<< RXEN0) | (1<<TXEN0); //UART0 Rx,Tx On
    //UCSR0C = (1 << UCSZ01) | (1 << UCSZ00) | ( 0 << UMSEL0) | ( 0 << UMSEL1) | ( 0 << UPM00) | ( 0 << UPM01);
    UCSR0C = 0x06;
    UBRR0H = 0;
    UBRR0L = 103;
    unsigned char flag = 0;
    int i = 0 ;
    while(1)
    {
        flag = Getch();

        for(i = 0 ; i < 255 ; i++)
            Putch(i);

        _delay_ms(5000);
    }
}

Si tienes alguna idea sobre esta situación, por favor, coméntame.

thx.

    
pregunta user3773632

1 respuesta

1

Respuesta propia:

finalmente, resolví este problema.

El problema era la velocidad en baudios.

Básicamente, la comunicación en la computadora necesita una velocidad específica como la velocidad de transmisión.

la velocidad en baudios se cambiaría según el tipo de AVR debido al reloj.

gracias por todos los comentarios y espero que verifique la velocidad de baudios y el reloj de su AVR.

    
respondido por el user3773632

Lea otras preguntas en las etiquetas