caracteres ilegibles del microcontrolador

0

Tengo un microcontrolador ATMEGA328P-PU conectado al programador POLOLU - PMG03A. Estoy usando el siguiente código para enviar datos:

#define F_CPU     1600000UL
#define BAUD      19200
#define BRC       ((F_CPU/16/BAUD) - 1)

#include <avr/io.h>
#include <util/delay.h>
#include <stdlib.h>
#include <util/setbaud.h> 

int main( void ) 
{
    UBRR0H = (BRC >> 8);    
    UBRR0L = BRC;

    UCSR0B = ( 1 << TXEN0 );
    UCSR0C = ( 1 << UCSZ01 ) | ( 1 << UCSZ00 );

    while( 1 )
    {
        UDR0 = 0B11110000;
        _delay_ms(100);
    }


    return 0;
}

pero en lugar de recibir '11110000' en / dev / ttyACM0, recibo '11111000'.

0000037e: 11111000 11111000 11111000 11111000 11111000 11111000  ......
00000384: 11111000 11111000 11111000 11111000 11111000 11111000  ......
0000038a: 11111000 11111000 11111000 11111000 11111000 11111000  ......
00000390: 11111000 11111000 11111000 11111000 11111000 11111000  ......
00000396: 11111000 11111000 11111000 11111000 11111000 11111000  ......
0000039c: 11111000 11111000 11111000 11111000 11111000 11111000  ......

Además los valores de bytes cambian a veces. ¿Por qué sucede esto?

    
pregunta K666

1 respuesta

2

Al experimentar, descubrí que tenía que cambiar la tasa de BAUD a 14400 y funcionó:

  #define BAUD    14400
    
respondido por el K666

Lea otras preguntas en las etiquetas