-
-
Erfahrener Benutzer
Begeisterter Techniker
Rs 485 Treiber uns Mega 16 ?
Hi,
ich möchte folgenden Rs485 Baustein an meinen Atmega16 anschließen. Nun stell ich mir gerade die Frage an welche Pins vom Atmega der Treiber muss, oder ob das keine Rolle spielt.
Außerdem hat der Treiber RO / RE / DE / DI / VCC / A / B / GND
A und B sind ja für die Verbindung der 2 rs Treiber da, aber was mache ich mit RO RE DE DI ?
Treiber ist folgender:
http://www.reichelt.de/?;ACTION=7;LA...90c274c7648dbe
mfg blamaster
-
Erfahrener Benutzer
Robotik Einstein
Vielleicht mal ins Datenblatt schauen? Da stehen lauter tolle Sachen drin!
RO ist receiver output, der kommt sinnigerweise an einen RxD eines UARTs
DI ist driver input und gehört demnach an TxD.
RE ist receiver enable, DE ist driver enable, meistens einer davon in negativer Logik, um die beiden einfach zusammenschalten zu können. Letztlich kannst Du aber RE auf dauer-aktiv legen und DE mit einem beliebigen Portpin Deines AVR verbinden, denn den brauchst Du, um den Treiber abzuschalten, wenn jemand anders auf dem Bus sprechen soll.
-
Erfahrener Benutzer
Begeisterter Techniker
Ich möchte eigentlich nur erstmal testen ob ich überhaupt was zum laufen bekommen.
Master sagt Slave etwas, Slave gibt aber nichts zurück. Kann ich dann die RE DE vernachlässigen ?
mfg blamaster
-
Hi!
Vernachlässigen kannst du /RE und DE sicher nicht! Zum einfachsten Testen könntest du so vorgehen:
Empfänger: /RE und DE beide zusammen auf GND (RE ist Low-Aktiv), das aktiviert den Empfänger und Deaktiviert den Sender. An RO sollte dann das Signal des Senders anliegen.
Sender: /RE und DE beide zusammen auf Vcc, das bewirkt dann genau das gegenteil vom Empfänger (Sender an, Empfänger aus). An DI legst du dann deinen Pegel oder die Daten an.
Die beiden müssen dann halt noch mit zwei Kabeln (A und B) verbunden und mit den Abschlusswiderständen Rt versehen werden (Berechnung sollte im Datenblatt stehen). Masseleitung muss auch noch mit. Vcc sollte klar sein (Versorgungsspannung, am besten die gleiche wie dein ATMega)
MfG
Basti
-
Erfahrener Benutzer
Robotik Einstein
Genau so. Danke fürs Nachgucken, welche der Enableleitungen jetzt invertiert war, Basti
Am Empfänger bietet sich ein Abschluss mit drei Widerständen an, der für definierten Pegel am Ausgang sorgt (ich habe da seinerzeit 130 Ohm zwischen A und B und dann vom einen Anschluss 390 Ohm nach Vcc und vom anderen 390 Ohm nach Masse gesetzt, aber die Eingangsschwelle der aktuellen Receiver ist deutlich geringer, da reichen ein paar mV für saubere Verhältnisse, ergo 120 Ohm zwischen die Leitungen und 10k oder sowas nach Vcc resp. GND). Die Auswertung wird's einem mit nichtvorhandenen Rahmenfehlern danken, wenn der empfangende UART schon aktiv war, bevor das Kabel gesteckt wurde. In Software kann man da natürlich auch noch einiges an Sicherheit herausholen.
-
Erfahrener Benutzer
Begeisterter Techniker
Gut der code den ich für den Sender benutzen wollte ist folgender:
$regfile = "m128def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 20
$framesize = 40
$baud = 9600
Config Pinc.6 = Output
Config Pine.2 = Output
Config Graphlcd = 240 * 64 , Dataport = Portd , Controlport = Portc , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 6
Dim A As Byte
Bl Alias Portc.6
Rs485 Alias Porte.2
Bl = 1
Rs485 = 1
Cursor Off
Cls
Locate 1 , 1
Lcd "RS485 Sender"
A = 128
Do
Printbin A
Waitms 500
Loop
End
Damit ich sichergehe das ich das nun auch richtig verstanden habe. RO kommt an den RXD des Atmega, Dit an TXD.
Wenn ich das richtig sehe ist im code ja der pine.2 fürs an und abschalten zuständig richtig ?
Sprich kommt an pine2. jetzt Re und De beide zusammen dran ?
Sprich wenn der pin low ist wird empfangen und bei high gesendet richtig ?
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen