Recupero los caracteres incorrectos del módulo Bluetooth (uart) [cerrado]

-2

Me gustaría comunicarme entre mi controlador atmega8 y la PC a través de un módulo bluetooth HC-06.

Debería recuperar el mismo carácter que envié, pero obtengo algunos caracteres incorrectos. El módulo bluetooth usa una velocidad de transmisión de 9600 (predeterminado), así que configuro el reloj interno de mi controlador a 8Mhz. (No sé si lo puse correctamente ...)

#include <avr/io.h>
#include <inttypes.h>

#define F_CPU 8000000UL 

void USARTInit(uint16_t ubrr_value)
{
    //Set Baud rate
  UBRRL = ubrr_value;
  UBRRH = (ubrr_value>>8);

   /*Set Frame Format 
   >> Asynchronous mode
   >> No Parity
   >> 1 StopBit
   >> char size 8
   */
   UCSRC=(1<<URSEL)|(3<<UCSZ0);

   //Enable The receiver and transmitter
   UCSRB=(1<<RXEN)|(1<<TXEN);
}

void USARTWriteChar(char data)
{
    //Wait until the transmitter is ready
    while(!(UCSRA & (1<<UDRE)))
    {
        //Do nothing
    }

    //Now write the data to USART buffer
    UDR=data;
}

char USARTReadChar()
{
    //Wait untill a data is available
    while(!(UCSRA & (1<<RXC)))
    {
        //Do nothing
    }

    //Now USART has got data from host
    //and is available is buffer
    return UDR;
}

int main()
{      
   char data;
   USARTInit(51);    //UBRR = 51

   //Loop forever
   while(1)
   {
      //Read data
      data=USARTReadChar();

      /* Now send the same data but but surround it in
      square bracket. For example if user sent 'a' our
      system will echo back '[a]'.
      */

      USARTWriteChar('[');
      USARTWriteChar(data);
      USARTWriteChar(']');
   } 
   return 0;
}

Configuré SUT_CKSEL en INTRCOSC_8MHZ_6CK_0MS en Fuses en Atmel studio para aplicar la frecuencia de reloj de 8Mhz.

Prueba:

Si envío 'k' entonces vuelvo [B], Si envío 'j' entonces vuelvo [@], Si envío 'h' entonces vuelvo [@], Si envío 'g' entonces vuelvo [F] ... etc.

    
pregunta szaboa

1 respuesta

1

Esto realmente suena como un error de velocidad de transmisión. Tienes que estar seguro de que tu velocidad de transmisión está configurada correctamente. ¿No puede usar su módulo bluetooth como un espejo para reflejar los datos entrantes directamente a su PC?

    
respondido por el Barry

Lea otras preguntas en las etiquetas