Forum: Compiler & IDEs AVR Studio UART RS232 Ausgabe auf Hyperterminal


von Andreas M. (andym)


Angehängte Dateien:

Lesenswert?

Hallo ich habe noch ein kleines Problem mit meinem Programm.
Ich habe A/D gewandelte Werte und gebe Sie auf einem Display über I2C 
aus, was alles auch wunderbar funktioniert. Zusätzlich will ich diese 
Werte die sich in Form eines Strings vorfinden auf dem Hyperterminal 
anschauen. Habe bereits COM1 und Frequenz am Terminal eingestellt und im 
Programm selbst die uart_putchar() eingefügt. Diese gebe ich mittels 
fdevopen durch printf aus. Aber es funktioniert noch nicht. Benutze 
einen mega 16 und habe TX über UCSRB freigeschaltet Baudrate ist auch 
eingestellt auf 9600. Also falls jemand Tipps hat würde ich mich sehr 
freuen.

MFG andym

von Stefan (Gast)


Lesenswert?

Funktioniert UART grundsätzlich nicht oder funktioniert fdevopen/printf 
nicht? UART kannst du durch dieses Codestückchen testen:

#if 1
  {
     char *p;

     p = "Kanal 2: ";
     while(*p)
       uart_putchar(*p++);

     p = s;
     while(*p)
       uart_putchar(*p++);

     uart_putchar('\r');
  }
#else
  fdevopen(uart_putchar, 0);
  printf("Kanal 2: %s\r",s);  // Weitergabe der Variable an putchar
#endif

von Andreas M. (andym)


Lesenswert?

Hi UART funktioniert daher kann es eigentlich nur noch fdevopen sein 
oder es liegt irgendwie am Hyperterminal, da ich über Matlab mit COM1 
kommunizieren konnte und auch Werte bekam.

PS:kann ich den String über UART ausgeben ohne fdevopen zu benutzen

von Andreas Paulin (Gast)


Lesenswert?

Die printf-Ausgabe erfolgt über den festgelegten I/O-stream 'stdout'. 
Den musst Du definieren und zwar so:

static FILE uart0_stream = FDEV_SETUP_STREAM(uart0_putchar, 
uart0_getchar, _FDEV_SETUP_RW);

static FILE uart1_stream = FDEV_SETUP_STREAM(uart1_putchar, 
uart1_getchar, _FDEV_SETUP_RW);

Damit habe ich zwei Files definiert uart0_stream und uart1_stream.
Diese werden nun (GANZ wichtig!) dem Standardstream 'stdout' zugeordnet, 
z.B.:

stdout = &uart0_stream;
//stdout = &uart1_stream;

..also so gehts bei mir. Vielleicht hilfts..?

Evtl. liegts aber wirklich am Terminalprogramm?
Teraterm hier ist nicht ganz so seltsam und bockig wie Hyperterm:
http://hp.vector.co.jp/authors/VA002416/teraterm.html
Man kann Einstellungen speichern und es hat auch eine "Reset 
Port"-Funktion, mit der man den UART des PC wieder flottmachen kann, 
wenn er sich durch undefiniertes Portgeklimper abgeseilt hat...

Grüßle

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.