Forum: Mikrocontroller und Digitale Elektronik UART-/Portinitialisierung (Anfängerproblem) läuft schief


von Hans M. (h_meier)


Angehängte Dateien:

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

von johnny.m (Gast)


Lesenswert?

Wie ist der Taster denn angeschlossen? Low-Side oder High-Side? Sollte
mich nicht wundern, wenn die UART aufhört zu senden, wenn Du den Taster
drückst...

von Hans M. (h_meier)


Lesenswert?

AAAARRRRGGGGGHHHH.

wie peinlich. Sorry für das Posting, aber es ist echt so wie du sagst.
Hast du evtl. auch eine Lösung für das 2. Problem, das ich bei
uart_puts nur komische Zeichen empfange?

Hans

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.