Forum: Mikrocontroller und Digitale Elektronik Atmega162 USART1


von xp3 (Gast)


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;
}

von Rahul (Gast)


Lesenswert?

UCSR1C = (1<<UCSZ11) | (1<<UCSZ10);

Da fehlt noch (1<<URSEL).

Seite 171 im Datenblatt.

von xp3 (Gast)


Lesenswert?

Vielen Dank!
Habs übershenen :(

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.