Forum: Mikrocontroller und Digitale Elektronik Was macht printf wirklich?


von Peter (Gast)


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

von Peter (Gast)


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.

von Ronny Schulz (Gast)


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).

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.