Gast
#716048
Hallo, ich wollte nur mal wissen ob es möglich ist, einen String aus dem Flash direkt per Uart zu versenden. Also so in der Art:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
Gruß, Marian
|
Anzeige
|
Printf und String im Flash
Gast
#716048
Hallo, ich wollte nur mal wissen ob es möglich ist, einen String aus dem Flash direkt per Uart zu versenden. Also so in der Art:
Gruß, Marian Marian wrote: > Hallo, > > ich wollte nur mal wissen ob es möglich ist, einen String aus dem Flash > direkt per Uart zu versenden. > Also so in der Art: >
> mit printf selber geht das nicht. printf geht immer davon aus, dass der String im SRAM liegt. Aber printf hat einen speziellen Formatbezeichner, der ihm sagt, dass ein String aus dem Flash kommt printf( "%S", PSTR("Hallo Welt" ) ); (Ich weiss jetzt gar nicht, ob es einen printf_P gibt, der den Format String im Flash erwartet, dann würde das direkt gehen printf_P( PSTR("Hallo Welt" ) ); ) > einen String aus dem Flash > direkt per Uart zu versenden. und so einfach geht das mit dem versenden über die UART auch wieder nicht. Man kann zwar mit einer speziellen Funktion die Ausgabe der Standardfunktionen auf die UART umleiten. Allerdings ist es meist deutlich einfacher, die UART Funktionen (die man selber schreiben muss), direkt zu benutzen. Nicht zuletzt deshalb, weil die Standard Ausgabefunktionen dann doch schon einiges an Overhead mitbringen.
Gast
#716054
Ja, aber nicht mit printf. Dafür gibt es die Funktion printf_P. Das zieht sich durch die ganze avr-libc. Zu vielen Funktionen gibt es eine _P-Variante für Daten aus dem flash. Steht sogar alles in der Doku... Oliver
Gast
#716059
@Karl Heinz und Oliver: Danke für die ausführliche Antwort. printf_P muss ich dann wohl übersehen haben. PS:Hm ich werde das mal mit den Uartfunktionen testen, mal schauen wie viel das bringt :). Ciao, Marian Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|