www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART auf 93,75KBits/s einstellen


Autor: Ed M. (edmu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo zusammen,
Ich habe einen RS485-Profibus an meinem AVR-ATMega162 an die UART0 über
einen MAX485 angeschlossen, um die Empfangsdaten zu lesen. Diese lese
ich über einen Interrupt für UART0 aus. Ich bekomme auch Daten in die 
UART0
rein, aber das sind nicht die Daten, die ich erwarte. Und zwar habe ich
ein Oszilloskop mit an der UART0 geschlossen und sehe jedes einzelne
Bit. Es ist das Token-Telegramm mit insgesamt 3 Bytes (0xDC,0xXX,0xXX).
Wieso bekomme ich nicht die richtigen Daten? Ich denke es liegt an der
initialisierung der UART0.
Meine Bausrate muss 93,75 KBaud sein.
Ich habe den UBRR auf 4 gestellt, ist dass soweit richtig? Wie kann ich
die UART denn auch auf 93,75 KBits/s stellen.

Danke im Vorraus

Autor: Hans Josef (hjm)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ed,

mit welcher Frequenz läuft der AT?

Die Werte für UBRR lassen sich ja nach Formel berechenen:

für Normalmode UBRR = (fosc/16/Baudrate)-1
für Doublespeed UBRR = (fosc/8/Baudrate)-1

Wie ich entnehme planst Du etwas Richtung Profibus, hast Du die 
Schnittstelle auch auf 8E1 eingestellt?

Übrigens für UART-Nutzung sind die graden Quarze 2, 4, 8, 16MHz nichts, 
gibt immer Fehler, waobei, abhängig von der Gegenseite dies meist bis 
ca. 0,5% nichts macht.

Wenn Du als Gegenseite einen PC nutzt, läßt der sich meist auch auf 
187,5Kbit oder 500Kbit hochstellen, was wieder eine normkonforme 
Baudrate ist

Grüße
Hans-Josef

Autor: 3357 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
93kbit sind nichtstandard. mit einem normalen Quarz wird da nichts. Die 
obige Baudratenformel sagt welche frequenzen gehen.

Autor: edmu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mein interner Takt ist 7,3 MHz, den ich aber bei dem ATMega162 
beeinflussen kann.

Die UART0 habe ich auch mit 1 STOP, 1 Paritätsbit Gerade, 8 Datenbits
initialisiert.

ich rechne mal mit der formel zurück und probiere es aus.

mfg ed

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Mein interner Takt ist 7,3 MHz, den ich aber bei dem ATMega162
>beeinflussen kann.

Interner Takt beim xx162 und genaue Baudrate?
Das geht nicht (gut)! Überschlägig gerechnet brauchst Du eine Vielfaches 
von 1,5MHz. 12MHz könnte gehen - höher wäre besser.

Autor: Jörg S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wieso bekomme ich nicht die richtigen Daten? Ich denke es liegt an der
>initialisierung der UART0.
Was bekommst du denn für Daten? Vielleicht einfach nur A und B 
vertauscht?

Autor: edmu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe jetzt den mega162 auf 7,5 MHz gestellt und jetzt funktioniert 
es.
ich kann bisher den token und die tokenanfrage abfragen. die daten gebe
ich über die uart1 (115200kbit/s) raus. klappt bisher prima, aber ich 
sollte trotzdem auf den internen takt verzichten und den von aussen 
beschalten.
vielen dank

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>... trotzdem auf den internen takt verzichten ...

Das hast Du ja nocheinmal die Kurve bekommen ;-)
Ich würde dennoch zu höherer Taktfrquenz raten, da bei 93kBd die Daten 
mit fast 10kHz eintreffen und auch schnell verarbeitet werden sollten. 
Langsamer bekommt man einen µC immer - schneller aber nicht.
Beim Profibus muß ja auch noch mehr geprüft werden, um im Verbund zu 
fúnktionieren.

Autor: edmu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich werde versuchen mit einem höheren takt zu arbeiten, aber nicht 
jetzt. ich muss erst einmal ordnung in mein programm bekommen und dann 
testen.

danke für die unterstützung
mfg ed

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.