Hallo, wie kann ich mit einem Atmega128 eine RS485-Schnittstelle realisieren und damit dann Daten an Computer senden? Vielen Dank für die Hilfe
Mit entsprechenden Treiber-Bausteinen, die an den UART angeschlossen werden, z.B. SP491E, LTC491 oder SN75180.
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.
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?
/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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.