Forum: Mikrocontroller und Digitale Elektronik ELV USB-I²C-Interface Pufferüberlauf


von Jörg R. (Firma: Rehrmann Elektronik) (j_r)


Lesenswert?

Hallo Leute,

ich hoffe, jemand kennt das Problem und vor allem eine Lösung dazu.
Von ELV gibt es ein USB-I2C-Interface. Mit HTerm lassen sich Daten 
zwischen PC und I2C-Bus austauschen. Wenn man nun komplette Datensätze 
auf den I2C-Bus ausgeben will, kann man mit HTerm auch Dateien an das 
Interface senden. Leider überflutet HTerm den winzigen Puffer des 
I2C-Interfaces sofort, sodass dieses seinen Dienst einstellt. Ich habe 
noch keine Möglichkeit gefunden, das zu verhindern. Kennt jemand eine 
Möglichkeit, wie man die Daten mit HTerm oder einer anderen Software 
kontrolliert an das Interface übermitteln kann ?

Jörg

von Jim M. (turboj)


Lesenswert?

Haken bei "CTS Flow control" gesetzt?

von Jörg R. (Firma: Rehrmann Elektronik) (j_r)


Lesenswert?

Jim M. schrieb:
> Haken bei "CTS Flow control" gesetzt?

habe ich auch schon probiert. Das hat nur den Effekt, das überhaupt 
keine Daten mehr übertragen werden. Anscheinend wird CTS nicht an I2C 
adaptiert.

Jörg

von Stefan F. (Gast)


Lesenswert?

Falls du Linux benutzt, kannst du alternativ cutecom verwenden. Da 
kannst du ganz rechts unten eine Verzögerung zwischen den Zeichen 
einstellen.

von Sascha W. (sascha-w)


Lesenswert?

Jörg R. schrieb:
> Leider überflutet HTerm den winzigen Puffer des
> I2C-Interfaces sofort, sodass dieses seinen Dienst einstellt.
In der Anleitung steht das der Puffer 400Byte groß ist - da frage ich 
mich was du da sendest. Die paar Byte die du in der Ansicht der 
Systemsteuerung siehst beziehen sich nur auf RS232 Interface Hardware 
die im PC fest verbaut ist.

Sascha

von Joachim B. (jar)


Lesenswert?

und statt HTERM ein eigenens Programm schreiben welches kleinere Blöcke 
überträgt?

COM ist ja nicht so schwer, LCC32 gibts gratis

von Jörg R. (Firma: Rehrmann Elektronik) (j_r)


Lesenswert?

Danke Euch für die Bemühungen.

@Stefan: Geht leider nicht, da alles unter Windows läuft. Wäre 
allerdings auch keine saubere Lösung, da man entweder die Verzögerung 
unnötig groß einstellen müsste oder das Risiko eingehen müsste, das die 
Daten schneller gesendet werden als sie verarbeitet werden können.

@Sascha: Für kleinere Spielereien ist der Puffer sicher gross genug. Es 
gibt aber durchaus Anwendungen, bei denen auch mal mehrere kB übertragen 
werden müssen, z.B. wenn Speicherinhalte kopiert werden sollen.

@Joachim: Das kostet Zeit und Geld. Ich wollte eigentlich vermeiden, das 
Rad nochmal zu erfinden. Ich hatte gehofft, dass ein so grundlegendes 
Problem schon umfassend gelöst wurde. Da habe ich mich wohl getäuscht. 
Selbst beim ELV-Support gibt es keine Lösungsansätze oder nähere 
Informationen dazu.

Wahrscheinlich muss man tatsächlich ein Programm schreiben, dass jedes 
Byte einzeln überträgt und jeweils die Acknowledge-Rückmeldung abwartet.

Jörg

von Joachim B. (jar)


Lesenswert?

Jörg R. schrieb:
> Wahrscheinlich muss man tatsächlich ein Programm schreiben, dass jedes
> Byte einzeln überträgt und jeweils die Acknowledge-Rückmeldung abwartet.

alternativ könntest du auch einen µC auf der I2C Seite mit größerem 
Buffer zwischensetzen, es ist ja egal wo der Puffer sitzt ob in win oder 
im I2C

von Dieter G. (briefkopf)


Lesenswert?

Hallo

unter Windows gibt es das Programm ZOC, das kann für jeden Char, für 
jedes LF/CR getrennt die Verzögerung einstellen (weiss jetzt nicht ob 
mit den aktuellen Win Versionen auch noch so ist ...)
Es gibt auch Demo-Versionen, kannst ja mal testen.

Dieter

von Jörg R. (Firma: Rehrmann Elektronik) (j_r)


Lesenswert?

Hallo nochmal und vielen Dank an alle Helfer.

ZOC habe ich irgendwie nicht zum Laufen bekommen. Ich konnte das Problem 
wie folgt vorerst "lösen": Ich habe die Commport-Baudrate auf Minimum 
gesetzt (4800 Baud) und noch viele Leerzeichen in die Datei eingefügt. 
Offensichtlich wird da zwischen USB und I²C eine klassische RS232 
emuliert. Dadurch wurde die Übertragung der Datei in den I²C-Puffer so 
langsam, dass die Daten rechtzeitig abgearbeitet werden konnten. Keine 
schöne Lösung, aber es funktioniert erstmal.

Jörg

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.