Atmega162 USART1

Gast #341038
Lesenswert?

Hi Leute, sitze schon den ganzen Tag am Problem, dass meine USART1
Schnittstelle falsch läuft.
Wollte eigentlich mit Baud 9600 initialisieren, hab auch richtige
Werte. Da sollte die Bitbreite 104 µs sein, ist aber bei 1.8 ms. Und
eigentlich egal, was ich für a nehmen ist immer 1.8 ms. Ich vermute ich
initialisiere das ganze falsch, weiß aber nicht was genau falsch gemacht
wird :(

void uart_init(void)
{
  unsigned int a= 103;  // für 9600
  UBRR1H = a<<8;
  UBRR1L = a;

  UCSR1B = (1<<RXEN1) | (1<<TXEN1);
  UCSR1C = (1<<UCSZ11) | (1<<UCSZ10);
}
int usart_write(unsigned char data)
{

  while (!(UCSR1A & (1<<UDRE1)));
   UDR1 = data;
  return 0;
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren