Hallo, ich habe ein System, das Daten über eine serielle Schnittstelle an einen uC schickt, der verarbeitet diese, und schickt das Ergebnis wieder über den UART zum PC (Terminal). Was ich nicht verstehe: Und zwar lege ich meine zu verschickenden Daten in eine Buffer, und dann versende ich diese zum uC, und danach mach ich erst eine paar Ausgaben am Bildschirm, jedoch ist es so, dass wenn ich die printf Ausgaben herausnehme mein ganzen System erheblich schneller ist. Weiß jemand woran das liegt? Hier noch ein kleiner Ausschnitt meines Codes: app->txBuf[app->txId++] = (MyByte8T)c; SendBuffer(); printf ("\nPing-Funktion gewaehlt!!!\n"); printf("Zu Uebertragender Wert[Buffer Inhalt]: %u \n",app->txBuf[app->txId]); printf("Wert Tickcounter beim Senden: %u \n",time_send); printf("Wert Tickcounter beim Senden für us: %u \n",time_send2); app->mode = 0; app->txId = 0; Wie man sehen kann, rufe ich vor dem printf erst die SendeBuffer - Funktion auf. Ich verstehe also nicht, warum das printf überhaupts Auswirkungen hat?!?!
Ein printf() ist ein rRiesenklotz am Bein des Controllers. In die Tonne damit.
Aber, ich muss unbedingt ein paar Ausgaben machen, wie kann ich das denn sonst machen?
Ein printf ist auch auf einem PC nicht unbedingt schnell. > Aber, ich muss unbedingt ein paar Ausgaben machen, wie kann ich das denn > sonst machen? Weniger ausgeben. (Im Ernst) Da muss nicht unbedingt stehen Ping-Funktion gewaehlt!!! Zu Uebertragender Wert[Buffer Inhalt]: 12 Wert Tickcounter beim Senden: 1045 Wert Tickcounter beim Senden für us: 857 Dieselbe Information kannst du auch kürzer kriegen. Es reicht ja wohl völlig, wenn dort steht Ping - Tx: 12 - T1: 1045 - T2: 857 und schon läuft dein PC-Programm schneller (unter anderem deswegen, weil es nicht soviel scrollen muss)
@Karl Heinz Ich weiß nicht genau was du damit meinst, wohin die Ausgabe des printf geht. Aber die Ausgabe erfolgt auch wieder auf dem Terminal, wo die Eingabe auch getätigt worden ist.
Cherry wrote: > @Karl Heinz > > Ich weiß nicht genau was du damit meinst, wohin die Ausgabe des printf > geht. > Aber die Ausgabe erfolgt auch wieder auf dem Terminal, wo die Eingabe > auch getätigt worden ist. Hab überlesen, dass dein printf wohl im PC-Programm gemacht werden. Siehe nachfolgende Antwort.
@ Karl Heinz Ja ich weiß, ich habe diese ganzen Ausgaben schon gelöscht und kompakter formuliert. Jedoch ist eigentlich ein printf (mit ca. 1ms) schon zulange, da ich eine exakte Zeitmessung in us brauche, und ich mit so einem verfälschten Ergebnis nichts anfangen kann.
Cherry wrote: > zulange, da ich eine exakte Zeitmessung in us brauche, und ich mit so > einem verfälschten Ergebnis nichts anfangen kann. Dann darfst du eben während die Zeitmessung läuft, gar nichts ausgeben, sondern erst danach.
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.