Ich habe ein Phytec Kitcon 167., mit einem Infinion C167cr. Ich benutze den Taskin Compiler V8.0r2. Ich möchte einen text über printf über meine Serielle Schnittstelle ausgeben. Nach Recherche im inet habe ich herausgefunden, das printf auf die Funktion _iowrite(...) zugreift, diese wiederum greift auf putch(...) zu. Ich habe jetzt die putch(...) so abgeändert, das mir der Text über RS232 ausgiebt. Rufe ich die _iowrite(...) direkt auf, so wird der übergebene Text ausgegeben. Aber mein printf greift überhaupt nicht auf _iowrite(...), putch(...) oder size_t _write (...) zu. Auf was greift jetzt printf wirklich zu?
Gast
#513070
Hi, auf die serielle Schnittstelle. Grüße, Michael
Nein greift sie nicht, das ist ja das Problem.
Gast
#513118
Also bei einem µC ist die Standardschnittstelle die serielle. Kommt an der seriellen gar nichts raus oder nur unlesbarer schrott. wenn schrott, ist die Schnittstelle nicht richtig konfiguriert. Erzähl mal dein Problem.
Gast
#513119
Welcher Compiler ? Üblicherweise ist es putchar. Kannst du dir aber auch selbst schreiben.
1 | |
2 | |
3 | |
4 | |
5 | |
printf übergibt die Zeichen somit auf deine eigene "putchar" Funktion.
Mit _iowrite(...) oder putch(...) kommt das richtige an. Bei printf passiert einfach garnichts.
Gast
#513144
Welcher Compiler ?
Tasking V8.0r2
Gast
#513158
Kenne ich leider nicht, also Handbuch lesen. Beim Keil und SDCC ist es putchar. Kann mir nicht vorstellen das Tasking das anders macht. Sorry, kann dir nicht helfen.
Habe das Handbuch gelesen. Das steht zwar drin was die ganzen Funktionen mach, aber nicht wie. Da steht: printf #include <stdio.h> int printf( const char *format, ... ); Performs a formatted write to the standard output stream. See also "_write()". Returns the number of characters written to the output stream.
Gast
#513174
Wenn du mal in dem stdio.h file suchst, bei mir steht so etwas: extern char *gets(char *); extern char getchar(void); extern void putchar(char); Poste mal das File.
Siehe Anhang.
Gast
#513197
#define putchar(x) putc(x,stdout) Sieht für mich nicht anders aus, es gibt also putchar und getchar. Was sagt das Handbuch
putchar #include <stdio.h> int putchar( int c ); Puts one character onto standard output. See also "_write()". Returns the character written or EOF on error. putc #include <stdio.h> int putc( int c, FILE *stream ); Puts one character onto the given stream. See also "_write()". Returns EOF on error.
Gast
#513210
Sorry, mitten im Schreiben abgerutscht. Die Frage lautet was sagt das Handbuch zu printf ?? Wie wäre es wenn du mein kleines "putchar" Beispiel einfach implementierst und probierst.
printf #include <stdio.h> int printf( const char *format, ... ); Performs a formatted write to the standard output stream. See also "_write()". Returns the number of characters written to the output stream. Ich werde es mal implementieren.
Warum benutzt Du nicht einfach sprintf?
Beispiel ging nicht. sprintf??? Geht es damit einfacher.
1. Mit sprintf in einen Buffer schreiben. 2. String mit der entsprechenden Funktion auf UART/LCD/etc. ausgeben.
Gast
#513240
Gast
#547490
printf schreibt immer auf Standard-IO aus. und das ist beim C167cr die erste serielle Schnittstelle(nicht die zweite!).
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.