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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.