Forum: Mikrocontroller und Digitale Elektronik USB Datenratenwiederspruch im Wikipedia Artikel


von Stephan (Gast)


Lesenswert?

http://www.fischl.de/usbasp/
Für dieses Projekt sind im USB-Low Speed Modus  5 K/Byte Sec.
vorgesehen. Aber wenn man einem Bericht aus dem wikipedia glaubt,
dann kann dieses Projekt garniocht funktionieren.



Im folgendem Artikel steht ,das im USB Lowspeed -Modus Datenraten von
800 Bytes pro sekunde möglich sind und im Low-speed Modus nur Interrupt
Transfers erlaubt sind. Das wiederspricht sich aber mit einigen FTDI
Controllern die ja Datenraten von ca. 1 MBit/s erlauben, bzw. es
möglich ist wiet über die 800 bytes/s zu übertragen. Diese arbeiten ja
auch im Low-speed modus.


http://de.wikipedia.org/wiki/USB

Interrupt-Transfer
Interrupt-Transfers dienen zur Übertragung von kleinen Datenmengen, die
zu nicht genau bestimmbaren Zeitpunkten verfügbar sind. Im Endpoint
Descriptor teilt das Gerät mit, in welchen maximalen Zeitabständen es
nach neuen Daten gefragt werden möchte. Das kleinstmögliche
Abfrageintervall beträgt bei Low-Speed 10 ms, bei Full-Speed 1 ms und
bei High-Speed bis zu 3 Abfragen in 125 µs. Bei Low-Speed können pro
Abfrage bis zu 8 Byte, bei Full-Speed bis zu 64 Byte und bei High-Speed
bis zu 1024 Byte übertragen werden. Daraus ergeben sich maximale
Datenraten von 800 Byte/s bei Low-Speed, 64 kByte/s bei Full-Speed und
bis zu 24 MByte/s bei High-Speed. Die Daten sind mit einer Prüfnummer
(CRC16) gesichert und werden bei Übertragungsfehlern bis zu 3 mal durch
die Hardware wiederholt. Die HID Klasse (Human Interface Device zu der
Geräte wie die Tastatur, Maus und der Joystick gehören, übertragen die
Daten über den Interrupt Transfer.

von Stefan Kleinwort (Gast)


Lesenswert?

ftdi-Chips arbeiten im Full-Speed-Modus.

Wie im Low-Speed-Modus 5kbyte gehen sollen, ist mir schleierhaft,
vielleicht steht ja was in der Doku des Projekts. Ev. sind ja auch nur
5kbit gemeint (Schreibfehler?). Oder: der Programmer programmiert zwar
mit 5kbyte, braucht aber zusätzlich noch die Zeit für den Download?

Insgesamt finde ich es nicht ganz so gelungen, ausgerechnet bei einem
Programmer ein paar € zu sparen, um sich dann die nächsten paar Jahre
über das langsame Programmieren zu ärgern.

Viele Grüße, Stefan

von Rufus T. Firefly (Gast)


Lesenswert?

Wenn ich mir den USB-Seriell-Adapter von Igor* ansehe, dann bleibt der
Widerspruch bestehen:
Das Teil bietet serielle Baudraten von eindeutig über 9600 Baud an -
womit die Datenübertragungsrate jenseits der genannten 900 Byte/sec
liegt. Und der USB-Stack von Igor dürfte sich so grandios nicht vom
USB-Stack von Objective Development unterscheiden (den T. Fischl
verwendet).

Irrt hier möglicherweise doch der Wikipedia-Eintrag? Oder verwendet
Igor doch Fullspeed (12MBit/sec)?


*)
http://cesko.euro-science.net/IgorPlugUSB_RS232/IgorPlug-USB%20(AVR)%20RS232_eng.htm

von René König (Gast)


Lesenswert?

> Irrt hier möglicherweise doch der Wikipedia-Eintrag?

Nein! Spezifikation 5.7.4:
"Low-speed endpoints are limited to specifying only 10 ms to 255
ms."

Daß Interrupt-Transfers für low-speed die einzig möglichen
Transaktionen sind, steht ja wohl außer Frage, ebenso die maximal
möglichen 8 Bytes pro Transfer (5.7.3: "Low-speed devices are limited
to eight bytes or less maximum data payload size"). Damit kommst Du
auf maximal 800 Bytes pro Sekunde.

Igor hat aber große FIFOs. Und seine praktischen Erfahrungen zeigen,
daß das ohne weiteres ausreicht. Er geht halt davon aus, daß ein
Datenpaket auch mal sein Ende erreicht ("800byte FIFO inside ATmega8
may be enough for everybody").

Für mich ist jedenfalls "Practical experiences" != "Garantiertes
Funktionieren".

von Stephan (Gast)


Lesenswert?

Ich verstehe nicht ,was das dann soll ,das im Lowspeed eine Taktrate von
etwa einem Mhz vorhanden ist und dennoch laut spezifikation diese enorme
begrenzung auf lächerliche 800 bytes /sek. Da wird ja nur ca. 1 % der
Busbandbreite genutzt. Irgendwo ist da doch der Haken. Denn wenn es
wirklich stimmt, das nicht mehr als 800 bytes/s drinn sind, dann
verstehe ich nicht warum man dann nicht Taktraten ala RS232 genommen
hat. Was hat eine Beschränkung von 8 Bytes pro block denn für einen
Sinn? Irgendetwas muß sich der Busentwickler ja dabei gedacht haben.
Aber wenn ich einen Bus entwerfe ,dann gehe ich bestimmt nicht hin und
setze die Bustaktrate auf das Hundertfache der Später möglichen
Übertragungsrate. Das ist ja das selbe als würde ich für eine
Radioübertragung ein ganzes Band von 100 MHZ reservieren ,mal
übertrieben.

 Wenn das mit dem USB AVR wirklich funktionieren sollte ,dann währe es
doch eine ziemlich gute alternative zu den teuren FTDI Chips.
Wenn dann wirklich nicht mehr als 800 bytes /sek drinnen sind ,dann ist
das natürlich unbrauchbar. Mit einem AVR lassen sich Taktraten von 1 MHZ
gut auswerten. Für High Speed wühren mind 10 MHZ erforderlich ,was mit
einem AVR nicht mehr zu bewältigen währe.
Aber wie schafft ein FTDI diesen Datenstrom obwohl er nur mit 6MHZ
getaktet ist? Damnach arbeitet jeder FTDI im High -Speed Modus?
Dann müßte ja im FTDI intern die Frequenz um etwa den Faktor 2
verdoppelt werden um den Ausgangstakt zu erzeugen. Aber warum hat man
dann nicht gleich einen 12 MHZ Quarz genommen? Also entweder haben die
Entwickler mal wieder auf dem Kloo gepennt oder ich habe in irgend
einem Punkt einen Denkfehler.

Wenn mir jemand für dies "Phänomäne" eine logische erklärung gibt bin
ich sehr dankbar

von Frank (Gast)


Lesenswert?

http://www.hausarbeiten.de/faecher/vorschau/32918.html
.....Die Datenrate einer Low-Speed-Verbindung liegt bei 1,5Mb/s,

Viele reden von Datenraten von 1,5 Mb/s im low Speed modus. Auf der
einen Seite sind aber bei einem Intervall von 10 ms bei 8 Byte nur 800
byte/sek möglich. Wer hat denn jetzt recht? Mich würde das auch mal
interessieren ob es jetzt nun 1,5 Mbit ,800 Bytes oder irgendetwas
dazwichen sind.
 Wenn jemand das hier experimentell ausprobiert hat,  solle er doch
bitte hier mal Klarheit schaffen. Wenn sich sogar in der USB
Spezifikation wiedersprüche ergeben ,(selbst dort stand am anfang
definitiv 1,5 MBit Datenrate) dann sollte  jeder der  Entwicklungen im
USB Bereich vorhat, es lieber sein lassen. Es gibt nichts schlimmeres ,
ein Protokoll zu implementieren was nicht eindeutig definiert ist. Und
eine Datenrate ist sehr wichtiger Parameter für die Wahl eines
Bussystems. Kann man diese nicht eindeutig vorher festlegen so kann das
böse überraschunge bei einer Produktentwicklung geben.

von Frank (Gast)


Lesenswert?

Also doch mehr als 800 bytes/sekunde?

http://www.hardware-bastelkiste.de/usb.html


"Low Speed" - 10-100kBit/s (z.B. Keyboard, Mouse, Joystick),
"Medium Speed" - 0,5-10MBit/s (z.B. ISDN, Audio, komprimiertes Video)
und
"High Speed" - 25-500MBit/s (z.B. Video, Disk).
Low Speed und Medium Speed (USB-1) werden in der USB-2-Spezifikation
auch als "Basic Speed" zusammengefasst behandelt.

Es werden zwei verschiedene USB-Kabel-Typen eingesetzt:

"Low Speed" - bis 1,5MBit/s (0,1875MByte/s), nicht verdrillt, nicht
abgeschirmt, max. Länge 3m
"Full Speed" und "High Speed" - bis 12MBit/s (1,5MByte/s) bzw.
480MBit/s (60MByte/s), Datenleitung verdrillt (Impedanz 90Ohm),
gesamtes Kabel abgeschirmt, max. Länge 5m

von René König (Gast)


Lesenswert?

Die Daten werden natürlich mit 1,5 Mb übertragen. Und trotzdem bekommt
Ihr nur 8 Byte alle 10 ms an Nutzdaten unter, trotzdem ist da überhaupt
gar nichts widersprüchlich.

Bedenkt bitte mal, was USB im Gegensatz zu RS232 noch bietet. So könnt
Ihr z.B. mehrere Geräte anstöpseln, und die wollen auch mal durchkommen
können. Auch erbt Ihr Datensicherheit und Energieverwaltung. Die Folge
ist ein gewisser Protokol-Overhead (für 8 Byte Nutzdaten werden 25 Byte
real übertragen).

Wer mehr braucht, kann doch auf Full-Speed setzen. Damit könnt Ihr bis
zu 64 Byte pro ms übertragen.

Die FTDI sind Full-Speed Geräte. Die arbeiten intern mit Sicherheit auf
48 MHz.


> Für High Speed wühren mind 10 MHZ erforderlich

Ich glaube kaum, daß das reicht, mit 480 Mbit zu übertragen ...

von René König (Gast)


Lesenswert?

Ach ja: Für Full-Speed und High-Speed Devices gibt es natürlich noch
andere Transfer-Arten als Interrupt ...

> Low Speed und Medium Speed (USB-1) werden in der USB-2-Spezifikation
> auch als "Basic Speed" zusammengefasst behandelt.

Medium Speed?

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.