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.
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
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
> 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".
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
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.
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
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 ...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.