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
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
93kbit sind nichtstandard. mit einem normalen Quarz wird da nichts. Die obige Baudratenformel sagt welche frequenzen gehen.
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
>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.
>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?
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
>... 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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.