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