Hallo zusammen. Ich habe folgendes Problem. Ich sende Daten vom PC an ein FPGA welcher darauf antwortet. Beim betrachten der Signale ist aufgefallen, dass der PC nach jedem Frame ca. 100ms auf Antwort wartet, obwohl die Antwortzeit < 1ms ist. Also versuchten wir in einem Python Skript den timeout der Seriellen Schnittstelle auf 10ms zu setzen. Dann kommt der PC allerdings nicht mehr ganz mit. Kann es sein, dass das Empfangsreister des PC nur alle 100ms abgefragt wird? Bracuht er also diese Pause, oder sollte er durchaus schneller können? Danke Sim
Wie wäre es mit einem (HW-)Handshake? Nutzt ihr eine "echte" RS232 oder einen USB-Wandler.
Wie groß sind die Frames? Ist die "echte" RS232-Schnittstelle eine der Onboard-Schnittstellen des PCs oder ist sie mit einer PCI/PCIe-Karte nachgerüstet? Wie ist der Triggerlevel des Empfangs-FIFOs der Schnittstelle konfiguriert?
Es handelt sich um die onboard Schnittstelle. Es gibt keine Datenflusssteuerung in diesem Sinn. Es wird über einen RS232/RS485 Pegelwandler auf eine Buspysik gesendet. Die Busarbitrierung wird anhand der Inhalte des Frames gemacht. Aber die Frage war ja eigentlich auch nur, ob man beim PC eine min. Timeout Zeit einhalten muss. Gruß Sim
Rufus Τ. Firefly schrieb: > Wie groß sind die Frames? Unterschiedlich. In der Testphase ca. 30Byte. Später vielleicht 500Byte.
Gut, bei der Framegröße wird das Hardwareempfangsfifo nicht mehr störend zum Tragen kommen. Das von Dir beobachtete Timeoutverhalten wird daher am Programm auf dem PC liegen. Was läuft darauf ein Betriebssystem und was für ein Programm ist das?
Ein selbst geschriebenses Skript welches Daten produziert, es läuft auf einem Win2000 Server System. Gruß Sim
Na, dann ist es ja nicht vollkommen auszuschließen, daß das Problem im Skript liegt.
Hallo, das Problem ist vermutlich, dass der Empfang erst am Ende des Timeouts stattfindet (vom Standpunkt des Skripts aus). Die serielle Software muss ja wissen, wann ein Frame zu Ende ist, und das ist u.U. eben nach Ablauf des Timeouts. Wenn die Frames durch ein bestimmtes Zeichen wie CR oder EOT beendet würden, bestünde dieses Problem nicht, dann würde der Frame unmittelbar nach Empfang dieses Zeichens übergeben. Timeout als Frame Delimiter ist nie eine gute Idee. Gruss Reinhard
Leider brauche ich einen Timeout, da es sich um eine Buskommunikation handelt und ich mit dem FPGA einen einzelnen Host darstelle. D. h. es kommt nicht auf jedes Frame eine Antwort, sondern nur wenn dieses für das FPGA relevant ist. Gruß Sim
sim schrieb: > Leider brauche ich einen Timeout, da es sich um eine Buskommunikation > handelt und ich mit dem FPGA einen einzelnen Host darstelle. D. h. es > kommt nicht auf jedes Frame eine Antwort, sondern nur wenn dieses für > das FPGA relevant ist. > > Gruß Sim Klar, das brauchst du immer, nur hat das mit dem von mir angesprochenen Problem garnichts zu tun, da ging es um die (möglichst schnelle) Frame-Ende-Erkennung. Aber wenn du dir den zeitlichen Ablauf nicht vorstellen kannst, vergiss es einfach. Gruss Reinhard
Reinhard Kern schrieb: > Aber wenn du dir den zeitlichen Ablauf nicht > vorstellen kannst, vergiss es einfach. Danke! Sehr freundlich!
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.