Forum: Mikrocontroller und Digitale Elektronik RS-485 mit 2xAtMega32 und 1xAtXmega128A


von Daniel S. (daniel_s13)


Lesenswert?

Hallo,

So nun zu folgender Frage, der AtXMega128A wird mit 3.3V gespeist, ich 
hab zur Kommunikation den RS485CPA+ (Low-Power) Transciever.

Da RS-232 wohl zu Kommunikation zwischen 3 Microprozessoren ausscheidet, 
habe ich mir überlegt die hier noch Rumliegenden RS485CPA+ zu nutzen.

So, nun die Frage, wenn ich nun den Max485CPA+ mit 3.3V betreibe, die 
AtMega's32 jedoch mit +5V betriebe, kriege ich da bezüglich den Ports 
evtl. Probleme?

Der AtMega erkennt ja schon Low-Pegel als High, somit wäre Empfangen 
kein Problem, nur was passiert wenn ich versuche vom AtMega32 was zu 
senden? Der müsste dann ja eigtl. mit +5V in den Max 485 rein powern, 
der aber mit +3.3V betrieben wird.

Werden die Widerstände für den Ruhepegel (1K Leitung A auf VCC) (1K 
Leitung B auf GND) für jeden einzelnen RS-485 benötigt, wenn diese sich 
auf einer Platine mit der selbigen Versorgungsspannung liegen?

Danke :)

Daniel.

von Frank K. (fchk)


Lesenswert?

Wenn sich die drei Prozessoren auf einer einzigen Platine befinden, dann 
ist RS485 nicht nötig und sogar unnötig kompliziert.

Machs doch so: Der serielle Bus ist eine Eindrahtleitung, die einen 
Pullup nach 5V bekommt und mit Open-Collector Treibern getrieben wird.

Bei dem M32 verbindest Du RXD dirkt mit dem Bus, TXD schließt Du an das 
Gate eines HC125 an, desen IN auf 5V liegt. OUT geht dann auf den Bus.

Beim XMEGA nimmst Du zum Treiben des Busses einen mit 5V betriebenen 
HCT125, RXD kannst Du über ein 74LVC-Gatter einfach über einen 
Spannungsteiler an den Bus anschließen.

Da ein 74HCT125 vier Einzelgatter mit IN, GATE und OUT enthält, könntest 
Du das auch für alle TXDs nehmen.

Andere Möglichkeit: 3-fach UND-Gatter. Der Ruhezustand auf einer 
asynchronen seriellen Schnittstelle ist HI. Heißt also: Ein einziger 
Teilnehmer mit mit einem LO auf seinem TXD den Bus auf LO ziehen können, 
und genau das macht das UND-Gatter. Auch hierfür einen HCT-Typ nehmen, 
dann passt das mit den Pegeln schon. Vorteil gegenüber der 
Pullup-Lösung: die Anstiegszeit und Abfallzeiten sind gleich, da der Bus 
ja immer aktiv getrieben wird, und die Anstiegszeit wird kürzer sein.

Ich denke, das ist die einfachste Lösung.

Oder, wenn der XMega Master und die M32 Slaves sind: TXD des XMegas über 
ein HCT-Gatter an die RXDs der M32, und die TXDs der M32 über ein 
74LVC08 (3.3V VCC, 5V Tolerante Inputs) auf den RXD des XMegas. So kann 
der XMgea jedem M32 Befehle senden, die M32 können darauf hin ihre 
Antworten zurücksenden, abder die M32 können untereinander nicht 
kommunizieren.

fchk

von Daniel S. (daniel_s13)


Lesenswert?

Du meinst jetzt eine einfache UART Verbindung richtig?!
Wenn dann benutz ich für alle txd das Gatter :)

werd mich heut Mittag nochmal dran setzen, aber deine Lösung ist wohl 
aus dem pegelwandler Artikel oder? Da finde ich ja paar schaltpläne :)

Gruß Daniel

von Frank K. (fchk)


Lesenswert?

Wie gesagt:

5V->3.3V: 74LVC*, mit Vcc=3.3V betrieben
3.3V->5V: 74HCT*, mit Vcc=5V betrieben

fchk

von Daniel S. (daniel_s13)


Lesenswert?

Vielen dank dir auf jedenfall schonmal, hab mir nun mal die 74LVC und 
74HCT besorgt.

Du meinst schon eine UART Verbindung richtig? ;)

von Frank K. (fchk)


Lesenswert?

ja

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.