www.mikrocontroller.net

Forum: PC Hard- und Software RS232 Timeout


Autor: sim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wäre es mit einem (HW-)Handshake? Nutzt ihr eine "echte" RS232 oder 
einen USB-Wandler.

Autor: Sim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eine echte RS232.

Gruß Sim

Autor: Mario K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
na was habt ihr denn nun rsr/cts oder xon/xoff
(Datenflusssteuerung )

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Sim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Sim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rufus Τ. Firefly schrieb:
> Wie groß sind die Frames?

Unterschiedlich. In der Testphase ca. 30Byte. Später vielleicht 500Byte.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: sim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein selbst geschriebenses Skript welches Daten produziert, es läuft auf 
einem Win2000 Server System.

Gruß Sim

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na, dann ist es ja nicht vollkommen auszuschließen, daß das Problem im 
Skript liegt.

Autor: Reinhard Kern (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: sim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Reinhard Kern (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Sim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Reinhard Kern schrieb:
> Aber wenn du dir den zeitlichen Ablauf nicht
> vorstellen kannst, vergiss es einfach.

Danke! Sehr freundlich!

Antwort schreiben

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

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.