AVR ATmega32 UART no está recibiendo

-1

Estoy probando funciones de transacción UART simples para ATmega32. Puedo enviar los bytes pero no recibir nada. Estoy usando la recepción UART encuestada.

void UARTReadStr12(uint8_t *buffer) {

   uint16_t i = 0;

   for (i = 0; i < 12; i++) {
       while (!(UCSRA & (1 << RXC)));
       *(buffer + i) = UDR;
   }
}

y se inicializa como,

void UARTInit(uint16_t ubrr_value) {

//Set Baud rate
    UBRRL = ubrr_value;
    UBRRH = (ubrr_value >> 8);
    UCSRC = (1 << URSEL) | (3 << UCSZ0);
    UCSRB = (1 << RXEN) | (1 << TXEN);
}
    
pregunta Parth Parikh

1 respuesta

1

A partir de esto, sabemos lo suficiente como para decir que el problema puede ser cualquier cosa, pero el problema más común solía ser la sincronización incorrecta.

  1. El atmega nuevo se está ejecutando en 1MHz en lugar de 8, hasta que se desconecte el fusible CKDIV8.
  2. El oscilador interno puede desviarse más que la precisión requerida (+ -10%)
  3. Tiene un oscilador de cristal conectado, pero atmega todavía se está ejecutando en un oscilador interno (ver 1,2)
  4. ubbr no tiene una precisión de + -2%: enlace
  5. ubbr no es una velocidad en baudios, por lo que primero debe calcularlo
respondido por el jnk0le

Lea otras preguntas en las etiquetas