Hallo Gemeinde! Ich wollte zwar nicht direkt mit der Tür ins Haus fallen, der richtige Account kommt noch, aber es eilt mir ein wenig ;) Ich habe folgende Problematik: An einem LPC2214 habe ich einen VNC1L USB-Host per parallelem Businterface und ein wenig Logik (HCT139) an den externen Speicherbus angeschlossen. RXF# und TXE# gehen direkt an Portpins des Contollers. Jedoch kämpfe ich seit Tagen vergeblich mit dem Programmiermodell des VNC1L (VDAP Firmware). Die Statusreports (device connected) habe ich durch den Firmware-Customizer deaktiviert, damit der Controller selbst nicht unvorhergesehen "dazwischenquatscht". Es geht schon damit los, das der USB-Controller recht eigenwillig auf Kommandos reagiert. Selbst wenn TXE# aktiv ist, und damit eigentlich Signalisiert, das neue Daten/Kommandos angenommen werden könnten, gibt es Teils recht unwirsche Reaktionen, wenn ich das dann auch versuche. Mit einigen Zeitschleifen geht es meistens. Zumindestens für die Initialisierung und für Query-Device, das ich inkrementell pro adressierbarem Device alle zig hundert Millisekunden absetze um meine eigene Device-List up to date zu halten. Jedoch zeigt schon Query-Device, das der USB-Host ziemlich unberechenbar reagiert, wenn man ihm kurz nach anstecken des Geräts trotz aktivem TXE#-Signal und inaktivem RXF# Signal mit diesem Befehl "in die quere" kommt. Manchmal fängt er sich dann wieder und nach einem Flush (solange lesen bis RXF# inaktiv) und einem Sync ( 'e' senden dann auf 'e' als Antwort warten) ist alles wieder in bester Ordnung. Aber eben eher meistens nicht. Befehle wie DRD führen meist zum Exitus oder werfen wild mit Daten um sich, die sie vorher selbst garnicht angekündigt haben. Wenn das Zieldevice auchnoch hinter einem Hub liegt, ist DSD und DRD allen Anscheins nach völlig machtlos und ich erhalte garkeine Daten. - Gehe ich irgendwie völlig falsch vor, wenn ich so wie derzeit, ein Modell verwende bei dem ich einen Befehl sende, wenn der Chip behauptet bereit zu sein und anschließend eine Antwort erwarte? Wie müsste ich programmiertechnisch an den IC herangehen um zuverlässige Resultate zu erhalten? Hat evtl. auch jemand Beispiel-Code in C oder gut kommentiertem Assembler? (die Zielarchitektur wäre mir ziemlich egal) Welchen Zweck verfolgen die FIFO-Steuerleitungen, wenn man anhand derer nicht tatsächlich feststellen kann, ob es nun genehm ist das man schreibt oder liest? - In FTDI's Beispielcode fragt man den Chip alle hundert Millisekunden an, ob es irgendwelche Nachrichten gibt. Jedoch bin ich kaum gewillt, nur alle Ewigkeiten einmal einen Befehl absetzen zu können. Das drückt die Performance dann doch gar zu weit in den Keller und fernab dessen was ich gerne erreichen würde. Ich wäre wirklich um jeden Hinweis dankbar. Viele Grüße! Matthias
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.