Forum: Mikrocontroller und Digitale Elektronik Frage zu USB CDC: Daten einlesen vom Rechner


von markus (Gast)


Lesenswert?

Hallo,

seit einiger Zeit versuche ich über die virtuelle serielle Schnittstelle 
mit einem uc3b1256 zu kommunizieren (AtmelStudio 6, JTAGICE3). Mit einem 
Beispiel (die rs232<->usb-Brücke) aus dem ASF läuft alles so weit, dass 
ich mit udi_cdc_putc() Zeichen an den Rechner senden kann, die auch alle 
sicher ankommen. Das Problem liegt in der anderen Richtung: Wenn ich 
z.B. mit

while(true)
{
 if (udi_cdc_is_rx_ready())
 {
   caRecieve_buffer[0] = udi_cdc_getc();
   udi_cdc_putc(caRecieve_buffer[0]);
 }
}

ein Zeichen lese und es wieder ausgebe, gehen einige Zeichen verloren, 
wenn ich mit Hterm mehrere Zeichen hintereinander sende. Außerdem kommt 
prinzipiell das erste Zeichen, das ich sende, nicht an. Woran kann das 
liegen? Die Probleme treten auch auf, wenn man die Zeichen alle im 
Buffer zwischenspeichert und ihn erst ausgibt, wenn er voll ist. Was 
sicher funktioniert: Wenn ich zwei Zeichen ("gleichzeitig", also mit 
einmal Enter drücken) sende, kommt das zweite Zeichen sicher an. Die 
serielle Schnittstelle läuft bei 115200 baud, 8 db, 1 sb, even.

Hat jemand eine Idee, wie man das beheben kann oder wie man vernüftig 
Strings ausliest?

Vielen Dank schonmal!

Grüße

Markus

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.