Forum: Mikrocontroller und Digitale Elektronik AT91SAM7S128 und USB Problem.


von Manuel Sahm (Gast)


Lesenswert?

Hallo;

wie kann man das Bit TXPKTREADY wieder zurücksetzen ?

Das Problem ist folgendes; ich sende Daten zum Device[BULK], diese 
werden angenommen und verarbeitet; nun beginnt meine Firmware zu 
arbeiten. Die Daten liegen zum senden an den PC bereit und sind in den 
EP geschrieben worden, sowie das Flag TXPKTREADY wurde gesetzt. Beim 
nächsten IN token vom Host werden die Daten ach gesendet.

Falls aber nun kein IN Token vom Host kommt (möglicherweise, weil die 
USB Timeout zu Ende ist) sind die Daten im FIFO und das Bit TXPKTREADY 
ist gesetzt.


Nun schickt der Host eine neues Protokoll, was entgegengenommen wird, 
und direkt danach beginnt der HOST mit dem senden von IN Tokens, da er 
auf dieses Protokoll eine Antwort haben will...jetzt bekomme ich aber 
die alten Daten, die noch im FIFO stehen ?!?!?!?!?!?!?



Deshalb, wie kann ich das TXPKTREADY Bit resetten ????

von Feadi F. (feadi)


Lesenswert?

TXPKTRDY kann man nicht zurücksetzen.

Aus Deinem Text meine ich aber herlauszulesen dass Du versuchst einen 
Bulk-Endpoint bidirektional zu benutzen. Das ist nicht möglich. Nur 
Control-Endpoints sind bidirektional.

von SO ist es (Gast)


Lesenswert?

Hallo,


das Problem kenn ich. Soweit ich das jetzt noch in Erinnerung habe gibt 
es kein FIFO-Reset o.ä. . Da hilft dir nur ein sauberes Protokoll.


So ist es ...

von Manuel S. (ela1983)


Lesenswert?

Es gibt einen BULK endpoint für IN und einen separaten für OUT 
Transfers.....


Das Problem ist; ich kann keine IN Token detektieren, und somit weiß ich 
nie ob der Host welche sendet oder nicht...

Meine EP Fifo ist jedoch gefüllt und "scharf" gemacht (TXPKTREADY" ist 
gesetzt)...wenn ich jetzt eine neues Protokoll empfange (OUT transfer) 
will ich gerne den IN Endpoint resetten, da ansonsten die alten Daten 
beim nächsten IN Token zurückgesendet werden...

Was ist die Lösung ??

von Karl (Gast)


Lesenswert?

Die alten Daten empfangen und im Host verwerfen. Darum musst du dich 
aber selbst kümmern. Im Host z.B. solange Daten abfragen, bis nichts 
mehr zurückkommt.

von Sperrfeuer (Gast)


Lesenswert?

Hallo,

warum benutzt du nicht die 3 UARTs vom SAM ? Dann kannst du aus allen 
Rohren feuern bis deinem PC schwarz vor Augen wird.

von Feadi F. (feadi)


Lesenswert?

Probier mal ein Endpoint-Reset (Datenblatt Seite 472).

Ist vielleicht ein Isochronous-Endpoint besser für Dein Vorhaben 
geeignet?

von Sperrfeuer (Gast)


Lesenswert?

... It also resets the data toggle to DATA0.

Das ist immer sehr spannend beim SAM.

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.