PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit UART beim AT90S2313?



jörn
03.03.2005, 13:32
Moin,

ich betreibe an einer seriellen Schnittstelle zwei Mikrocontroller mit 115200bps. Der eine ist ein ATmega8515, der andere ein AT90S2313. Beide besitzen den gleichen Quarz mit 3,6864 MHz. Wenn ich nun vom PC Daten sende, so kommen sie beim ATmega korrekt an, nicht aber beim 2313. Wodran kann das liegen? Auch wenn ich nur den AT90S2313 an der seriellen Schnittstelle betreibe, liefert dieser falsche Werte. Einen Programmfehler schließe ich aus, da er bei geringeren Frequenzen einwandfrei arbeitet.
Laut Datenblatt müßte er aber 115200bps schaffen!

Gruß,

jörn

bluebrother
03.03.2005, 13:59
hast du mal geschaut ob der 2313 mit der richtigen Geschwindigkeit sendet? Oder invertiert dein Pegelwandler evw. aus Versehen beim 2313? Wenn ich das richtig im Kopf habe sind auch die Werte für UBRR zwischen den beiden µCs unterschiedlich.

Gottfreak
03.03.2005, 21:47
Übertragungsprobleme, die erst bei höheren Frequenzen auftreten, können auch ein Hinweis auf zu lange oder nicht ausreichend abgeschirmte Leitungen sein.

Die Genauigkeit, mit der eine Baudrate erzeugt wird, ist auch wichtig für die Übertragungsqualität. Haben beide Quarze die gleichen Toleranzen?

Funktioniert eigentlich nur der Empfang beim 2313 nicht oder kann der auch nicht senden?

pebisoft
03.03.2005, 22:29
hallo, schau dir den quarz noch einmal genau am oszi an.
vielleicht ist die toleranz zu gross. oder du gehst beim senden eine etage tiefer. ich nehme ab diesen übertragungsraten wires-lan.
mfg pebisoft

jörn
03.03.2005, 22:34
Ich habe noch einmal lange herumprobiert und dabei festgestellt, dass es meistens geht, wenn nur der AT90S2313 angeschlossen ist. Schließt man den ATmega wieder dazu, so geht es wieder meistens nicht.
Das Senden hat eigentlich funktioniert.
Kann es sein, dass der ATmega dem 2313 irgendwie das Signal abgräbt oder so beeinflußt, dass dieser es nicht mehr vernünftig empfangen kann? Gibt es einen Möglichkeit, den Pin dann so zu sperren, als ob er praktisch nicht angeschlossen wäre, oder ist der Innenwiderstand beim Lesen und bei einem als Ausgang konfigurierten Pin gleich?

jörn

recycle
03.03.2005, 22:49
Ich habe noch einmal lange herumprobiert und dabei festgestellt, dass es meistens geht, wenn nur der AT90S2313 angeschlossen ist. Schließt man den ATmega wieder dazu, so geht es wieder meistens nicht.



Schliesst du die beiden Controller einfach parallel an den seriellen Anscchluss an oder wie meinst du das mit "schliesst man den anderen wieder dazu"?

jörn
03.03.2005, 22:58
ja, die liegen beide parallel an Ein- und Ausgang des MAX232. Da sie aber nicht senden, kann es zumindest da nicht zu einer Kollision kommen.

Jörn

bluebrother
04.03.2005, 09:12
hmm, das ist aber irgendwie nicht so toll -- bist du dir sicher dass der Max in der Lage ist beide TTL-Schnittstellen zu treiben?

jörn
04.03.2005, 10:28
Mittlerweile nicht mehr so richtig. Wie schließe ich denn mehrere Mikrocontroller an nur eine serielle Schnittstelle?

Gottfreak
04.03.2005, 11:36
ich nehme ab diesen übertragungsraten wires-lan.

Der Punkt interessiert mich. Hast du irgendwo eine Dokumentation zu einer WLAN-Implementierung für AVRs? Wie groß ist etwa der Aufwand dafür?


Mittlerweile nicht mehr so richtig. Wie schließe ich denn mehrere Mikrocontroller an nur eine serielle Schnittstelle?

Der Ausgang desMax232 kann mehrere mA liefern. Die Eingangswiderstände der AVRs sind ausreichend groß...
Der Pullup am Eingang sollte natürlich nur bei höchstens einem aktiviert sein(obwohl 2x 100kOhm eigentlich auch noch unkritisch sein sollten.). Wenn es bei höheren Frequenzen Probleme gibt, schau dir mal die Kapazitäten der Eingänge an.


Gibt es einen Möglichkeit, den Pin dann so zu sperren, als ob er praktisch nicht angeschlossen wäre, oder ist der Innenwiderstand beim Lesen und bei einem als Ausgang konfigurierten Pin gleich?

Nein, der Innenwiderstand ist alles andere als gleich: Wenn der Pin als Ausgang konfiguriert ist, ist der Innenwiderstand recht gering(schließlich kann der Ausgang bis zu 20mA liefern.). Zum Empfangen musst du die Pins sowieso als Eingang konfigurieren. Der Innenwiderstand ist dann im MOhm-Bereich(es sei denn, du hast den Pullup an, der hat ca. 100kOhm).