Forum: Mikrocontroller und Digitale Elektronik Wie schnell ist USB des AT89C5131?


von toto (Gast)


Lesenswert?

Hallo

Ich habe gerade bei Reichelt den AT 89C5131-S3SIL ersichtet.
Dieser hat ein integriertes USB-module und ist der "2.0 Full Speed
Compliant".
So weit ich weiss müssten dann also die maximale Datenübertragung so um
die 480 Mbits/sec sein, also 60Mbytes/sec.
Schafft der das wirklich?

Ich kenne mich leider mit usb noch nicht sehr viel aus.
Deshalb noch folgenden Frage:

-Was ist denn die eigentliche Datenübertragungsrate also die reine
Datentransfermenge, wenn man die Synchronisationskommunication
(ack,etc..) nicht mitzählt?
-Ist USB seitens PC Echtzeitfähig?
 Damit meine ich auch wirklich harte Echtzeit auf Treiberniveau, wo
nichts anderes mehr lauft (auch kein anderer interrupt) und wo zum
Schwankungungen in der Datenübertragungsrate nicht tolerierbar sind.

Weiss jemand was davon?
MfG im voraus

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

Der CPU-Kern läuft mit maximal 24MHz im X2-Mode. Macht bei 6 Takten pro
Instruktion 4MIPS max. Würdest du jetzt bei jedem Takt ein Byte auf den
USB bekommen sinds also maximal 4MBit was die CPU auf den USB schaufeln
kann.

Im Datenblatt steht außerdem USB-Full-Speed was 12MBit entspricht.
480MBit sind dann High-Speed.

USB Full-Speed schafft erfahrungsgemäß etwa 1MByte/s realen
Datendurchsatz. Wo das theoretische Maximum liegt kann ich dir aber
auch nicht sagen.

Mit einem Isochronous Transfer wird dir AFAIK eine gewisse Bandbreite
auf dem Bus garantiert. Da aber schon das OS mit dem man USB
typischerweise benutzt (das aus Redmond) nicht Echtzeitfähig ist nützt
einem das prinzipiell nichts. Aber hier kommt es dann doch stark auf
den Einsatzzweck und die Anwendung an ob das Gesamtsystem als
Echtzeitsystem angesehen werden kann oder nicht.

Matthias

von toto (Gast)


Lesenswert?

Vielen Dank Matthias

Deine Erklärungen sind sehr aufschlussreich.
Die Sache hat sich mit dem zu geringen Datendurchsatz erledigt.
Übrigens arbeite ich unter Linux das zwar nicht  Echtzeitfähig ist,
aber man kann ja einen Treiber schreiben der den Computer monopolisiert
und so mit der Brechstange Echtzeitfähig macht.

Danke
Stephan

von Sascha (Gast)


Lesenswert?

"Übrigens arbeite ich unter Linux das zwar nicht  Echtzeitfähig ist,
aber man kann ja einen Treiber schreiben der den Computer
monopolisiert
und so mit der Brechstange Echtzeitfähig macht."

Linux erlaubt immerhin weiche Echtzeitprozesse.

Prozesse policy SCHED_RR oder SCHED_FIFO mit hoher statische Priorität
sind für die meisten "weichen" Echtzeitanwendungen völlig
ausreichend.
Sie werden vor normalen Prozessen immer bevorzugt.
Wenn du wirklich harte Echtzeit brauchst, dann nutze RTLinux.

von toto (Gast)


Lesenswert?

Echtzeit ist eigentlich ein ziemlich schwammiges Wort.
Echtzeit in 1 sec, 1 milisec oder 1 microsec Verzögerung kann
entsprechend nach Anforderung gedehnt werden.

Im Sachen RTLLinux gebe ich dir vollkommen recht.
Wobei die RTLinux Threads von der funktionsweise genauso in die module
richtung geht.
Ich schreibe lieber nur einen Treiber der die Sache löst als das ich
ein ganzes System installiere.

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.