mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik USART Communikation mit 1% tolleranz


Autor: Der Grosse (jonnyk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo alle zussammen.

Habe da mal eine frage weiss nicht ob sich jemand damit schon auskennt.
Ich habe 2 MC der eine arbeitet mit einem Takt von 14745600 Hz.(Quarz 
für RS232 übertragung).
Der andere mit 8 MHz. ein sehr unstabiler quarz.
Deswgen habe ich jetzt ein Problem. Wenn ich versuche die beiden zur 
communication zu bringen verstehen sie sich nur bei einer Baud rate von 
4600 wenn ich mehr mache geht nichts mehr.

Kann ich es irgend wie ausrechnen oder einstellen das die beiden sich 
verstehen? oder ist es ausgeschlossen?

Quarz beim 8MHz MC austauschen geht nicht. Es sind über 500 geräte 
gebaut worden und sind beim Kunden im einsatz.
Es ist vom bau jahr "1800 vor Christus.":-)
deswegen ausgeschlossen dass ich irgend was an dem MC machen kann. Aber 
ich kann alle Vorschlege ausprobieren die den 14 MHz MC betreffen.


Bedanke mich im vorraus.

PS: der eine MC ist ein Mega256 der andere (vom bj 1800 )ist ein 
Mitsubishi 50740 -10

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie man einen Quarz so instabil kriegt, dass eine präzise UART am 
anderen Ende ausser Tritt kommt ist mir jetzt nicht klar. Ausser 
natürlich wenn der Quarz nicht bloss in der Frequenz sondern im ganzen 
Schwingverhalten instabil ist. Dann aber hast du m.E. keinerlei Chance, 
denn dabei kann alles rauskommen.

Eine Abweichung von 1% ist üblicherweise noch kein Problem.

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du die "uralt-Schaltung" irgendwie dazu bringen kannst, länger am 
Stück Daten zu senden könntest du versuchen die Baudrate "auszumessen" 
(z.B. RX-Pin mit ICP-Pin verbinden, etc) und dann versuchen über 
Anpassung von UBRR die Baudrate zu erraten...

Oder du lässt den Hardware-UART am Mega ganz weg und machst nen 
Software-Uart... den könnt man vermutlich zu mehr Toleranz bewegen.

Autor: Paul Baumann (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier habe ich ein kleines Programm angehangen, was ich gerne benutze, um
festzustellen, ob der Fehler klein genug bleibt.

MfG Paul

Autor: Der Grosse (jonnyk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Für die tollen antworten werde mal Das mit der Software uart 
testen ist mir gar nicht in den sinn gekommen.

Und danke fürs tolle programm da braucht man ja gar nichts mehr rechnen 
und weiss trotzdem die reele baudrate...

Danke

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Könnte sein, dass die Vorteiler Register falsch gesetzt werden?
Ein beliebter Fehler ist z.B. diese um eins zu groß oder zu klein zu 
setzen.

Vielleicht kannst Du mit einem Oszi beide Sender übereinanderlegen, dann 
siehst Du ob es wirklich solche Bitbreiten Unterschiede gibt.

Autor: Der Grosse (jonnyk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja ich bin mir sicher dass es Bitbreiten unterschiede gibt.
Der Alte MC hat eine total kommische baudrate wie z.b. 33333. ich muss 
jetzt gucken vieleicht kriege ich es auch noch hin.

werde mich dann melden.

Danke noch mal

Autor: 6632 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Solange man nicht mit einem PC arbeitet ist noch nichts verloren. Dann 
muss man sich nicht unbedingt an die standard Baudraten halten, sondern 
kann auch 12345 Baud machen, sofern die Teiler auf beiden Seiten diesen 
Wert hinreichend genau hinbekommen. Ich kann mir nicht vorstellen dass 
der 8MHz Quarz nichts ist. Ein Quarz is immer sehr viel stabiler als 
alles andere zusammen.

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Laß Dich nicht kleinkriegen, Großer! ;-))

MfG Paul

Autor: Andreas B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum lässt Du den anderen Proc nicht mit 8 oder 16Mhz statt mit 14,7Mhz 
laufen. Sinn der ganzen Geschichte ist doch, dass die Kommunikation 
zwischen den beiden Procs synchron läuft.
Dann sind es halt 8820 Baud statt 9600 bei gleichem Teiler.

Gruss
Andy

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Andreas B. (Gast)

>Warum lässt Du den anderen Proc nicht mit 8 oder 16Mhz statt mit 14,7Mhz
>laufen. Sinn der ganzen Geschichte ist doch, dass die Kommunikation

Das ist doch schon ein Baudratenquarz. Der kann so ziemlich alle 
Standardbaudraten mit minimalem Fehler erzeugen. Und 8 MHz können auch 
viele Baudraten mit geringem Fehler erzeugen.

MFG
Falk

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.