Forum: Mikrocontroller und Digitale Elektronik Niedrige Baudrate


von Florian (Gast)


Lesenswert?

Hallo

Ich will mit einem mega8 (8Mhz) und MAX232 eine Baudrate von 5Bd (!)
nutzen. Bei einigen Versuchen mit dem Windows Terminalprogi bin ich
aber nur bis runter zu 150Bd gekommen. Bei 110 kommt nur noch Müll an
(niedriger geht das Terminalprogramm eh nicht). Ich denke, 5Bd wird
dann auch nicht klappen. Liegt das am µC oder am PC?
Was kann da falsch sein und gibt es eine Lösung?

Danke.

von Weihnachtsmann (Gast)


Lesenswert?

Warum so eine kleine Baudrate?
Ich sehe darin keinen Sinn so eine kleine Baudrate.


Gruss

Weihnachtsmann

von Florian (Gast)


Lesenswert?

Nachtrag: Sorry, nicht 150Bd klappt, sondern 300Bd.

von Florian (Gast)


Lesenswert?

@Weihnachtsmann

Naja, entschuldige, aber ob DU darin einen Sinn siehst, interessiert
MICH herzlich wenig.

von A.K. (Gast)


Lesenswert?

Ob sich jetzt noch jemand findet, der seinerseits in einer konstruktiven
Antwort Sinn sieht?

von Heinz Ketchup (Gast)


Lesenswert?

Die niedrigste Baudrate für den Atmega-8 mit 8Mhz
im asynchronen Modus ist 122 Baud.
Das Baudratenregister ist nur 12 Bit breit,
da kannst du also max. 4096-1 eintragen.
Im synchronen Modus kannst du den USART extern takten. (XCK-Eingang)
Dann kannst du mit der Baudrate im Prinzip beliebig niedrig werden.

Mfg Heinz

von tex (Gast)


Lesenswert?

und wenn er den mega 8 mit 1Mhz taktet? (Keine Ahnung ob das praktisch
geht, bei mega128 geht es jedenfalls)
Dein Problem ist aber, dass Du mit einem Max 232 die Pegelwandlung für
die Schnittstelle zum PC vornimmst und das geht bei 300bd schon an die
grenzen der Lesbarkeit, weil die Kondensatoren, die die Spannung für
die PC-Seite erzeugen nicht so lange halten. Schmeiß den 232 raus und
ersetze ihn durch 2 optokoppler. Für die seite von Mega8 zum Pc genügt
es den transistor des OK zwischen DTR und RXT zu schalten und die Diode
hängst Du an den tx-Port des Mega 128. dann kannst Du auch 1baud
übertragen, wenn Du ein Terminal-Prog findest, das das kann.

von mmerten (Gast)


Lesenswert?

Über den Sinn oder Unsinn solcher extrem niedrigen Datenraten kann man
natürlich geteilten Meinung sein, 200 ms pro Bit. Aber es war ja auch
nicht von der vorgegebenen Nutzung des Hardware UART die Rede. Per
Software UART ist das Problem mit Sicherheit lösbar ;)

von Chris (Gast)


Lesenswert?

> dann kannst Du auch 1baud
> übertragen, wenn Du ein Terminal-Prog findest, das das kann.

Das würde mich sehr wundern, wenn die Begrenzung am "Terminal-Prog"
liegt. Ich denke sie legt eher in der PC-Hardware. Denn welches
"Terminal-Prog" benutzt denn nicht die offiziellen WinAPI-Funktionen
zur Kommunikation?
Wenn man mit den WinAPI-Funktionen 1 Baud festlegen möchte und die das
nicht akzeptieren, liegt's nicht am "Terminal-Prog".

Allerdings bin ich der Meinung, dass Florian so eine Antwort gar nicht
mehr verdient hat, nach seinem Ausbruch im dritten Posting.

@Florian: Überleg dir bitte vorher, wer hier hilft:
1) Bezahlte Support-Fachleute mit erzwungenem, immer aufgesetzten
Lächeln, die man alles fragen kann.
2) Elektronik-Interessierte und Profis, die in ihrer Freizeit
kostenlos anderen Leuten mit ihrem Wissen helfen möchten.

Und dann überleg dir, ob solche Postings wie dein drittes wirklich
nötig sind.

von Florian (Gast)


Lesenswert?

Ach so, wenn ich eine vernünftige Frage stelle und dann eine
schwachsinnige Gegenfrage erhalte, die nichts mit der Frage zu tun hat,
bin ich der böse Bube? Nein danke! Dann verzichte ich lieber auf
Antworten diser "Fachleute", die vermutlich eh nicht die eigentliche
Frage beantworten können, denn sonst würden sie ja nicht ihre
Unwissenheit mit einem Statement überspielen müssen, nach dem sie
keiner gefragt hat.
Wie wäre es mit folgendem Dialog:
F: "Wie kann ich meinen Aschenbecher im Auto leeren?"
A: "Kauf Dir doch ein neues Auto. Alles andere ist unfug, denn ich
mach das so und was ich mache, ist schlau."

Aber hier im Forum (und in anderen) findet man leider oft solche
Diskussionen, die nicht zum Thema beitragen und die Sache nur
aufblähen.

Womit wir zur Antwort auf Deine Frage kämen: Ja, mein Posting war
nötig, aber das von Weihnachtsmann nicht.

P.S.: Danke an diejenigen, die sich (trotzdem) noch fachlich äußern.
Mal sehen, wie ich damit weiterkomme.

von tex (Gast)


Lesenswert?

@Florian
Statt Zeit und inneren Frust damit zu verschwenden solche Prologe zu
schreiben ignoriere solche Postings einfach. Sich in ein Problem
reinzudenken und die Frage zu verstehen, ist nicht jedermans Sache in
diesem Forum und Du tust weder Dir noch sonst jemandem einen Gefallen
damit.
@Weihnachtsmann. Es gibt fertige Industriemodule ect. die mit
Datenraten von 300 / 150 und sogar 75 Baud arbeiten. Als Beispiel seien
hier mal dcf77-Uhren genannt. Also Sinn oder nicht Sinn ist hier nicht
die Frage.

von Alex (Gast)


Lesenswert?

Was ist falsch daran, Interesse am Hintergrund der Problemstellung zu
zeigen? Nur allzuoft denkt man sich als Anfänger Dinge aus, welche in
ihrer Realisierung z.T. sehr kompliziert werden können.
Schildert man einem "Erfahrenen" dann den Einsatzzweck, so kann
dieser nicht selten mit Alternativlösungen aufwarten.
Diese können wesentlich produktiver als die eigentliche Idee sein.

Wie dem auch sei:
Dein Ziel wirst du auf direktem Weg nicht erreichen. Selbst wenn ich
ein  DCF77-Modul an den PC hängen wollte, müsste ich noch eine Logik
dazwischen schalten.

von peter dannegger (Gast)


Lesenswert?

Es macht schon Sinn, über den Sinn einer Frage nachzudenken.

Z.B. ob die Entwickler der Hardware es für sinnvoll erachtet haben
könnten und es unterstützen oder nicht.

Bei den ersten AVRs konnte man nicht mal mehr 1200 Baud erzeugen, da
nur ein 8-Bit Teiler verwendet wurde:

8MHz  16  256 = 1953 Baud

Die neueren AVRs können bei maximalem CPU-Takt bis herunter zu:

20MHz  16  4096 = 305 Baud


Da bleibt Dir also nur die Software-UART übrig.


Und man bricht sich auch überhaupt nichts ab, wenn man bei sehr
ungewöhnlichen Fragen etwas näher erläutert, worum es geht.
Oftmals beruhen ungewönliche Fragen nämlich auf Mißverständnissen.


Peter

von Weihnachtsmann (Gast)


Lesenswert?

@Florian


Ich wollte dir nur helfen da du aber nicht im stande bist eine
anständige Antwort zu geben musst du dich nicht verwundern wenn du
solche Antworten erhältst auch musst du dich nune nicht der als Opfer
darstellen.

von Rufus T. Firefly (Gast)


Lesenswert?

Die im PC verwendete serielle Schnittstelle ist kompatibel zum "guten
alten" 16550(8250 und verwendet einen 1.8432-MHz-Takt für die
Baudratenerzeugung. Dieser wird durch einen 1:16-Prescaler gejagt und
kann dann durch einen 16-Bit-Wert geteilt werden, um langsamere
Baudraten als 115200 (Teiler = 1) zu erzeugen.

Für 50 Baud beträgt der Teiler demnach 2304; aufgrund des
16-Bit-Baudratenteilers sind also noch deutlich langsamere Baudraten
möglich.

Der Windows-Devicetreiber müsste aus der übergebenen Baudrate den
entsprechenden Wert für die Register DLL und DLM (Divisor Latch LSB &
MSB) des 16550/8250 berechnen.
Ob er das tut, sollte sich mit dem unter
http://www.mikrocontroller.net/forum/read-8-155472.html#new geposteten
Terminalprogramm überprüfen lassen, da das die Eingabe  beliebiger
Baudraten zulässt.

von Ralf Kellerbauer (Gast)


Lesenswert?

Nicht nur der AVR, auch das Gegenstück benötigt solch niedrige Baudraten
jenseits der Norm.
Früher nutze man 50/75 Baud und eben RTS/CTS z.B. bei mechanischen
Fernschreiber (z.B. Wagenrücklauf).

5 Baud in der geforderten Form gabs also noch nie in der V24
Geschichte, selbst in Zusammenarbeit mit langsamer Mechanik. Die Frage
ist also mehr als berechtigt.

von Florian (Gast)


Lesenswert?

Tja, der Unterschied zwischen einer Frage aus Interesse an der Materie
und der Behauptung "sinnlos" sollte auch für den sprachlichen Laien
differenzierbar sein.

Auf "Hey, interessante Frage. Keine Ahnung, aber wofür braucht man
denn so was? Hört sich nach einem interessanten Thema an, mal so
außerhalb der üblichen 'Gepflogenheiten' zu arbeiten." Hätte ich
sofort gerne mit der URL http://www.hex.co.za/vaginfo/index.html
geantwortet.
Aber "Ich sehe darin keinen Sinn" ist ziemlich egozentrisch und
spricht nicht für die technische Weitsicht desjenigen.

Nicht nur "früher" und "gab's noch nie in V24" scheint da nicht so
angebracht zu sein. OK, VAG ist sicher nicht immer auf dem neusten
Stand, aber anscheinend ist es ja wohl mehr, als nur unüblich, wenn's
dafür sogar einen Standard gibt, reichlich unmechanisch und macht
vielleicht doch Sinn. ;-)

von Weihnachtsmann (Gast)


Lesenswert?

Ich habe geschrieben:

Warum so eine kleine Baudrate?
Ich sehe darin keinen Sinn so eine kleine Baudrate.


Da ich auch eine Frage gestellt habe, da es für mich "Sinnlos" ist
könnte man dies mit einem gewissen Anstand beantworten.

Da ich nie behaupte dass ich alles weiss lasse ich mich eines besseren
belehren.
Aber diese Baudrate ist unter normalen Bedingungen "Sinnlos".
Was in deinem Fall nicht so ist.

Aber es scheint dass dein Anstand noch nicht über den Standkasten
hinaus gekommen ist.

von MSE (Gast)


Lesenswert?

@Florian:

Einerseits war das Statment von Weihnachtsmann "...sinnlos..."
fachlich nicht qualifiziert und leicht im Ton vergriffen.

Andererseits ist die darauf von Dir folgende Antwort fachlich sehr
qualifiziert aber fast noch weiter im Ton daneben!

Selbst wenn Du nicht die Absicht hast, zu veröffentlichen, wozu du
etwas bestimmtes brauchst (was ansich nichts verwerfliches ist),
hättest Du den guten Weihnachtsmann höflicher darauf hinweisen können.


Gruß, Michael

von Patrick (Gast)


Lesenswert?

Hallo zusammen,

Um ganz ehrlich zu sein habe ich selbst noch nie die V.24/V.28, RS232E,
DIN66020 usw. in den Händen gehalten. Somit weiss ich nicht, ob es
überhaupt eine festlegung für die niedrigste Baudrate gibt. Wenn man
asynchrone Datenübertragung benutzt ist es allerdings ziemlich egal.

von Tobi (Gast)


Lesenswert?

Mein Programm, zu dem Rufus oben schon den Link gepostet hat
( http://www.der-hammer.info/terminal/index.htm )
kommt problemlos mit solchen niedrigen Baudraten zurecht. Bestätigt
wurden mir 25baud aber auch niedrigere sollten Funktioneren.
Die Windows API akzeptiert Baudraten bis runter zu einem baud ohne
Fehlermeldung! Nur die meisten Terminal Programme streuben sich oft
gegen so niedrige Einstellungen. Probier das einfach mal damit aus

von Benedikt (Gast)


Lesenswert?

@Tobi

Kann man auch höhere Baudraten als 115200Baud einstellen ?
Bzw. liefert die API eine brauchbare Rückmeldung, ob die eingegebene
Baudrate unterstützt wird ?

von Ralf Kellerbauer (Gast)


Lesenswert?

http://www.hex.co.za/vaginfo/index.html

@Florian,
also, die 5 Baud inialisiert nur.
Man kann dabei andere Baudraten einstellen.

Die ganze Frage nach 5 Baud Kommunikation ist also daneben.

von Tobi (Gast)


Lesenswert?

Man kann auch höhere Baudraten als 115200 Problemlos einstellen. Eine
Fehlerüberprüfung kann man z.b durch ein erneutes Auslesen und
vergleichen nach dem Schreiben machen. So mach ich es bei meinem
Program

von Sven (Gast)


Lesenswert?

>>Die Windows API akzeptiert Baudraten bis runter zu einem baud ohne
Fehlermeldung! Nur die meisten Terminal Programme streuben sich oft
gegen so niedrige Einstellungen.

Sicher? Tut sie nur so oder macht sie das auch? Ich habe mit BrayTerm
auch schon "unrunde" Baudraten (76k...) eingestellt, der Transfer
lief dann aber mit der nächsten gängigen Baudrate (56k oder so). Wenn
man auf zwei Rechnern eine unübliche Baudrate einstellt und der
Transfer dann auf der naheliegenden gängigen läuft, merkt man das nicht
mal, da ja beide Rechner den Fehler machen. Am AVR dürfte das dann
auffallen...

Sven

von Tobi (Gast)


Lesenswert?

Du hast auch recht :)
Im unteren Bereich bis ca 100baud unterstützen meiner Erfahrung nach
die meisten Controller in den PC's alle Baudraten. Dadrüber nur einige
wenige gebräuchliche, halt die, die sich aus dem Teilungsverhältnis des
internen Takts ergeben (siehe Rufus post). Wenn das Bray Terminal nicht
vor ungültigen Baudraten warnt ist das schlecht. Mein Programm meldet so
etwas, daher lässen sich damit auch problemlos die verfügbaren Baudraten
seines PC's ohne Gegenstelle ausprobieren. Aber wie gesagt, bis ca
100baud werden alle Lückenlos unterstützt

von Florian (Gast)


Lesenswert?

5 Baud ist überhaupt kein Problem mit dem hier genannten HTerm. Läßt
sich wunderbar am PC einstellen und der Controller reagiert genau nach
Plan darauf. Bei jeder anderen Baudrate bleibt er stumm wie ein Fisch,
so daß ich als gesichert ansehe, daß es sich wirklich um 5Bd handelt.

Der atmega8 mit 8MHz Quarz kommt bei weitem nicht so weit herunter.
150Bd macht der noch ganz manierlich. Mit internen 1MHz Takt ging's
weiter herunter bis etwa 50Bd.

Läuft also wohl darauf, daß ich die 5Bd softwaremäßig umsetzen muß,
denn 8Mhz sollte schon sein.

von Rufus T. Firefly (Gast)


Lesenswert?

@Benedikt:
  "Kann man auch höhere Baudraten als 115200Baud einstellen ?"

Einstellen ja, aber mit Standard-PC-Schnittstellen ist keine höhere
Baudrate erzielbar (siehe Ausführung etwas weiter unten).

Nur mit vom Standard abweichenden seriellen Schnittstellen, die mit
einem eigenen Devicetreiber angesteuert werden, können höhere Baudraten
erzielt werden.


@Sven:
  "Sicher? Tut sie nur so oder macht sie das auch?
  Ich habe mit BrayTerm auch schon "unrunde" Baudraten (76k...)
  eingestellt, der Transfer lief dann aber mit der nächsten
  gängigen Baudrate (56k oder so)."

Das geht auch nicht anders; die Ursache hierfür ist in der Hardware
begründet.

Die Standardschnittstelle (16550/8250) erzeugt ihre Baudraten aus einem
Takt mit 1.8432 MHz, der noch durch einen 1:16-Prescaler geschickt
wird.

Mit einem Teiler von 1 ist so maximal eine Baudrate von 115200
erzielbar, die nächste Baudrate von 57600 (Teiler von 2) liegt etwas
neben der eigentlich gewünschten Rate von 56000.

Andere als die hier aufgelisteten Baudraten kann eine
Standard-PC-Schnittstelle nicht erzeugen (nur noch langsamerere)

Teiler Baudrate
 1    115200
 2     57600
 3     38400
 4     28800
 5     23040
 6     19200
 7     16457
 8     14400
 9     12800
10     11520
11     10473
12      9600
13      8862
14      8229
15      7680
16      7200
17      6776
18      6400

naja, den Rest könnt Ihr euch auch selber ausrechnen.

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.