Forum: Mikrocontroller und Digitale Elektronik RS485 mit Atmega128


von Klaus Heinrich (Gast)


Lesenswert?

Hallo, wie kann ich mit einem Atmega128 eine RS485-Schnittstelle
realisieren und damit dann Daten an Computer senden?

Vielen Dank für die Hilfe

von Christoph B. (christophbudelmann) Benutzerseite


Lesenswert?

Mit entsprechenden Treiber-Bausteinen, die an den UART angeschlossen
werden, z.B. SP491E, LTC491 oder SN75180.

von Christoph B. (christophbudelmann) Benutzerseite


Angehängte Dateien:

Lesenswert?

Im Anhang noch ein paar Infos zur RS485.

von inoffizieller WM-Rahul (Gast)


Lesenswert?

Der ATmega128 hat so um die 2 serielle Schnittstellen (USART auch
genannt). Die verbindet man mit einem RS485-Transceiver.
Mit einem weiteren Portpin wird dann dessen Sende-Baustein ein- und
ausgeschaltet (wahlweise auch der Empfnagsbaustein).
Man schaltet den Sender ein, schickt die Daten über die serielle
Schnittstelle raus, und schaltet den Sender wieder aus, wenn die Daten
komplett verschickt wurden (TXC-Interrupt).
Somit ist der Empfänger eigentlich immer eingeschaltet, und man kann
feststellen, ob auf dem Bus etwas los ist, um darauf zu warten, dass
man senden darf.
CAN-Transceiver sind dafür auch sehr gut geeignet.
Ich beziehe mich auf RS485-2wire, also die halbduplex Variante der
RS485. 4-Wire-RS485 ist trivial.

Für die PC-Seite gibt es entweder fertige Karten (AFAIK auch für USB).
Selbstbaulösungen kann man mit Hilfe des Hardware-Handshake erzeugen.

von Klaus Heinrich (Gast)


Lesenswert?

Hey Danke... für die Antworten...

und wie mach ich die Pin Belegung?

Der DI und RO ist klar... gehen beim Atmega128 auf Pin 2 und 3...

Doch wie verbinde ich die anderen?

von inoffizieller WM-Rahul (Gast)


Lesenswert?

/RE ist der Eingang, um den Empfänger feizuschalten.
OE ist der Eingang, um den Sender feizuschalten.
Die beiden kannst du "zusamenbinden" und an einen Portpin hängen. Zur
Sicherheit noch einen Pull-Down-Widerstand, damit der Transceiver
grundsätzlich auf Empfangen steht. Man kann auch den /RE-Pin konstant
auf Masse legen.

von Klaus Heinrich (Gast)


Lesenswert?

Also zum Beispiel beide auf int0 (Pin25 PD0)???

von inoffizieller WM-Rahul (Gast)


Lesenswert?

ja.

von crazy horse (Gast)


Lesenswert?

kannst du machen, wenn du den Pin als Ausgang betreibst.
Interruptfunktion brauchst du dafür natürlich nicht. Jeder andere I/O
geht dafür auch.

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.