PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Rs 485 Treiber uns Mega 16 ?



Blamaster
15.01.2008, 15:20
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=6;OPEN=1;INDEX=0;FILENAME=A200%252FM AX485_MAX483_MAX490%2523MAX.pdf;SID=15gkuTYNS4AQ8A AH4bDu40bcb4521a92b637c6890c274c7648dbe

mfg blamaster

shaun
15.01.2008, 19:09
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.

Blamaster
15.01.2008, 19:43
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

BASTIUniversal
16.01.2008, 12:34
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

shaun
16.01.2008, 14:00
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.

Blamaster
16.01.2008, 15:05
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 ?