UART doppelt verwenden

Gast #2107397
Lesenswert?

Hallo,

Ich habe ein GPS-Modul und einen FT232RL, die beide an einen UART eines 
ATmega32 oder ATmega644 angeschlossen werden sollen. Da nicht beides 
gleichzeitig verwendet werden muss, sollte das ja eigentlich gehen, 
indem durch Anschließen eines USB-Kabels der 3V3OUT-Eingang des FT232 
auf High geht, einen Interrupt am AVR auslöst und dieser dann den 
Enable-Eingang des GPS-Moduls ändert.
Funktioniert das so oder muss ich noch irgendwas beachten wie parasitäre 
Spannungsversorgung?

Vielen Dank!
Gast #2107434
Lesenswert?

Hallo,

ich weiß, dass der UART kein Bus ist und habe die Möglichkeiten mit 2 
UARTs natürlich auch überlegt und hätte sie angewandt, aber ich habe 
keine Pins mehr für einen Software-UART frei. Deshalb kam ich auf die 
Idee, die zwei Module einfach nur abwechselnd einzuschalten, da ich sie 
eh nicht gleichzeitig brauche. Ich möchte nicht auf einen größeren AVR 
umsteigen...

Meine Frage war eigentlich nur, ob das eine Teil das andere stören 
könnte, selbst wenn eines "abgeschaltet ist".

Vielen Dank!
#2107443
Lesenswert?

Wenn ich es richtig verstehe möchtest Du jeweils die TX bzw. RX vom 232 
und vom GPS zusammenschalten und an den RX bzw. TX vom ATmega 
anschließen?

Ohne weiteres geht das leider nicht, da TX i.A. kein Open-Collector ist. 
D.h. wenn z.B. der GPS 0V liefert und der 232 5V gibts einen schönen 
Kurzschluss --> nicht gut ;-)
#2107467
Lesenswert?

Genau das wollte ich gerade vorschlagen ;-)

Ist ja im Grunde dann ein OR-Gatter; wenn Du sicher weißt dass nie beide 
gleichzeitig senden sollte das klappen. Wäre denke ich zumindest besser 
als ein Software-UART, gerade zum Empfangen sind die m.E. nicht so toll.

Und wegen der anderen Richtung: hat der GPS überhaupt einen RX?
#2107491
Lesenswert?

Kommt drauf an, wie das Enable realisiert ist. Falls dabei dem Chip 
(oder seinem UART) die Betriebsspannung abgeschaltet wird sollten die RX 
nicht mehr angesteuert werden. Je nach Eingangsbeschaltung könnten sie 
sonst niederohmig werden und damit Strom ziehen.

Wenn Du bei GPS und beim 232 Enable-Eingänge hast klär am besten im 
Datenblatt ab ob beim Disable die Eingänge noch angesteuert werden 
dürfen oder nicht.
#2107787
Lesenswert?

Wie gesagt, kommt drauf an wie das Disable realisiert wird. Wenn da ein 
Enable-Pin vorgesehen ist wird es sehr wahrscheinlich kein Problem geben 
(um ganz sicher zu gehen halt mal im Datenblatt nachlesen).



Wenn man aber dem ganzen Chip den Strom abdreht, kommt es drauf an wie 
die Eingangsschaltung aufgebaut ist ob das ok ist oder nicht. Z.B. bei 
den Multifunktions-Pins von µCn passieren u.U. unerwartete Effekte wenn 
dort Spannung anliegt und Vcc offen oder Masse ist. Oft steht da auch im 
Datenblatt, dass die Spannung am Eingang nicht (weit) über Vcc liegen 
darf.

Hatte das erst kürzlich bei einer Schaltung, wo ein Controller einen 
anderen per Relais abschaltet und beide per UART verbunden sind: 
Stromverbrauch der dauernd versorgten Schaltung stieg immer dann wenn 
der andere Teil abgeschaltet wurde um ca. 30mA an. Sobald der andere µC 
wieder eingeschaltet wurde, fiel der Verbrauch des anderen Teils wieder 
um 30mA -> stellte sich raus, dass der RX-Pin (ein GPIO) vom 
abgeschalteten Controller diesen Strom gezogen hat  :-/

Vermute dass der RX-GPIO niederohmig zur Masse wurde und damit der TX 
des anderen µC quasi kurzgeschlossen wurde. Und da TX im idle auf +5V 
liegt kam da soviel raus wie der Controller eben liefern kann...

Hab es allerdings nicht vollständig untersucht was da genau passiert 
ist, evtl hat jemand eine andere/genauere Erklärung für den Effekt?

In dem Fall war jedenfalls die einfache Lösung, dass der steuernde 
Controller seinen UART auch abschaltet sobald er den anderen µC 
ausschaltet.
Gast #2107961
Lesenswert?

Christian schrieb:
> ... Könnte man das Problem nicht mit
> zwei DIoden beheben?

Könnte klappen: Läuft unter 'Wired or'. Dioden jeweils von den Ausgängen 
zum (gemeinsamen) uC-Eingang mit Anode am Eingang, Pull-up vom Eingang 
an VCC.
Wenn du nicht zu schnell werden willst, und die beiden Datenquellen sich 
nicht in die Quere kommen können, sollte das klappen.
#2108317
Lesenswert?

Also ich würde zusehen, daß ich am ATmega noch ein paar Pins frei 
bekomme und würde dann den 644P einsetzen.

Sollte das wirklich nicht möglich sein, würde ich mir vermutlich einen 
zusätzlichen ATmega48 (o.Ä.) hernehmen und diesen an die UART hängen. 
Auf dem ATmega48 läuft jeweils eine Soft-UART zum GPS und eine zum 
FT232. Zwischen den beiden ATmegas würde ein Protokoll laufen, welches 
es ermöglicht Daten gezielt an eins der angeschlossenen Geräte zu 
schicken.
Ebenso eine eindeutige Identifizierung, von welchem Gerät die Daten 
kommen.


Gruß

Jobst

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren