www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART doppelt verwenden


Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Mathias A. (mrdelphi)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :(

Autor: Mathias A. (mrdelphi)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, hat er. Muss ich deswegen nochwas beachten?

Danke für die Hilfe!

Autor: Mathias A. (mrdelphi)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Max (Gast)
Datum:

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

Autor: Kai S. (zigzeg)
Datum:

Bewertung
0 lesenswert
nicht 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 ?!

Autor: Mathias A. (mrdelphi)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: tretbootfahrer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: G a s t (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jobst M. (jobstens-de)
Datum:

Bewertung
0 lesenswert
nicht 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

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.