Forum: Compiler & IDEs UART neue Zeile mit "\r\n"


von Jackson S. (jackson55)


Lesenswert?

Hallo,

nach durchstöbern ähnlicher Foreneinträge, komme ich immer noch nicht 
auf den Fehler, warum keine neue Zeile in HTerm erfolgt.

Folgender Programmcode:

standart code:
1
int uart_putc(unsigned char c)
2
{
3
  while (!(UCSR0A & (1<<UDRE0)))  /* warten bis Senden moeglich */
4
  {
5
  }
6
  
7
  UDR0 = c;                      /* sende Zeichen */
8
  return 0;
9
}
10
11
12
/* puts ist unabhaengig vom Controllertyp */
13
void uart_puts (char *s)
14
{
15
  while (*s)
16
  {   /* so lange *s != '\0' also ungleich dem "String-Endezeichen(Terminator)" */
17
    uart_putc(*s);
18
    s++;
19
  }
20
}
1
main:
2
3
int main (void) 
4
{
5
  
6
  Port_init();
7
  sei();   
8
  UART_init ();
9
  ADC_Init();
10
  initTimer0();
11
  initTimer1();
12
  
13
  uart_puts("Hallo");
14
  uart_puts("\r\n ");

anscheinend will mein terminal-programm \r\n nicht als funktion neue 
zeile definieren sonderen lieber als zeichen ausgeben. Ebenfalls ist 
gibt es das selbe ergebnis im eigen konstruierten sharpe terminal.

http://image-upload.de/image/tLjxOD/e60914a471.png

Vllt weiß jemand von euch abhilfe. Danke.

von Falk B. (falk)


Lesenswert?

@ Jackson Sowieso (jackson55)

>auf den Fehler, warum keine neue Zeile in HTerm erfolgt.

Weil man dort verschiedene Sachen einstellen kann, die eine neue Zeile 
erzeugen sollen oder auch nicht.

von Falk B. (falk)


Lesenswert?

Bei dir ist eingestellt

NEWLINE at NONE!!

von NewLine (Gast)


Lesenswert?

uart_puts("Hallo\r\n");
funktioniert auch.

Spiel mal ein wenig an der Dropdownbox "Newline at" herum.

von Jackson S. (jackson55)


Lesenswert?

ja stimmt damit kann man natürlich beliebig die neue zeile definieren, 
ich dachte eben das der Befehl "\r\n" universell eine neue Zeile 
definiert. Anscheinend ignoriert Hterm den Befehl und gibt ihn als 
gewöhnliches zeichen aus.


Danke!!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Jackson Sowieso schrieb:
> ich dachte eben das der Befehl "\r\n" universell eine neue Zeile
> definiert. Anscheinend ignoriert Hterm den Befehl und gibt ihn als
> gewöhnliches zeichen aus.

Das ist auch kein Wunder, denn:

HTerm ist kein Terminalprogramm

auch wenn es hartnäckig als solches bezeichnet wird.

Ein Terminalprogramm emuliert ein Terminal, wie z.B. DEC VT-100. Mit 
dieser Emulation lässt sich der Cursor auf dem Bildschirm steuern, damit 
lassen sich Textattribute (Farben o.ä.) verändern, damit kann Text 
gelöscht oder eingefügt werden.

HTerm ist ein sehr praktisches Programm, wenn man den auf einer 
seriellen Schnittstelle empfangenen Bytes auf die Bits schauen möchte - 
aber von der Emulation eines Terminals versteht es exakt gar nichts.

von Mike (Gast)


Lesenswert?

Jackson Sowieso schrieb:
> Anscheinend ignoriert Hterm den Befehl und gibt ihn als
> gewöhnliches zeichen aus.

Für HTerm ist es eine Folge von zwei Zeichen. Es ignoriert die beiden 
überhaupt nicht, sondern es macht damit genau das, was du ihm sagst. Und 
wenn du ihm nicht sagst, dass es diese Zeichenfolge als einen speziellen 
Befehl interpretieren soll, tut es das auch nicht.

So ist das mit Computern.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Benutze PuTTY. Das läuft nicht nur mit IP-Verbindungen, sondern auch 
über UART. Die VT200-Emulation ist excellent.

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.