USART Empfang

Gast #159583
Lesenswert?
• ▲
▼
Hi,

so kann ich einzellne Zeichen Empfangen, die ich mir dann auf einem
LCD
anzeigen lassen.

SIGNAL(SIG_UART_RECV)
{
 count=0;
 register char temp;
 temp = inp(UDR);// read byte for UART data buffer
 value = temp;
}

Jetzt möchte ich eine Zeichenkette empfangen und weiss nich wie.
Wenn ich z.B.: 1 2 3 ,mit meinem UARTMonitor,versenden möchte, dann
erscheint immer das letzt Zeichen, in dem Fall die 3. Hat jemand ein
Tip?

Danke!
Gast #159585
Lesenswert?
• ▲
▼
Jo das wär dann wohl der Plan.

Da gibt es in einem Register irgendwo ein Bit das gesetzt wird, wenn
das letzte Zeichen empfangen wurde. Da kannste dann sowas wie
loop_until_bit_is_set benutzen. Klappt so ganz gut bei mir.

So könnte das z.B zum Senden aussehen:

void sendestring (char *szbuf){
  while(*szbuf++){
    outp (*szbuf, UDR);
    loop_until_bit_is_set(USR, UDRE);
  }
    }

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren