Forum: Mikrocontroller und Digitale Elektronik USB->RS232 langsam beim Flashen


von Felix Linsenmeier (Gast)


Lesenswert?

Hallo!

Ich habe folgendes Problem: Ich möchte den AT89S8252
(Elektor-Flashboard) programmieren, unter Windows 95 geht es recht
zügig, unter Win-XP dauert es ewig bis der Code übertragen ist.

Unter Win95 bin ich direkt an com2, unter WinXP habe ich einen
USB->RS232 Adapter. Einstellungen habe ich beide identisch.

zur Übertragung habe ich TASM und ATMELISP verwendet.

Wenn jemand das gleiche Problem hatte (und gelöst bekam) oder einen Tip
zur Beschleunigung der Übertragung hat wäre ich dankbar.

mfg Felix

von Steffen (Gast)


Lesenswert?

Da gibt es nur ein Lösung.

Protokoll anpassen ansonsten hilft nur echte COM-Schnittstelle
installieren oder Teil in die Tonne.

Das Problem liegt daran, das über USB maximal jede ms (wenn nur ein
Gerät angeschlossen ist) 64 Byte übertragen werden können. Ist das
Protokoll an diese Länge angepasst, dann bemerkt man kaum einen
Unterschied. Werden vom PC aber z.B. immer nur 5 Byte übertragen und
dann auf eine Rückmeldung gewartet, dann geht die Geschwindigkeit
natürlich enorm zurück. Die Schnittstelleneinstellungen sagen dem
PC/Wandler nur, wie er die Daten auf der RS232-Seite ausgeben soll,
nicht wie schnell der Datentransfer insgesammt ist.

Steffen

von Thorsten (Gast)


Lesenswert?

@Steffen

Nur mal eine Frage zum Verständnis: max. 64 Byte jede ms bedeutet also
64*8*1000=512000 Bit/s, oder ? Wie kommen dann z. B. die 14 MBit/s
zustande, die USB kann ?

Gruß
Thorsten

von Thomas Zepf (Gast)


Lesenswert?

@Steffen:
64 Byte / ms stimmt nicht. Das würde nur für Interupt Übertragung
stimmen. Das Problem ist der Timeout im FTDI von 16 ms.

@Thorsten
USB 1.1: 12MBit/s  ~1 MByte/s sind je nach HW zu erreichen
   oder 1.5MBits/s
USB 2.0: 480MBit/s zusätzlich

von Steffen (Gast)


Lesenswert?

Es sind genau 12 MBit pro Sekunde (USB 1.1). Es werden aber nicht nur
reine Datenbyte übertragen sondern es wird ein Protokoll verwendet, was
ja auch Platz benötigt. Die Daten werden in Paketen, sogenannten Frames
versendet. Bei der normalerweise bei solchen Wandlern verwendeten
Übertragungsart (alle zu erklären würde zu weit führen) enthält ein
Datenpaket 64 Byte. Diese 64 Byte + Protokoll werden jede ms vom
USB-Host (Rechner) gesendet bzw. vom USB-Endgerät geholt.

Wie oft jedes Endgerät angesprochen wird hängt unter anderem davon ab,
wieviele Geräte angeschlossen sind.

Noch zu sagen ist, dass der Datenverkehr nur Halbduplex abläuft.

Die Erklärung ist natürlich ganz stark vereinfacht.

MfG
Steffen

von Steffen (Gast)


Lesenswert?

@Thomas

Du hast Recht. Innerhalb eines Frames können mehrere Datenübertragungen
(max. 13 bei Control- und max. 19 bei Bulk Transfer) stattfinden. Ist
schon eine Weile her, wo ich mich mit den theorethischen Grundlagen
beschäftigt habe.

Steffen

von Felix Linsenmeier (Gast)


Lesenswert?

@Steffen

Danke für die Info, jetzt ist mir klar warum... aber:

>> Protokoll anpassen

wie und wo?

bzw. gibt es Programme mit denen ich das einstellen kann?

Gruß Felix

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.