Forum: Mikrocontroller und Digitale Elektronik printf Ausgabe beim C167cr über RS232


von Sebastian U. (sebi85)


Lesenswert?

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?

von MSc (Gast)


Lesenswert?

Hi,

auf die serielle Schnittstelle.

Grüße,

Michael

von Sebastian U. (sebi85)


Lesenswert?

Nein greift sie nicht,
das ist ja das Problem.

von MSc (Gast)


Lesenswert?

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.


von Joe (Gast)


Lesenswert?

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.

von Sebastian U. (sebi85)


Lesenswert?

Mit _iowrite(...) oder putch(...) kommt das richtige an.
Bei printf passiert einfach garnichts.

von Joe (Gast)


Lesenswert?

Welcher Compiler ?

von Sebastian U. (sebi85)


Lesenswert?

Tasking V8.0r2

von Joe (Gast)


Lesenswert?

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.

von Sebastian U. (sebi85)


Lesenswert?

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.

von Joe (Gast)


Lesenswert?

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.

von Sebastian U. (sebi85)


Angehängte Dateien:

Lesenswert?

Siehe Anhang.

von Joe (Gast)


Lesenswert?

#define putchar(x)      putc(x,stdout)

Sieht für mich nicht anders aus, es gibt also putchar und getchar.

Was sagt das Handbuch

von Sebastian U. (sebi85)


Lesenswert?

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.

von Joe (Gast)


Lesenswert?

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.

von Sebastian U. (sebi85)


Lesenswert?

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.

von Marko B. (glagnar)


Lesenswert?

Warum benutzt Du nicht einfach sprintf?

von Sebastian U. (sebi85)


Lesenswert?

Beispiel ging nicht.

sprintf???

Geht es damit einfacher.

von Marko B. (glagnar)


Lesenswert?

1. Mit sprintf in einen Buffer schreiben.
2. String mit der entsprechenden Funktion auf UART/LCD/etc. ausgeben.

von Max Murks (Gast)


Lesenswert?


von Anfänger (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.