Forum: Mikrocontroller und Digitale Elektronik Interrupt MSP430


von johnny (Gast)


Lesenswert?

Hallo!

Wie viele Bytes kann man eigentlich mit einer Baudrate von 115.200 in 
einer Sekunde senden?

Sprich ist es möglich z.B. 20000 Interrupts (über Timer) in einer 
Sekunde zu erzeugen und dann pro Interrupt ein Byte über UART zu senden?

Wo stößt ein MSP430 da an seine Grenzen?

Ich hoffe jmd. kann mir einen Anhaltspunkt geben.
Danke!

von Stefan B. (stefan) Benutzerseite


Lesenswert?

PI * DAUMEN für gängige UART-Parameter
115200 Bits/s / (1 Startbit + 8 Datenbits + 0 Paritybit + 1 Stoppbit)
= 11520 Zeichen/s max.

Warum willst du die Zeichen im TIMER Interrupt herausschicken?

Dafür gibt es doch extra UART Interrupts. Die kann man i.d.R. so 
einstellen, dass sie aufgerufen werden, wenn der HW-Sendepuffer frei 
ist, oder wenn ein Zeichen komplett verschickt ist.

von johnny (Gast)


Lesenswert?

Die Baudrate ist doch die Symbolrate pro s. Und ich weiß nicht wie viele 
Bits ein Symbol hat, daher glaub ich sinds es weniger Zeichen :(

Danke für den Hinweis mit dem UART interrupt. Kann ich da auch mit einer 
definierten Frequenz die Daten senden?

von Stefan B. (stefan) Benutzerseite


Lesenswert?

johnny schrieb:

> Danke für den Hinweis mit dem UART interrupt. Kann ich da auch mit einer
> definierten Frequenz die Daten senden?

Radio Eriwan: Ja, ein einzelnes Zeichen hetzt seine Bits mit der 
eingestellten Bitfrequenz des UART Baudratengenerators über die 
Leitung - eben der Baudrate :-)

Ich vermute aber, du willst die Frequenz festlegen wie schnell du 
mehrere Zeichen hintereinander übertragen kannst. Die sind bei 115200 
Baud maximal 11520 Zeichen/s (bei 8N1 = 10 Bits pro 8 Bit Zeichen, siehe 
RS232). Du kannst den UART auch langsamer füttern und so eine 
niedrigere Zeichenfrequenz benutzen.

von johnny (Gast)


Lesenswert?

Also, wenn ich 115200 Baud hab und Daten vom Typ double (8 Byte) senden 
will, kommen in 1 Sekunde: 8Byte * 8=64 bit + 1 Startbit + 1 Stopbit =66 
bit
macht 115200/66bit=192 double Werte? Ist doch richtig oder?

Ja an der Baudrate kann ich nichts stellen, daher dachte ich an einen 
Timer und die Interrupts.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Fast.

8 Bytes pro Double * (1 Startbit + 8 Datenbits + 0 Paritybits + 1 
Stoppbit) pro Byte = 80 Bits pro Double

115200 Bits pro s / 80 Bits pro Double = 1440 Double pro s

von johnny (Gast)


Lesenswert?

Achso jeder double hat start und stopbit. Danke!

von bubi (Gast)


Lesenswert?

Hi,

nö, jedes Byte hat Start + Stop + Parity.

Ein Byte was du überträgst, benötigt auf der Leitung 10 Bits

von Herold (Gast)


Lesenswert?

bubi schrieb:
> nö, jedes Byte hat Start + Stop + Parity.
>
> Ein Byte was du überträgst, benötigt auf der Leitung 10 Bits

macht dann aber 11...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

10 sinds, wenn Parity weggelassen wird (8n1).

Es ist übrigens nicht ratsam, Binärdaten ohne irgendein Protokoll zu 
versenden, wenn fortwährend 64-Bit-Doubles als je 8 Bytes übertragen 
wird, wird es der Gegenstelle schwerfallen, sich darauf zu 
synchronisieren.

Wo im Bytestrom fängt der eine Double-Wert an, wo hört der andere auf?

von johnny (Gast)


Lesenswert?

ja das soll im Protokoll passieren, soweit war ich aber noch nicht :)
Mir gings ersteinmal nur um die Datenmenge sozusagen

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.