Hi,
ich habe einen XMega128A3 (eigentlich egal) und möchte an beide USART
Schnittstellen nutzen um Daten an zei Geräte zu schicken (LCD und PC).
Ich habe beide Schnittstellen initialisiert und sie funktionieren auch.
Jetzt ist nur die Frage wie ich die printf Routine in die beiden USARTs
umleiten kann.
Ich habe folgende Funktionen:
zu selektieren. Das klappt aber leider nicht, offensichtlich
kann ich eine einmal gewählte Ausgabe nicht überschreiben.
Kann mir jemand helfen?
Gruß
Knut
wählen?
Ich habe gerade den Beitrag Beitrag "Infomationen zu fdevopen"
gefunden der sich genau damit beschäftigt.
Welche Lösung ist die elegantere bzw. gibt es irgendwo Probleme?
Gruß
Knut
Hmmm.. klappt nicht, wenn ich fdev_setup_stream GROSS schreibe erkennt
er es nicht, wenn ich es als klein Schreibe fehlt im ein Argument, er
will 4 statt 3.
Knut schrieb:> Hmmm.. klappt nicht, wenn ich fdev_setup_stream GROSS schreibe erkennt> er es nicht
Kann ich mir kaum vorstellen. Wenn du die avr-libc verwendest, dann hat
die stdio.h beide Varianten inklusive.
Eventuell hilft es die Zeilen mal von Hand einzutippen - stimmt vllt.
mit dem Font-Encoding was nicht.
Gruß Oliver
Oliver J. schrieb:> Eventuell hilft es die Zeilen mal von Hand einzutippen
Hat geklappt, warum auch immer.
Werde später gucken obs auch auf der Hardware läuft
Danke sehr.
Gruß
Knut
> if (channel == PC) {stdout = &pc;}> if (channel == LCD) {stdout = &lcd;}
Das würde ich nicht so machen.
Um printf mitzuteilen, auf welchen Stream die Ausgabe erfolgen soll,
gibt es fprintf.
So gesehen ist ein printf nichts anderes als ein
printf( .... ) <==> fprintf( stdout, ..... )
Das kannst du aber genausogut
fprintf( pc, ".....
oder
fprintf( lcd, "....
Danke für den Tip Karl Heinz,
mal gucken wie es mache, schön das es beim compilieren erstamal keine
Fehler mehr
gibt. Mal gucken ob's auf der Hardware auch läuft.
Knut