Hallo zusammen,
ich habe ein sehr seltsames verhalten von "printf" beim Arduinmo DUE
(8SAM3X8E), programmiert in Standard C (GCC) mit Atmel Studio 7.
Ich leite die Standardausgabe auf ein TFT mit RA8875, angesteuert über
4-Wire SPI, an.
Das funktioniert auch alles, aber:
Die Umleitung zum TFT erfolgt unter Nutzung von TFT_Putchar (bei mir
TFT_prcha genannt). Rufe ich TFT_prcha direkt auf, so wird das Zeichen
auch korrekt und sofort ausgegeben.
Nutze ich aber printf (aus einer/der Standardlibrary), dann scheint das
System mehrere 100 ms delay zwischen printf-Aufruf und der Ausgabe zu
warten.
Das hat bei mir mit(Code vereinfacht dargestellt):
1 | SetzePixelCursorXY(0,100);
|
2 | prcha('x');
|
3 | prcha('x');
|
4 | prcha('x');
|
5 | prcha('x');
|
6 | printf("Pixel 0,100");
|
7 | SetzePixelCursorXY(0,300);
|
8 | printf("Pixel 0,300");
|
9 | prcha('-');
|
10 | prcha('-');
|
11 | prcha('-');
|
12 | prcha('-');
|
folgenden Fffekt:
Es wird "sofort" an der richtigen Positon (0,100)
xxxx ausgegeben, gefolt von ---- an Position (0,300), was eigentlich
falsch ist.
Nach einer kurzen Wartezeit von ein paar 100 ms wird dann unmittelbar
hinter (!) ----Pixel 0,100Pixel 0,300) ausgegeben.
Bei Programmierung unter irgendweclhen Betriebssystemen könnte ich mir
ein solches Verhalten erklären, aber hier? Oder arbeitet die Library
"printf" irgendwie im Hintergrund an? Weiß das jemand von Euch? Wäre
toll. Noch toller wäre, wenn es einen Lösung dafür gäbe.
Danke, yogy