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


von Holger Mertens (Gast)


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

von holgi (Gast)


Lesenswert?

keine Tipps?

von Otto (Gast)


Lesenswert?


von Zock (Gast)


Lesenswert?

Ein Bit muss nicht zwingend ein Nutzdatenbit sein.

von TestX .. (xaos)


Lesenswert?

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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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.

von Hans G. (Firma: ACC) (karlos5)


Lesenswert?

Hallo Lothar,

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

von Peter D. (peda)


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

von Hans G. (Firma: ACC) (karlos5)


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ß

von Johannes M. (johnny-m)


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...

von Peter D. (peda)


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

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
Noch kein Account? Hier anmelden.