Forum: Mikrocontroller und Digitale Elektronik USART bei ATMEGA32


von Christian (Gast)


Lesenswert?

Hallo

Ich hoffe es kann mir jemand helfen.
Ich möchte einen String vom uC auf den PC übertragen.
Das geht jedoch nicht es kommt am PC nichts an.
Einzelne Zeichen kann ich aber Senden das funktioniert einwandfrei.

Ich verwende folgende Funktionen dafür :


char u[] = "Test"; // String den ich senden möchte

int uart_putc(unsigned char c)
{
    while (!(UCSRA & (1<<UDRE))); /* warten bis Senden moeglich */
    UDR = c;                      /* sende Zeichen */
    return 0;
}


void uart_puts (char *s)
{
    while (*s)
    {   /* so lange *s != '\0' also ungleich dem
"String-Endezeichen" */
        uart_putc(*s);
        s++;
    }
}
Ich übergebe dann den String der Funktion "uart_puts (char *s)" so:

uart_puts (u);

Kann mir jemand sagen was ich falsch mache?

Danke.

von inoffizieller WM-Rahul (Gast)


Lesenswert?

Funktioniert es denn mit einzelnen Zeichen?

von Christian (Gast)


Lesenswert?

Ja mit einzelnen Zeichen funktioniert es.
Nur mit einem string kommt nichts an.

von inoffizieller WM-Rahul (Gast)


Lesenswert?

hast du mal puts("Test"); ausprobiert?
Dann würde es nämlich an deiner String-Deklaration liegen.

von Christian (Gast)


Lesenswert?

Ja ich habe den String auch schon direkt der Funktion übergeben das hat
leider auch nicht funktioniert.

von inoffizieller WM-Rahul (Gast)


Lesenswert?

Da wäre noch ein "Schönheitsfehler":
putc liefert einen int-Wert zurück, der nirgends benutzt wird.
Das ist zwar C-konform, aber...

Mach daraus doch einfach mal "void".

von Danny (Gast)


Lesenswert?

hat bei mir bestens funktioniert:

void UART_SEND(char *senden)
{
  for (;*senden !='\0';senden++){
  loop_until_bit_is_set(UCSRA, UDRE);
  UDR = *senden;
  }


UART_SEND ("TEST");
oder auch
UART_SEND(variable);

von Christian (Gast)


Lesenswert?

Danke

Ich werde das mal ausprobieren.

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.