Mi salida es diferente de mi entrada cuando trato de leerla desde mi terminal Hercules. ¿Podría ser esto de una mala inicialización de UART?
Entradas: | á, 1, 123
Salidas: | a, ±, ± ²³
Código:
#include <avr/io.h>
#ifndef F_CPU
#define F_CPU 1000000 // 1 Mhz
#endif
#define USART_BAUDRATE 9600
#define BAUD_PRESCALE ((( F_CPU / ( USART_BAUDRATE * 16UL ))) - 1)
int main (void)
{
char ReceivedByte ;
UCSRB = (1 << RXEN ) | (1 << TXEN ); // Turn on the transmission and reception circuitry
UCSRC = (1 << URSEL ) | (1 << UCSZ0 ) | (1 << UCSZ1 ); // Use 8-bit character sizes
UBRRH = ( BAUD_PRESCALE >> 8) ; // Load upper 8-bits of the baud rate value into the high byte
//of the UBRR register
UBRRL = BAUD_PRESCALE ; // Load lower 8 -bits of the baud rate value into the low byte of the
//UBRR register
for (;;) // Loop forever
{
while (( UCSRA & (1 << RXC )) == 0) {}; // Do nothing until data have been received and is
//ready to be read from UDR
ReceivedByte = UDR ; // Fetch the received byte value into the variable "ByteReceived"
while (( UCSRA & (1 << UDRE )) == 0) {}; // Do nothing until UDR is ready for more data to
//be written to it
UDR = ReceivedByte ; // Echo back the received byte back to the computer
}
}