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?