Forum: Mikrocontroller und Digitale Elektronik USB-Seriall-Wandler elendig langsam


von enrico (Gast)


Lesenswert?

Hey,

da ich an meinem Rechner keinen freien seriellen Port habe, habe ich mir 
einen USB/Seriell-Wandler gekauft. Das Teil wird auch richtig erkannt, 
solange man nicht das mitgelieferte Kabel benutut ;) und dann habe ich 
die "Schnittstelle" /dev/ttyUSB0 (ja, unter linux) zur Verfügung.

Zum programmieren habe ich bis jetzt immer sone vereinfachte 
siprog-Variante benutzt, die ich jetzt an den Wandler angeschlossen 
habe.
Wenn ich dann aber avrdude anschmeiße, um etwa fuses auszulesen wird das 
zwar gemacht, aber sooo elendig lahm, dass alleine die fuse-Bits 5 sec. 
brauchen. Beim Flash schreiben habe ich nach nen paar minuten 
aufgegeben.

Hat jemand ne Idee wie man das ganze ein biiiiischen beschleunigen kann? 
Baudrate hoch setzen hat iwie nichts sichtbare an "performance" 
geliefert.

Vielen Dank, Enrico

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Um was fuer einen Wandler handelt es sich denn? Vielleicht ist avrdude 
nicht darauf "vorbereitet" und sendet die Daten unguenstig (byteweise) 
an die Schnittstelle wodurch auf einem USB-Bus ein sehr hoher overhead 
entsteht. Mach mal ein "tail -f /var/log/messages" und steck das Teil 
mal ein. Stell die Messages hier mal ein?

von C. H. (_ch_)


Lesenswert?

Bist du sicher, dass es wirklich am USB-RS232-Wandler liegt oder könnte 
das auch der Programmieradapter sein?

Ich verwende am Notebook (ja, unter linux) ausschließlich solche Wandler 
(usb 2.0 von digitus). Hatte bisher noch keinerlei solcher 
Performance-probleme.

Gruß
Christian

von Christian R. (supachris)


Lesenswert?

Das ist normal. Der Programmieradapter ist bestimmt der einfachste mit 
den 2 Dioden und paar Widerständen. Da hilft nur ein richtiger ISP 
Programmer mit "Intelligenz" also der originale AVR ISP oder ein Nachbau 
auf Basis der AN910.

von Andreas K. (a-k)


Lesenswert?

Wenn der Rechner noch eine echte serielle Schnittstelle hat, dann häng 
den Programmer da dran und das andere Gerät an die USB-Serielle.

USB-Serials sind ganz nett um Datenströme zu übertragen, aber pinwackeln 
ist schnarchlangsam.

von Johann (Gast)


Lesenswert?

ISP via RS232 macht ein Port-Bangig, d.h. wackelt "von Hand" an den Bits 
des RS232, um das SPI-Signal zu basteln.

Jenachdem, wie gut sowas vom der USB-RS232 Hardware bzw dem Treiber 
unterstützt wird, braucht das eben Zeit, weil für jede Flanke zwei 
Pakete gesendet werden müssen. Es ist also nicht möglich, ein ganzes 
Byte oder sogar mehrer Bytes per BULK zu übertragen, wie bei einer 
Standard-RS232 Kommunikation.

Ich habe mit USB->RS232 ähnliche Erfahrungen gemacht. Serielle 
Standard-Kommunikation war einigermassen ok, aber für ISP absolut 
unbrauchbar.

Ich hab den Adapter denn wieder zrückgeschickt, Hatte den vom Reichelt 
und da geht das anstandslos.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Christian R. wrote:
> Das ist normal. Der Programmieradapter ist bestimmt der einfachste mit
> den 2 Dioden und paar Widerständen. Da hilft nur ein richtiger ISP
> Programmer mit "Intelligenz" also der originale AVR ISP oder ein Nachbau
> auf Basis der AN910.

Käse.

Mit nem Billig-Adapter dauert das Lesen/Setzen der Fuses 
Sekundenbruchteile.

Und die Übertragungsrate in Bits/(s*€) wird von einem "professionellen" 
nicht überboten ;-)

von Εrnst B. (ernst)


Lesenswert?

Johann L. wrote:
> Käse.
>
> Mit nem Billig-Adapter dauert das Lesen/Setzen der Fuses
> Sekundenbruchteile.

Nicht richtig mitgelesen, oder?

Mit dem Billig-Adapter geht das Programmieren genau so schnell wie der 
Serielle Port mit seinen Pins wackeln kann. Das ist bei einem "echten" 
Port "schnell", und bei einem USB->RS232 Wandler "Schnarchlangsam".

Ein Programmierer mit Eigenintelligenz ist hingegen nur von der Baudrate 
abhängig, und die ist bei "echtem"- und USB-Seriellport gleich.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Ernst Bachmann wrote:
> Johann L. wrote:
>> Käse.
>>
>> Mit nem Billig-Adapter dauert das Lesen/Setzen der Fuses
>> Sekundenbruchteile.
>
> Nicht richtig mitgelesen, oder?
>
> Mit dem Billig-Adapter geht das Programmieren genau so schnell wie der
> Serielle Port mit seinen Pins wackeln kann.

Ich habe nichts anderes behauptet. Präziser wäre "mit Billig-Adapter 
ohne zwischengeschalteten USB-Seriell-Converter" gewesen.
Und genau deshalb ist die Verzögerung nicht dem Billig-Adapter 
anzulasten.

> Ein Programmierer mit Eigenintelligenz ist hingegen nur von der Baudrate
> abhängig, und die ist bei "echtem"- und USB-Seriellport gleich.

Die Verzögerung beim Setzen/Rücksetzen von Handshake-Leitungen 
unterliegt nicht den Baudrate-Einstellungen.

von Εrnst B. (ernst)


Lesenswert?

Johann L. wrote:

>> Mit dem Billig-Adapter geht das Programmieren genau so schnell wie der
>> Serielle Port mit seinen Pins wackeln kann.
>
> Ich habe nichts anderes behauptet. Präziser wäre "mit Billig-Adapter
> ohne zwischengeschalteten USB-Seriell-Converter" gewesen.
> Und genau deshalb ist die Verzögerung nicht dem Billig-Adapter
> anzulasten.

Hat das jemand getan? Nein. Christian hat nur darauf hingewiesen, dass 
eben die Kombination "USB-Seriell + Billigadapter" Probleme macht.

>> Ein Programmierer mit Eigenintelligenz ist hingegen nur von der Baudrate
>> abhängig, und die ist bei "echtem"- und USB-Seriellport gleich.
>
> Die Verzögerung beim Setzen/Rücksetzen von Handshake-Leitungen
> unterliegt nicht den Baudrate-Einstellungen.

Das hat auch niemand behauptet. Diese Programmer (z.B. STK500 + 
Kompatible) benutzen die Hanshake-Leitungen garnicht, insofern sind die 
Verzögerungen dort komplett irrelevant.

So, jetzt hol ich mir erstmal einen Kaffee, bevor ich nochmehr unnötige 
Streitereien vom Zaun breche... Hatte/hab nen stressigen Tag, Sorry 
@all.
/Ernst

von Jürgen S. (starblue) Benutzerseite


Lesenswert?

Hallo Enrico,

war bei mir ähnlich, 8Byte/s mit seriell-USB-Adapter und Pollin-Board,
mit avrdude oder uisp unter Linux.

Ich habe mir dann einen USBProg gekauft.
Wenn's geht dann geht es schnell, aber manchmal hakt die 
USB-Datenübertragung.

Jürgen

von enrico (Gast)


Lesenswert?

Ok, danke für die Antworten :)

Werde den Wandler jetzt nur für normale serielle Übertragung nutzen und 
zum programmieren den echten Ports nehmen ;) So scheints auf jeden Fall 
besser zu funktionieren... :D

von Teplotaxl X. (t3plot4x1)


Lesenswert?

Jürgen Stuber wrote:
> Hallo Enrico,
>
> war bei mir ähnlich, 8Byte/s mit seriell-USB-Adapter und Pollin-Board,
> mit avrdude oder uisp unter Linux.
>
> Ich habe mir dann einen USBProg gekauft.
> Wenn's geht dann geht es schnell, aber manchmal hakt die
> USB-Datenübertragung.
>
> Jürgen

Sieht das bei dir dann so aus?

Reading | ################################################## | 100% 
0.25s

avrdude: verifying ...
avrdude: 526 bytes of flash verified

avrdude: stk500v2_recv_mk2: error in USB receive
avrdude: stk500v2_cmd(): short reply, len = 0
avrdude: safemode: Verify error - unable to read lfuse properly. 
Programmer may not be reliable.
avrdude: safemode: Fuses OK

avrdude done.  Thank you.


Tritt bei mir nur bei manchen Hexfiles auf...

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.