Hallo Zusammen,
Ich möchte mit Hilfe von printf Ausgaben auf beiden seriellen
Schnittsellen des Mikrocontrollers machen.
Mit einer Schnittstelle habe ich keine Probleme, ich habe einfach die
Funktion sendchar() für eine Schnittstelle definiert und kann dann mit
printf Ausgaben auf diese Schnittstelle machen.
Wie kann ich aber mit printf Ausgaben auf beide Schnittstellen machen?
Ich stelle mir das so vor, dass ich mit einem Argument angeben kann auf
welche Schnittstelle printf schreiben soll.
z.B.: printf(UART0, "Test1");
printf(UART1, "Test2");
Funktioniert so was, oder wie kann ich das am einfachsten realisieren?
freundliche Grüße,
Stefan
Hallo!
Vielen Dank schon mal für deine Antwort, nur komme ich trotzdem nicht
weiter.
Ich kenne die Fuktion fprintf() um in Dateien zu schreiben.
Aber wie schaffe ich es nun auf die beiden seriellen Schnittstellen zu
schreiben?
Muss ich mit fopen() zuerst die Schnittstelle öffnen?
Wenn ja, wie? -> fopen("UART0", "w"); ???
Hilf mir bitte ein bißchen auf die Sprünge, ich kann nichts finden, dass
mir in dieser Sache weiterhilft.
mfg
Stefan
Was du willst ist eine Funktion, welche mit sprintf arbeiten. Schau dir
variable Argumentenlisten an, mache deine printf, das erste Argument
gibt an welcher UART und die restlichen werden 1:1 an sprintf
weitergegeben. Der string der dabei entsteht geht dann per uart_puts()
o.ä. raus. das sind keine 10 Zeilen Code.
Wenn du selbst nich drauf kommst, kann ich dir später auch mal ein paar
Codeschnipsel geben.
Hallo und Danke!
in der Zwischenzeit hatt ich eine Idee...
Ich habs inzwischen so realisiert:
Damit printf Ausgaben auf die Uart macht, muss ich ja eine Funktion
definieren -> sendchar()!
Jetzt habe ich einfach die sendchar-Funktion erweitert:
bevor ich printf() aufrufe setze ich eine globale Variable UART (Wert =
0 für UART0, Wert = 1 für UART1)!
und senchar() sieht so aus:
Aber printf() ist was ganz anderes, das formatiert dir deinen string,
daher ja das f am Schluss...
So wie du das machst wird das wohl auf eine poplige uart_puts()
herauslaufen, bei der einfach noch ausgewählt wird, welcher uart...
1
voiduart_puts(intuart,char*str){
2
while(*str){
3
putchar(uart,*str);
4
str++;
5
}
6
}
Ich rate dir, lern erstmal die Grundlagen von C und mit einer C-Lib
umzugehen, bevor du versucht die eine eigene auf Controllern zu bauen
oder einfach mal ein wenig uC-C-Howtos durchlesen, das wurde das alles
schon 24 mal durchgekaut.