Forum: PC Hard- und Software Sehr geringe Baudrate ein Problem für Windows?


von Max M. (maxmicr)


Angehängte Dateien:

Lesenswert?

Guten Tag,

ich versuche gerade mit einer sehr geringen Baudrate (~38) Daten von 
einem µC zum PC zu übertragen, da der Controller selber kein UART 
unterstützt, hab ich versucht, das in Assembler nachzubauen. Mit Logic 
messe ich eine Bitdauer von ca. 26ms, der Async Serial Analyzer erkennt 
die übertragene Zahl 11 bei einer Baudrate von 38, von daher ging ich 
davon aus, das Windows das auch so erkennen würde, allerdings zeigt mir 
RealTerm und mein C#-Program entweder 0 oder 240 an? Kann Windows 
mit so geringen Baudraten nicht umgehen?

: Verschoben durch Moderator
von Helmut L. (helmi1)


Lesenswert?

38 Bd ist jawohl auch keine Standardbaudrate. Stell mal eine genormte 
Baudrate auf beiden Seiten ein.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Welchen UART nutzt du auf dem PC? Evtl. kann  der die 38bit/s schon rein
hardwaremäßig nicht. Der klassische Mainboard-UART sollte diese Bitrate
zwar hinbekommen, da ist dann nur die Frage, ob sie auch vom Treiber
unterstützt wird. Ein USB-Serial-Converter mit dem FT232R bspw. geht nur
bis 183bit/s hinunter, da hilft dann auch der beste Treiber nichts.

von Max M. (maxmicr)


Lesenswert?

Yalu X. schrieb:
> Ein USB-Serial-Converter

Ich benutze in der Tat einen USB-Serial Converter mit CH340 Chip, kann 
das zum Problem werden?

von Dumdi D. (dumdidum)


Lesenswert?

Gibt soetwas was sich 'Datenblatt' nennt. Mal googeln.Auf der ersten 
Seite steht mindestens 50bps.

von S. R. (svenska)


Lesenswert?

Die kleinsten (mir bekannten) Standardbaudraten sind 110 und 300 bps, 
dabei sollte letztere eigentlich überall funktionieren.

von Max M. (maxmicr)


Lesenswert?

Dumdi D. schrieb:
> Gibt soetwas was sich 'Datenblatt' nennt. Mal googeln.Auf der ersten
> Seite steht mindestens 50bps.

Danke dir, jetzt klappts, hab die Taktfrequenz des Prozessors verdoppelt 
und bin nun bei 78 Baud.

von (prx) A. K. (prx)


Lesenswert?

S. R. schrieb:
> Die kleinsten (mir bekannten) Standardbaudraten sind 110 und 300 bps,

Fernschreiber mit 5-Bit Codierung hatten oft 50 und 75.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Wenn ich den von WCH für Linux zur Verfügung gestellten Treibercode
richtig verstanden habe, ist die niedrigste Bitrate des CH340

  6 Mbit/s / 2⁹ / (2⁸-1) ≈ 46 bit/s

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

A. K. schrieb:
> Fernschreiber mit 5-Bit Codierung hatten oft 50 und 75.

Die Standard-UART im PC, 8250 bzw. 16550, verwendet im 
Baudratengenerator einen Takt mit 1.8432 MHz, der durch einen Prescaler 
von 16 und dann durch das Baudratenteilerregister weiter heruntergeteilt 
wird.

Dadurch ergibt sich die bekannte Maximalbaudrate von 115200 Baud, und 
jede andere durch ganzzahlige Teilung aus diesem Wert ableitbare 
Baudrate.

Für 50 Baud beträgt der Baudratenteiler 2304, für 75 Baud 1536. Auch 
niedrigere Baudraten sind möglich.


Da aber die Hardwarearchitektur der üblichen USB-UART-Bridges eine 
komplett andere Baudratenerzeugung vorsieht, muss man sich an das 
Datenblatt der verwendeten USB-UART-Bridge halten, sofern es denn eines 
gibt. Von den CHS-Uarts habe ich bislang nur vage aus dem chinesischen 
übersetzte Beschreibungen, aber keine ernstgemeinten Datenblätter 
gesehen.

von S. R. (svenska)


Lesenswert?

Rufus Τ. F. schrieb:
> Für 50 Baud beträgt der Baudratenteiler 2304, für 75 Baud 1536. Auch
> niedrigere Baudraten sind möglich.

Ich staune. DOS hat mir damals nichts langsamer als 110 Baud angeboten, 
daher dachte ich, das wäre das Minimum. :-)

von Yalu X. (yalu) (Moderator)


Lesenswert?

S. R. schrieb:
> Ich staune. DOS hat mir damals nichts langsamer als 110 Baud angeboten,

DOS hat fast überhaupt nichts angeboten, was eine sinnvolle Nutzung der
seriellen Schnittstellen erlaubt hätte (vermutlich wollte Microsoft, wie
so oft, die User nicht unnötig verwirren :)). Deswegen hat praktisch
jedes Programm, das seriell kommunizierte, direkt auf die UART-Hardware
zugegriffen, was letztendlich auch nicht viel schwieriger war, als die
komischen DOS-Software-Interrupts zu verwenden.

von (prx) A. K. (prx)


Lesenswert?

Weshalb ladbare Device-Driver für die Nutzung der UART aufkamen, etwa 
die FOSSIL Treiber. Was den Vorteil hatte, dass man die Programme durch 
Ersatz des Treibers auch für ISDN nutzen konnte.

von Wolfgang (Gast)


Lesenswert?

S. R. schrieb:
> Die kleinsten (mir bekannten) Standardbaudraten sind 110 und 300 bps,
> dabei sollte letztere eigentlich überall funktionieren.

Lange vorher waren 45.45, 50 und 75 Bd gebräuchlich - schneller war die 
Mechanik damals nicht ;-)

von Peter D. (peda)


Lesenswert?

Max M. schrieb:
> ich versuche gerade mit einer sehr geringen Baudrate (~38) Daten von
> einem µC zum PC zu übertragen, da der Controller selber kein UART
> unterstützt, hab ich versucht, das in Assembler nachzubauen.

Warum so extrem langsam?
Bei meinen I2C-Sniffer auf dem ATtiny85 erreiche ich problemlos mit der 
SW-UART 460800 Baud (Assembler) bzw. 115200 Baud (C).

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das ist nur die lausige BIOS-Unterstützung für die Ansteuerung der 
seriellen Schnittstelle, die eh' kein ernstgemeines Programm verwendet 
hat. Steuert man den Baustein selbst an, kann man seine Möglichkeiten 
auch ausnutzen.

von Peter D. (peda)


Lesenswert?

Rufus Τ. F. schrieb:
> Steuert man den Baustein selbst an, kann man seine Möglichkeiten
> auch ausnutzen.

Ich hab auch mal den 16550 bare metal über seine IO-Adressen 
programmiert.
Und der Witz ist, daß Programm funktioniert heute noch in DOSbox unter 
W7/64Bit an einem USB-RS232 Umsetzer. Da war ich echt verblüfft.

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.