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!
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.
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.
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.
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!
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 ;-)
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 :(
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?
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.
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 ?!
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.
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.
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.
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