Forum: Mikrocontroller und Digitale Elektronik UART doppelt verwenden


von Christian (Gast)


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!

von Lehrmann M. (ubimbo)


Lesenswert?

Christian schrieb:
> Ich habe ein GPS-Modul und einen FT232RL, die beide an einen UART eines
> ATmega32 oder ATmega644 angeschlossen werden sollen.

UART ist eine Schnittstelle und kein Bus. Darum gibt's keine zwei 
Module die da angeschlossen werden könnten. Dann nimm einen AVR mit 2 
UART Modulen.

von Thomas E. (thomase)


Lesenswert?

Christian schrieb:
> Ich habe ein GPS-Modul und einen FT232RL, die beide an einen UART eines
>
> ATmega32 oder ATmega644 angeschlossen werden sollen

Der 644P hat 2 USARTS.

mfg.

von hans (Gast)


Lesenswert?

Lehrmann Michael schrieb:
> Dann nimm einen AVR mit 2
> UART Modulen.

Oder Software-UART. Nicht besonders schwierig und für kleine Baudraten 
auch nicht besonders rechenintensiv auf dem AVR. Kann man problemlos in 
die Hauptschleife bzw. den Hauptinterrupt einbauen.

von Christian (Gast)


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!

von Mathias A. (mrdelphi)


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 ;-)

von Christian (Gast)


Lesenswert?

Ja, so wollte ich es zusammenschalten. Könnte man das Problem nicht mit 
zwei DIoden beheben? Ich hatte irgendwo ein öhnliches Problem gesehen, 
finde es aber nicht mehr :(

von Mathias A. (mrdelphi)


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?

von Christian (Gast)


Lesenswert?

Ja, hat er. Muss ich deswegen nochwas beachten?

Danke für die Hilfe!

von Mathias A. (mrdelphi)


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.

von Max (Gast)


Lesenswert?

Oder nimm so nen CMOS/TTL analogschalter (is billich und dann zu 100% 
hochohmig)...

von Kai S. (zigzeg)


Lesenswert?

Mathias A. schrieb:
> nicht mehr angesteuert werden. Je nach Eingangsbeschaltung könnten sie
> sonst niederohmig werden und damit Strom ziehen.

Das wurde ja auch passieren wenn ich nur das GPS Modul habe, per UART 
anbinde und dann disable. Klingt eigentlich eher unplausibel ?!

von Mathias A. (mrdelphi)


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.

von tretbootfahrer (Gast)


Lesenswert?

ich hatte ganz gute erfahrungen mit einem serial (bzw analog) 
multiplexer gemacht.
74HC4052 heisst das teil. hier ist mal ein schaltplan wo das ding 
verwendet wird:
http://www.sparkfun.com/datasheets/Sensors/HAS-v13.pdf
schöne grüsse
stefan

von Lehrmann M. (ubimbo)


Lesenswert?

Christian schrieb:
> Ja, so wollte ich es zusammenschalten. Könnte man das Problem nicht mit
> zwei DIoden beheben? Ich hatte irgendwo ein öhnliches Problem gesehen,
> finde es aber nicht mehr :(

Ich finde das einen sehr sehr 'dreckigen' Weg - das ist schon ziemlich 
heftig.

von G a s t (Gast)


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.

von Jobst M. (jobstens-de)


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

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
Noch kein Account? Hier anmelden.