mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Serielle 9600 Baud Verständnisfrage


Autor: Holger Mertens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

ich habe da ein Verständnisfrage bzgl serieller Datenübertragung. Für 
manche sicher trivial aber ich blick da nicht ganz hinter.

Ich verwende unter Simulink einen Block um serielle Daten zu empfangen.
Mir ist es möglich z.B. 9600 Baud auszuwählen und Startbit, Stopbit, 8 
Datenbits und eventuell ein Paritätsbit.
Die Zykluszeit des Simulinkmodels beträgt 1ms und ist fest. Das heisst 
wenn ich mit 9600 Baud arbeiten würde und 10 bit Framelänge, würde ich 
gerade noch so auskommen.

1/9600Baud * 10 Bit = 1,04 ms / Byte

Nun kommt mein eigentliches Problem. Was mach ich wenn das Paritätsbit 
hinzukommt? Ich hätte dann somit 11 Bit und würde somit mit 9600 Baud 
nicht auskommen. Denn

1/9600Baud * 11 Bit = 1,15 ms / Byte

überschreitet die Zykluszeit uns es kommt zu Überschneidungen. Bzw 
Datenverlust.

Kannich denn einfach die Baudrate in Simulink auf 19200 umstellen? Dann 
käme ich auch mit der Zeit klar. allerdings weiss ich nicht ob man das 
einfach so machen kann?

Vielen dank für eure antworten

gruss
Holger

Autor: holgi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
keine Tipps?

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Zock (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Bit muss nicht zwingend ein Nutzdatenbit sein.

Autor: Andi ... (xaos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn der block nicht als eigenständiges modul läuft wirds eh nicht 
funktionieren....1ms ist zu langsam...

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Die Zykluszeit des Simulinkmodels beträgt 1ms und ist fest.
> 1/9600Baud * 10 Bit = 1,04 ms / Byte
> ... würde ich gerade noch so auskommen.
Nach nur 25 Zeichen wärst du um ein ganzes Zeichen zu spät :-o
Was würdest du zu einer Uhr sagen, die am Tag um eine Stunde falsch 
geht?

Nimm 19200 Baud, dann hast du Luft.

Autor: Hans Ganz (Firma: ACC) (karlos5)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Lothar,

das Gerät das mir die Daten sendet arbeitet mit 9600 Baud. Stellt das 
Keine Probleme dar?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Holger Mertens wrote:
> Ich verwende unter Simulink einen Block um serielle Daten zu empfangen.
> Mir ist es möglich z.B. 9600 Baud auszuwählen und Startbit, Stopbit, 8
> Datenbits und eventuell ein Paritätsbit.
> Die Zykluszeit des Simulinkmodels beträgt 1ms und ist fest.

Was bedeutet Zykluszeit?
Was hat die Zykluszeit mit der UART zu tun?
Machst Du das Bit-Timing der UART etwa in Software?

Erklär mal Dein Problem so, daß man es versteht, ohne das man Simulink 
kennen muß.


Peter

Autor: Hans Ganz (Firma: ACC) (karlos5)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter,

ich versuchs mal:
Es geht um folgendes. Ich verwende Simulink, um serielle Daten zu 
empfangen. Ich benutze eine externe Rs232-Karte (FPGA ähnlich). Diese 
Karte hat bereits Simulink Blöcke, um die seriellen Daten im Simulink 
weiterzuverarbeiten. Dort kann ich die üblichen Einstellungen 
(Startbit,stopbit, datenbits, baudrate und parität) einstellen.

Nun verwende ich diesen Block, um serielle Daten zu empfangen. Um diese 
Daten weiterzuverarbeiten bzw. in einem Array zu puffern verwende ich 
eine einfache Logik in Simulink:

Immer wenn ein Byte vorhanden ist im FIFO, schreibe es in den Puffer.


Die Zykluszeit des Models beträgt 1ms. d.h. dass jede Milisekunde ein 
Byte im Puffer geschrieben werden kann.
Da aber das Gerät, dass die Daten liefert und sie an die Karte 
weitergibt, mit 11 Bit und und einer Baudrate von 9600 arbeitet, kommt 
es zu konflikten.
denn nach 1ms wäre ja die Message ja noch nicht fertig.

gruß

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verstehe immer noch nicht ganz, was mit den empfangenen Daten 
gemacht werden soll. Üblicherweise muss man, wenn eine Datenquelle Daten 
mit einer gegebenen Geschwindigkeit zur Verfügung stellt und die Daten 
im Empfangsgerät für irgendetwas zwingend benötigt werden, so lange 
warten, bis die Daten auch da sind. Da die Übertragungsgeschwindigkeit 
ja offensichtlich vorgegeben ist, musst Du wohl die Zykluszeit 
entsprechend anpassen...

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hans Ganz wrote:
> Die Zykluszeit des Models beträgt 1ms. d.h. dass jede Milisekunde ein
> Byte im Puffer geschrieben werden kann.

"Kann" heißt doch nicht "Muß".


> Da aber das Gerät, dass die Daten liefert und sie an die Karte
> weitergibt, mit 11 Bit und und einer Baudrate von 9600 arbeitet, kommt
> es zu konflikten.
> denn nach 1ms wäre ja die Message ja noch nicht fertig.

Dann machste eben diese 1ms lang nichts.
Wenn die Daten langsamer ankommen, als sie verarbeitet werden können, 
ist das sicher, d.h. so ist es üblich.
Nur wenn die Daten zu schnell kommen, krachts.


Peter

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.