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?
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.
Welcher Compiler ? Üblicherweise ist es putchar. Kannst du dir aber auch selbst schreiben.
1 | void putchar (char c) { |
2 | while (!TI); // Transmitter ready/busy ? |
3 | TI = 0; // TI Flag löschen |
4 | SBUF = c; // Ausgabe an UART |
5 | }
|
printf übergibt die Zeichen somit auf deine eigene "putchar" Funktion.
Mit _iowrite(...) oder putch(...) kommt das richtige an. Bei printf passiert einfach garnichts.
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.
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.
#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.
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.
1. Mit sprintf in einen Buffer schreiben. 2. String mit der entsprechenden Funktion auf UART/LCD/etc. ausgeben.
printf schreibt immer auf Standard-IO aus. und das ist beim C167cr die erste serielle Schnittstelle(nicht die zweite!).
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.