Hice una comunicación simple usando atmega128. ¿Es diferente la sintaxis para UART0 entre atmega128 y atmega8535? Porque cuando usé el comando "printf" y "putchar" en atmega128, no funcionó, pero en atmega8535 funcionó
Hice una comunicación simple usando atmega128. ¿Es diferente la sintaxis para UART0 entre atmega128 y atmega8535? Porque cuando usé el comando "printf" y "putchar" en atmega128, no funcionó, pero en atmega8535 funcionó
Suponiendo que ha cargado el registro UBRR0L y UBRR0H con el valor adecuado, ha utilizado el mismo compilador para compilar atmega128 y atmega8535, y no hay ningún problema con el hardware que se utiliza, intente verificar la comunicación en serie con registro directo operación de escritura. Intenta transmitir un solo personaje con éxito. como abajo
while(!(UCSR1A & (1 << UDRE1)));
UDR1 = 'A'; // it could be any character
si el código anterior funciona bien, verifique los códigos printf y putchar en su biblioteca del compilador, ¡y descubra cómo se modifican esos códigos para escribir caracteres en el puerto serie! Si es necesario, modifique el código printf y putchar para que se ajuste a atmega128. ¡Asegúrese de que mientras lo modifica mantiene el código original más seguro!
Como señaló Basavaraju, intente que sea sencillo para las pruebas iniciales.
Algunos problemas potenciales generales que vienen a la mente:
static FILE mystdout = FDEV_SETUP_STREAM( uart_putchar, NULL, _FDEV_SETUP_WRITE );
int uart_putchar(char c, FILE *stream);
, que es su implementación para enviar un carácter.