mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Serielle Schnittstelle Interruptgeschwindigkeit


Autor: Rupplyn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

wie schnell kann ich denn Daten von der seriellen Schnittstelle mit dem 
PC abholen. Ich meine damit nicht etwa die Baudrate, sondern wie schnell 
mir z.B. die Serialport-Komponente in .Net einen Interrupt generiert.

Hintergrund ist foldender: Ich empfange einen Datenstring. Bei einem 
Event lese ich die Daten ein und prüfe ob ob der String komplett ist 
oder nicht. Ist der String komplett sende ich den nächsten Befehl an den 
Zielcontroller. Dabei habe ich festgestellt, dass je nachdem wie lang 
der Empfangsstring (variable Länge) ist eine variable Zeit zwischen 
Datenempfang und Daten senden liegt. Zu Debug-Zwecken habe ich bei jedem 
RX-Event ein Byte über die Schnittstelle gesendet, um zu Überprüfen, wo 
die Zeit verloren geht. Dabei habe ich festgestellt, dass die 
Debug-Bytes in praktisch konstanten Zeiten gesendet werden. Allerdings 
mit demselben Delay wie bei der normalen Datenübertragung.

Der Puffer der seriellen Schnittstelle wird wohl in konstanten 
Zeitabständen gelesen, worauf bei Datenempfang ein Event generiert wird. 
Jenachdem wie lang meine Empfangsdaten sind, verliere ich dabei immer 
Zeit. Gibt es eine Möglichkeit das zu umgehen?

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um vorhersagenzu koennen, nach welcher Zeit ein System auf ein Ereignis 
reagiert, braucht man ein echtzeitfaehiges OS. Alles was W.......$ 
heisst, gehoert da bestimmt nicht dazu.

Gast

Autor: Rupplyn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann frag ich mich nur was mir meine 115k Datenübertragung bringen, wenn 
beim 2. Teil meins Datenstrings "ewig" gewartet wird, bis ich bescheid 
bekomme, dass Daten vorhanden sind.

Autor: 6632 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die 115k kann man eh nur bei Blockuebertragung ausfahren. Sobald man 
delays drin hat, geht die Performace in die Knie. In einem embessed 
System auf 115k zu gehen macht das system nu anfaellig gegen 
kommunikationsbedingten Leistungsverlust. Lieber 9600 Kontinuierlich, 
als 115k Burstweise. Bei 115k kann jede 100us ein Interrupt kommen.

Autor: horst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
normal hast du 14byte puffer, sind die voll, werden die daten abgeholt 
:)

(schlagt mich nicht, aber so hab ich das in erinnerung)

Autor: Rupplyn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gemessen hab ich zwischen den einzelnen Debug-Bytes ca. ne 1ms. Da wär 
ich mit 100us ja fast schon zu frieden. Die 14 Byte decken sich übrigens 
mit meinen Beobachtungen.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Üblicherweise ist für Interrupts der Device Driver im Betriebssystem 
zuständig, nicht ein Software-Layer wie DotNet.

Ausserden muss man in diesem Zusammenhang zwischen einer echten 
seriellen Schnittstelle im PC und einer per USB angeschlossenen 
unterscheiden. Letztere wird dank USB nie schneller als 1ms pro 
Transaktion, egal bei welcher Bitrate, nur die Grösse der Transaktionen 
variiert dann noch.

Autor: Rupplyn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das heißt für mich, dass ich auch mit anderen Komponenten das Verhalten 
nicht ändert?

Ist allerdings ein "richtiger" Comport. Das ich bei VCOMs das Problem 
habe war mir bewusst. Wobei die ja einen größeren Puffer haben? Dann 
würde sich der Durchsatz je nach Datenvolumen zumindest erhöhen, oder?

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.