Estoy trabajando en un proyecto con el microcontrolador Atmega16 de la familia AVR. Estoy usando UART para mi proyecto. Necesito enviar datos a mi PC a una velocidad de transmisión de 9600 a través de un convertidor USB-TTL y ver los datos usando 'masilla'.
Estoy obteniendo datos absurdos en masilla. No soy un tipo de electrónica, sino un tipo de informática, por lo que necesito un poco de ayuda.
Supongo que podría estar escribiendo los bits de fusible incorrectos o algo más. Por favor, especifique los bits de fusible si es posible
El programa para el microcontrolador está debajo
#include<avr/io.h>
#include<util/delay.h>
#define UBRR_VALUE 51
//function to initialize UART
void uart_init(void)
{
UBRRH=(UBRR_VALUE>>8);//shift the register right by 8 bits
UBRRL=UBRR_VALUE;//set baud rate
UCSRB|=(1<<TXEN)|(1<<RXEN);//enable receiver and transmitter
UCSRC|=(1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1);//8 bit data format
}
//function to transmit data
void uart_transmit(unsigned char data)
{
while(!(UCSRA & (1<<UDRE)));
UDR=data;
}
void transmit_string(char *str_data)
{
while(*str_data)
{
uart_transmit(*str_data);
str_data++;
}
}
int main(void)
{
uart_init();
while(1)
{
//transmit_string("hello");
uart_transmit('h');
}
return 0;
}
Las especificaciones de los bits de fusible se indican a continuación
Gracias de antemano por cualquier tipo de ayuda