Forum: Mikrocontroller und Digitale Elektronik double bank bei USB


von Sina A. (sinapse)


Lesenswert?

Hallo,

beim atmega32u4 steht im datenblatt zum USB

• Bits 3:2 - EPBK1:0 - Endpoint Bank Bits
Set this field according to the endpoint size:
00b: One bank
01b: Double bank

aber nirgends was das genau macht. was ist one bzw. double bank und wann 
brauch ich welche einstellung?

danke schonmal im voraus

von c-hater (Gast)


Lesenswert?

Sina A. schrieb:
> Hallo,
>
> beim atmega32u4 steht im datenblatt zum USB
>
> • Bits 3:2 - EPBK1:0 - Endpoint Bank Bits
> Set this field according to the endpoint size:
> 00b: One bank
> 01b: Double bank
>
> aber nirgends was das genau macht.

Das ist eine glatte Lüge. Das steht im gleichen Datenblatt. Wie nicht 
anders zu erwarten bei der Funktinsbeschreibung des USB-Controllers...

Willst du das vorgelesen bekommen oder liest du es doch besser selbst?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

c-hater schrieb:
> Das ist eine glatte Lüge.

Das kann man auch anders formulieren.

Du hättest a) sagen können, daß das im Datenblatt ab Seite xy 
beschrieben wird, Du hättest b) fragen können, welcher Teil der 
Beschreibung ab Seite xy nicht verstanden wird --- aber dazu hättest Du 
natürlich Umgangsformen entwickeln müssen, was Du zu scheuen scheinst 
wie der Teufel das Weihwasser. Du willst ja auch nicht anderen Leuten 
bei irgendwas helfen.

Wenn Du nur herumpöbeln willst, musst Du das nicht hier im Forum machen.

von c-hater (Gast)


Lesenswert?

Rufus Τ. F. schrieb:

> Das kann man auch anders formulieren.

Das hätte ich getan, wenn die grenzenlose Faulheit des TO einem nicht so 
derart in's Gesicht gesprungen wäre...

> Du hättest a) sagen können, daß das im Datenblatt ab Seite xy
> beschrieben wird

Das hätte jeder halbwegs fleißige TO locker selber ermitteln können, 
aber ich habe mich immerhin noch herabgelassen, explizit darauf 
hinzuweisen, dass diese Information im gleichen DB verfügbar ist...

> Du hättest b) fragen können, welcher Teil der
> Beschreibung ab Seite xy nicht verstanden wird

Bei einer gezielten Frage nach dem Detail hätte ich das sicher auch 
getan. Nur kam die halt nicht, weil TO offensichtlich grenzenlos faul.

> Wenn Du nur herumpöbeln willst, musst Du das nicht hier im Forum machen.

Es ist mein verfassungsmässig verbrieftes Recht, meine Meinung frei 
äußern zu können. Von Blockwarten wie dir werde ich mir das nicht nehmen 
lassen.

Im Übrigen: dein Posting hilft dem TO nun wirklich exakt garnicht. Es 
enthält nämlich nicht eine Silbe zum Thema. Das unterscheidet es doch 
immerhin sehr deutlich von meinem!

Wenn du also nur herumpöbeln willst, das kauf dir 'ne Kladde und trage 
deine Blockwart-Beobachtungen fein säuberlich dort ein.

von Michael U. (amiga)


Lesenswert?

Hallo,

c-hater schrieb:
> Das hätte jeder halbwegs fleißige TO locker selber ermitteln können,
> aber ich habe mich immerhin noch herabgelassen, explizit darauf
> hinzuweisen, dass diese Information im gleichen DB verfügbar ist...

Vorschlag von mir: laß Dich nicht herab, bleib auf Deinem hohen Roß bis 
Du es gelernt hast, Dich zu benehmen.
Du würdest dem Forum damit einem großen Gefallen tun, da bin ich mir 
sicher.
Deine wenigen Postings, die inhaltlich durchaus von Sachkenntnis zeugen, 
wiegen den Rotz, den Du sonst abläßt, bei weiten nicht auf.

Das ist MEINE freie Meinungsäßerung dazu!

Gruß aus berlin
Michael

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

c-hater schrieb:
> Es ist mein verfassungsmässig verbrieftes Recht, meine Meinung frei
> äußern zu können. Von Blockwarten wie dir werde ich mir das nicht nehmen
> lassen.

Du darfst das, was Du für Deine Meinung hältst, jederzeit frei äußern.

Nur nicht überall.

Wenn Du die Forenmoderatoren als "Blockwarte" bezeichnen willst, wäre es 
allerdings wirklich besser, Du würdest Dir irgendein komplett anderes 
Betätigungsfeld suchen, als dieses Forum.

von Sina A. (sinapse)


Lesenswert?

hier ist ja wieder was los...

----------------------------------------------------------------
ok: im datenblatt steht

832 bytes of DPRAM:
– 1 endpoint 64 bytes max. (default control endpoint)
– 1 endpoints of 256 bytes max., (one or two banks)
– 5 endpoints of 64 bytes max., (one or two banks)

wie kommen die hier auf 832 bytes? bei mir kommen

64+256+5*64=640bytes

raus. Oder verdoppelt sich das bei two banks? also

64+2*256+2*5*64=1216bytes

dann ist das zu viel... Oder kann ich eben die endpoints beliebig 
definieren, dürfen halt nicht 832 übersteigen? also z.b.

64+2*256+2*2*64=832bytes

hier also

- ein control endpoint
- ein grosser endpoint von 512bytes
-> dann kann ich nur noch zwei kleinere endpoints mit 128bytes 
definieren?

----------------------------------------------------------------

wenn ich EPSIZE=011b setze, definiere ich einen endpoint mit 64bytes.
wenn ich dazu EPBK=01b setze, definiere ich den endpoint als double 
bank.

-> habe ich jetzt einen speicher von 2*64=128bytes definiert?
oder wird der speicher als double bank betrieben... habe ich somit 
immernoch 64bytes der aus jeweils zwei 32byte banks besteht?

von Sina A. (sinapse)


Lesenswert?

Hallo,

beim atmega32u4 steht im datenblatt zum USB

832 bytes of DPRAM:
– 1 endpoint 64 bytes max. (default control endpoint)
– 1 endpoints of 256 bytes max., (one or two banks)
– 5 endpoints of 64 bytes max., (one or two banks)

wie kommen die hier auf 832 bytes? bei mir kommen

64+256+5*64=640bytes

raus. Oder verdoppelt sich das bei two banks? also

64+2*256+2*5*64=1216bytes

dann ist das zu viel... Oder kann ich eben die endpoints beliebig
definieren, dürfen halt nicht 832 übersteigen? also z.b.

64+2*256+2*2*64=832bytes

hier also

- ein control endpoint
- ein grosser endpoint von 512bytes
-> dann kann ich nur noch zwei kleinere endpoints mit 128bytes
definieren?

----------------------------------------------------------------

wenn ich EPSIZE=011b setze, definiere ich einen endpoint mit 64bytes.
wenn ich dazu EPBK=01b setze, definiere ich den endpoint als double
bank.

-> habe ich jetzt einen speicher von 2*64=128bytes definiert?
oder wird der speicher als double bank betrieben... habe ich somit
immernoch 64bytes der aus jeweils zwei 32byte banks besteht?

von Jim M. (turboj)


Lesenswert?

Sina A. schrieb:
> wie kommen die hier auf 832 bytes?

Das ist das Hardware Limit.

Man kann also nicht alle Endpoints in voller Länge doppelt puffern. In 
etlichen Anwendungen (z.B. HID) braucht man keinen doppelten Puffer.

Die Verdoppelung braucht man eigentlich nur, wenn man schnelle Bulk 
Endpoints haben will.

Denn es darf auf einen Puffer entweder der µC Core oder der USB 
(Host/PC) zugreifen. Wenn der µC den (einzelnen) Puffer in den 
Pausenzeiten füllt (oder leert), hat man eine deutliche Reduktion der 
Bandbreite.

von W.S. (Gast)


Lesenswert?

Sina A. schrieb:
> Set this field according to the endpoint size:
> 00b: One bank
> 01b: Double bank
>
> aber nirgends was das genau macht. was ist one bzw. double bank und wann
> brauch ich welche einstellung?

Ob und was du an Einstellungen brauchst, kannst nur du selber anhand 
deines Vorhabens festlegen.

Also: auf dem USB geht es paketeweise zu. Das weißt du. Aber in der 
echten Peripherie geht es seltener paketeweise zu: beim virtuellen 
seriellen Port kommen und gehen die Bytes völlig asynchron und 
unvorhersehbar und bei sowas wie Audiodaten kommen und gehen die Bytes 
zwar vorhersehbar und möglichst auch wirklich zu festgelegten Zeiten, 
aber nicht auf einen Ruck, sondern schön gleichmäßig über die Teit 
verteilt.

Deshalb ist es in manchen Fällen besser, die Daten vom/zum USB separat 
zwischenzuspeichern, um sie in aller Ruhe einzusammeln/auszugeben und in 
anderen Fällen ist es besser, zwei Transferpuffer zu haben, um die Daten 
direkt in denjenigen Puffer einzustapeln/herauszupröpeln, den der USB 
nicht grad im Zugriff hat. Ist auch ne Zeit- und RAM-Frage.

Natürlich muß die SIE dazu wissen, welchen Puffer sie jeweils gerade als 
verwendbar für USB anzusehen hat und welchen der 2 Puffer eben nicht. 
Das macht etwas mehr an Verwaltungsaufwand als nur 1 Puffer.

So ist das im groben gesagt.

W.S.

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.