www.mikrocontroller.net

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


Autor: Andreas Müller (andym)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Müller (andym)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Paulin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.