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
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?
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.
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.
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
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.
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?
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?
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.
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.
Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
Groß- und Kleinschreibung verwenden
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang