Quiero establecer una comunicación USART entre mi chip Atmega32a y mi computadora, pero hay algo que no entiendo. Mientras leía la hoja de datos, el registro UBRR es un registro de 12 bits, pero se divide en dos registros de 8 bits: UBRRH que contiene los cuatro bits más significativos y el UBRRL que contiene los ocho bits menos significativos de la velocidad de transmisión de USART; Mi pregunta es: ¿Por qué tengo que cambiar BAUD_PRESCALLER con 8 a la derecha? No entiendo cómo funciona todo esto :( El ejemplo si BAUD_PRESCALLER es 120, en binario sería: 0b01111000 así 0b01111000 > > 8 = 0b00000000; = > ¿Estoy equivocado en alguna parte?
void USART_init(void)
{
UBRRH = (uint8_t)(BAUD_PRESCALLER>>8); <--- this line
UBRRL = (uint8_t)(BAUD_PRESCALLER); <-- and this line
UCSRB = (1<<RXEN)|(1<<TXEN);
UCSRC = (1<<UCSZ0)|(1<<UCSZ1)|(1<<URSEL);
}