Was macht printf wirklich?

Gast #60314
Lesenswert?
• ▲
▼
Ich habe folgendes Problem:
Ich betreibe die RS232 des P89C51 im Interruptmodus.
Empfangen OK.
Beim Senden funktioniert es nur mit 6 Zeichen. Also
z.B. printf("HALLODU")
Sobald ich 7 Zeichen senden will, funktioniert garnichts mehr.
printf("HALLODUDA")
Die Funktion putchar habe ich folgendermaßen geändert:
char putchar (char c )
{
if (c == '\n') c = 0x0d;
SBUF = c;
while(TI);
}
return(c);
}

Grüße Peter
Gast #60315
Lesenswert?
• ▲
▼
OK - Problem gelöst! (zumindest geht´s jetzt)
Es dürfte da irgendwelche Geschwindigkeitsprobleme zwischen
putchar und printf geben. Habe die putchar nun so geändert, dass
sie alle Zeichen in einen Puffer schreibt den ich dann selber
über SBUF ausgebe.
Gast #60316
Lesenswert?
• ▲
▼
Zum eigentlichen Problem:

Du solltest so lange warten bis die Zeichen gesendet sind. Ich weiss ja
nicht, wie Du das sonst machst. UDRE oder sowas ist das Register oder
das Bit. (ich habe gerade mein Datanblatt oder Quellcode nicht zur
Hand).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren