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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.