-         

Ergebnis 1 bis 6 von 6

Thema: Rs 485 Treiber uns Mega 16 ?

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    20.02.2007
    Beiträge
    341

    Rs 485 Treiber uns Mega 16 ?

    Anzeige

    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

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    17.04.2006
    Beiträge
    2.193
    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.

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    20.02.2007
    Beiträge
    341
    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

  4. #4
    Moderator Roboter Genie
    Registriert seit
    26.08.2004
    Beiträge
    1.228
    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

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    17.04.2006
    Beiträge
    2.193
    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.

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    20.02.2007
    Beiträge
    341
    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
  •