UART-/Portinitialisierung (Anfängerproblem) läuft schief

OP #404403
Lesenswert?
• ▲
▼
Hallo,

probiere gerade bei einem AVR Mega8 den UART in Betrieb zu nehmen und
eine Verbindung zum PC aufzubauen. Das klappt mit

void uart0_init(void)
{
  UCSRB = 0x00; //disable while setting baud rate
  UCSRA = 0x00;
  UCSRC = (1 << URSEL) | (3 << UCSZ0);
  UBRRL = 0xBF; //set baud rate lo
  UBRRH = 0x00; //set baud rate hi
  UCSRB = (1 << RXEN) | (1 << TXEN);
}

auch "gut". Ich kann Zeichen senden und empfangen. Was mich aber
stutzig macht (im main):

  while (1)
  {
    if (PINB & (1<<PINB3))
    {
      sent = 0;
    }
    else
    {
      PORTC &= ~(1<<PC0);
    }
    if (PINB & (1<<PINB2))
    {
      if (sent < 10)
      {
        uart_putc('H);
        uart_putc('M');
        uart_putc('\n');
        uart_putc('\r');
        sent ++;
      }
      else
      {
        PORTC |= (1<<PC3);
      }
    }
    else
    {
      PORTC &= ~(1<<PC3);
    }
  }

wird nach dem Einschalten/Reset ständig gesendet, obwohl ich den Taster
an PortB.2 nie drücke.
Woran liegt das?
Außerdem bekomme ich beim verwenden der uart_puts("HM\n\r\0");
Funktion nur "komische" Zeichen geliefert, d.h. ich kann nur einzelne
Zeichen empfangen.

Was mache ich falsch?

Hans
Angehängte Dateien:

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.