Muchas gracias, en primer lugar, decir que estoy programando en C. Por otro lado, el proyecto es un panel de mandos, pero da lo mismo, el caso es que quiero programar la UART de la siguiente forma:
- 4800 baudios
- 8 bits de datos
- sin paridad
- 8 bits de datos
- interrupción de recepción
- quiero poder enviar y recibir
La inicialización que hago es la siguiente:
UCSR0B = 0x00; //Deshabilita la línea serie hasta inicializarla
UCSR0C = 0x06; //1bit de stop, 8 datos y no paridad
UBRR0L = 0x8F; //Inicializa baudios a 4800 [Parte alta]
UBRR0H = 0x00; //Inicializa baudios a 4800 [Parte baja]
UCSR0B = 0x98; //Habilita el RX, su interrupción y el TX
Y la función de enviar es la siguiente:
void Transmite_x (BYTE x)
{
PORTD |= 0x08; //DIR a 1 para q transmita
while ( !( UCSR0A & (1<<UDRE0)) ) //mientras no se pueda enviar nada
;
UDR0 = x; //Put data into buffer, sends the data
retardo (600); //retardo de 600µs
PORTD &= 0xF7; //Para recibir datos
}
Con estos datos espero que me podáis ayudar, ya que estoy todo desesperado, o si tenéis algún ejemplo con la línea serie para el 168 que funcione que me lo dejéis. Muchas gracias y saludos para todos.